原创 Spark編程入口 — SparkContext及其初始化
在之前我們分析了Spark的內核架構運行機制,其中有一個很重要的組件SparkContext,這裏我們就分析SparkContext的相關源碼。 我們知道所有的Spark程序,在運行之前都需要創建一個非常重要的組件,那就是SparkCon
原创 SparkCore — Master資源調度機制 schedule()分析
Driver向Master進行Application註冊的時候,Master註冊完之後,會調用schedule()方法,進行資源調度。下面我們對schedule()源碼進行分析,schedule()源碼如下: private def
原创 SparkCore — Executor註冊
Executor註冊 註冊的機制流程如下,CoarseGrainedExecutorBackend進程啓動之後,會立即向Driver發送消息註冊RegisterExecutor消息,Driver註冊成功之後,會返回Regis
原创 SparkCore — Master資源調度,啓動Executor
上一篇文章講解了Master的資源調度算法,對每個可用worker分配完資源之後,下面就需要在每個worker上啓動相應的executor了,下面對源碼進行分析: // 給每個worker分配完資源給application之後
原创 Spark編程入口 — AppClient接收Master註冊信息補充
在之前SparkContext初始化流程圖最後,AppClient通過ClientEndPoint發送註冊消息給Master,Master在接收到消息之後,首先調用registerApplication,提取Application的相關信
原创 SparkStreaming — 數據接收原理
SparkStreaming的數據接收原理 Spark Streaming數據接收主要是發生在Receiver啓動之後,啓動的一個組件BlockGenerator,通過這個組件來進行數據的接收和存儲。具體的流程如下:
原创 Spark Streaming — StreamingCongtext初始化及Receiver啓動
StreamingContext初始化 StreamingContext在初始化的時候,會創建兩個重要的組件DStreamGraph和JobScheduler,如下所示: // 這裏初始化的一個重要的組件DStreamG
原创 SparkCore — ShuffleReader過程
Shuffle Reader 在之前的博客中,分析了shuffle map端的操作,map最終會將輸出文件信息封裝爲一個MapStatus發送給Driver,然後ResultTask或ShuffleMapTask在拉取數據的
原创 SparkCore — Task執行源碼分析之TaskRunner.run()
Task原理與源碼分析 在Executor註冊完成之後,接收到Driver發送的LaunchTask消息之後,會調用executor執行句柄的launchTask()方法,裏面封裝了TaskRunner線程,然後將其放入線程
原创 SparkCore — Task執行源碼分析之Task.run()源碼分析
Task.run()源碼分析 上一篇博客分析了TaskRunner.run()源碼,它裏面有兩個比較重要的方法一個是Task.run() — task的執行,還有就是task執行結束後將執行結果發送給Driver的Statu
原创 SparkCore — SortShuffle源碼分析下
SortShuffle 源碼分析下 接着上一篇博客,我們分析到了maybeSpill()它會分析是否需要進行溢寫到磁盤操作,假如需要溢寫那麼會調用 spill()方法,這個方法是在Spillable中定義的,它是一個trai
原创 Scala閉包和Java閉包
Scala 閉包 函數在變量不處於其有效作用域時,還能對變量進行訪問。下面舉例說明: // 定義函數,它的返回值是一個匿名函數 def getFunc(msg : String) = (name : String) => p
原创 SparkCore — Executor底層數據管理組件BlockManager
BlockManager的運行過程 爲了方便的講解運行過程,如下圖所示: 上圖中將BlockManager運行過程中比較重要的組件畫出來了,其中每個BlockManager中有比較重要的四個組件,DiskStore負責
原创 SparkCore — Task最佳位置
Task最佳位置 上一篇博客中stage劃分完之後,就對stage進行提交,使用的是submitMissingTasks()這個方法對每個stage創建一個TaskSet,然後將其提交到對應的worker的executor上運
原创 SparkCore — Master主備切換
Master實際上是可以配置兩個的,Standalone模式下也支持主備切換,也就是說當Active Master節點掛掉的時候,standby Master就會切換爲Active Master。 Spark Master主備切換一般常用