原创 SparkStreaming案例:NetworkWordCount--ReceiverSupervisorImpl.onStart()如何將Reciver數據寫到BlockManager中

上文提到“ReceiverInputDstream的Receiver是如何被放到Executor上執行的”關鍵代碼ReceiverSupervisorImpl的start方法。 val startReceiverFunc: Iterato

原创 SparkStream例子HdfsWordCount--從Dstream到RDD全過程解析

上一篇SparkStream例子HdfsWordCount--InputDStream及OutputDstream是如何進入DStreamGraph中:分析了InputDstream及OutputDstream如何進入DStreamGra

原创 SparkStream源碼分析:JobScheduler的JobStarted、JobCompleted是怎麼被調用的

一,從StreamingContext.start()進入 ===>在SparkContext有一個JobScheduler成員會被初始化,JobScheduler會被StreamingContext.start()被調用 priva

原创 SparkStream例子HdfsWordCount--InputDStream及OutputDstream是如何進入DStreamGraph中

先分析一下Dstream的子類: A,從上圖可以發現子類InputDstream都是屬於數據源Dstream;InputDStream分成兩個類型,一種是ReceiverInputDstream,一種不需要實現ReceiverInpu

原创 spark-core_08: $SPARK_HOME/sbin/slaves.sh、start-slave.sh腳本分析

承接上面“spark-core_07: $SPARK_HOME/sbin/start-slaves.sh腳本分析”一、這是$SPARK_HOME/sbin/slaves.sh腳本;#!/usr/bin/envbash #Run a she

原创 SparkStreaming案例:NetworkWordCount--ReceiverInputDstream的Receiver是如何被放到Executor上執行的?

1, 還是從案例開始順藤摸瓜object NetworkWordCount {   def main(args: Array[String]) {     if (args.length < 2) {       System.err.p

原创 spark-core_09: org.apache.spark.deploy.master.Master源碼解析1

1,先是start-all.sh調用start-master.sh(查看spark-core_05:$SPARK_HOME/sbin/start-all.sh、start-master.sh腳本分析)。而start-master.sh 使

原创 SparkStreaming案例:NetworkWordCount--ReceiverSupervisorImpl中的startReceiver(),Receiver如何將數據store到RDD

接着上文“ReceiverSupervisorImpl.onStart()如何得到Reciver的數據寫到spark的BlockManager中”往下分析startReceiver()方法1,supervisor.start()該方法是啓

原创 spark-core_18:Akka分佈式通信案例

Scala認爲Java線程通過共享數據以及通過鎖來維護共享數據的一致性是糟糕的做法,容易引起鎖的爭用,而且線程的上下文切換會帶來不少開銷,降低併發程序的性能,甚至會引入死鎖的問題。Akka是Actor編程模型的高級類庫,類似於JDK 1.

原创 spark-core_20: MapOutputTrackerMaster、MapOutputTracker、MapOutputTrackerMasterEndpoint等源碼分析

1,在SparkEnv.create()初始化了MapOutputTrackerMaster(記錄ShuffleMapTask輸出信息)val mapOutputTracker = if (isDriver) {  /* MapOutpu

原创 spark-core_11:org.apache.spark.deploy.master.Master源碼解析3--MasterWebUI(MasterRpcEndPoint,8080)初始化web

承接上文分析一下newMasterWebUI(MasterRpcEndPoint,8080):它的主要作用就是將每個頁面的html以scala.xml.Node的形勢封裝放在serlvet中,然後再將servlet放到servletCon

原创 spark-core_25:Master通知Worker啓動CoarseGrainedExecutorBackend進程及初始化源碼分析

承接上文(spark-core_24:AppClient的ClientEndpoint註冊RegisterApplication)上文中提到:master調用launchExecutor(){worker.endpoint.send(La

原创 spark-core_21: SortShuffleManager的初始化源碼分析

1,SparkEnv初始過時,通過反射的方式默認將SortShuffleManager實例化出來// Let the userspecify short names for shuffle managers//使用sort shuffle

原创 SparkStreaming案例:NetworkWordCount--spark如何使用ListenerBus實現類似js監聽事件效果

1, 還是從案例開始順藤摸瓜object NetworkWordCount {   def main(args: Array[String]) {     if (args.length < 2) {       System.err.p

原创 spark-core_03: org.apache.spark.launcher.Main源碼分析

承接上文“spark-core_02: spark-submit、spark-class腳本分析“launcher.Main主要作用是就是檢測,注入spark-submit參數到spark環境中,然後返回SparkSubmit需要執行的參