天天看點

Spark源碼分析 – SparkContext

這位寫的非常好, 讓我對spark的源碼分析, 變的輕松了許多 

這裡自己再梳理一遍

先看一個簡單的spark操作,

這是spark的入口, 任何需要使用spark的地方都需要先建立sparkcontext

在sparkcontext中, 最主要的初始化工作就是start taskscheduler和dagscheduler, 這兩個就是spark的核心所在

spark的設計非常的幹淨, 把整個dag抽象層從實際的task執行中剝離了出來 

dagscheduler, 負責解析spark指令, 生成stage, 形成dag, 最終劃分成tasks, 送出給taskscheduler, 他隻完成靜态分析 

taskscheduler, 專門負責task執行, 他隻負責資源管理, task配置設定, 執行情況的報告 

這樣的好處, 就是spark可以通過提供不同的taskscheduler簡單的支援各種資源排程和執行平台, 現在spark支援, local, standalone, mesos, yarn...

然後當然要載入被處理的資料, 最常用的textfile, 其實就是生成hadooprdd, 作為起始的rdd

這裡調用的filter transform很簡單, 可以參考前面的blog 

關鍵調用count action, action的不同在于, 會調用runjob 

是以在調用action之前, job都是沒有被真正執行的

關鍵在于調用了dagscheduler.runjob

繼續閱讀