原创 SparkCore — HashShuffle源碼分析

HashShuffle源碼分析   之前分析了兩種Shuffle的區別,現在我們通過源碼來進行分析,首先看HashShuffle,回顧之前流程,Executor在接收到LaunchTask的消息後,調用executor的laun

原创 SparkCore — SortShuffle源碼分析上

SortShuffle源碼分析上   在上一篇博客中,我們從源碼的角度分析了HashShuffle的兩種機制的區別,對應之前的理論分析,現在我們分析SortShuffle的兩種機制的區別。   同理我們首先看SortShuff

原创 SparkCore — stage劃分算法源碼分析

DAGscheduler中的stage劃分源碼分析   在之前的文章中,已經分析了stage的劃分算法,這裏我們到源碼裏面去看劃分算法是怎麼實現的。   首先找到提交Job的入口(從action操作開始,找到action操作的ru

原创 SparkCore — Task分配算法

Task分配算法   接着上一篇的Task最佳位置,我們分析了submitMissingTasks()方法,其中裏面比較重要的:一個是task的最佳位置計算,另一個就是提交TaskSet給TaskScheduler。下面分析提交

原创 SparkCore — BlockManager讀取數據

BlockManager的讀取數據操作   BlockManager讀取數據分爲從本地讀取和從遠程節點上拉取,我們這裏分別分析一下這兩種方式。首先分析從本地拉取數據的方法doGetLocal(),在進行分析這個方法之前,我們先看

原创 SparkCore — Shuffle操作

Spark的shuffle操作   Spark的shuffle操作分爲HashShuffle和SortShuffle,兩種shuffle(還有一種tungsten-sort shuffle,這個沒有研究過)。其中在Spark1.

原创 SparkStreaming — 數據接收BlockGenerator源碼分析

數據接收源碼分析   上一篇博客中分析到,Receiver數據接收主要是通過BlockGenerator來進行接收和存儲的,下面我們就源碼來對照之前的流程進行分析。   首先是創建BlockGenerator的時候初始化的一些

原创 SparkCore — BlockManagerMaster信息註冊

BlockManagerMaster   上一篇博客簡單講解了BlockManager的運行機制,BlockManager在創建的時候首先會向BlockManagerMaster進行註冊,下面我們來看源碼中,在BlockMana

原创 SparkCore —Task運行狀態StatusUpdate消息

Task運行狀態管理   TaskRunner.run()線程在執行的時候,會對Task運行狀態進行管理,在Task開始啓動的時候,會產生一個StatusUpdate事件,它的功能主要是將Task的狀態設置爲RUNNING;當T

原创 Spark — stage劃分算法原理分析,加上圖形展示,詳細的說明了stage的劃分

DAGScheduler的stage分配算法原理分析 爲了直觀的描述DAGScheduler的劃分算法,我們使用上一篇分析Job觸發原理的wordcount程序示例來進行分析,具體代碼請看上一篇博客:Spark源碼分析之 — Job觸發流