羣主王知無 大數據技術與架構 架構
Spark發展至今,應該說已經很是成熟了。是大數據計算領域不得不學習的框架。尤爲是Spark在穩定性和社區發展的成熟度方面,吊打其餘的大數據處理框架。框架
Spark至今只經歷過1.x、2.x和3.x三個大版本的變化,在覈心實現上,咱們在Github能看到的最先的實現是0.5版本,這個版本只有1萬多行代碼,就把Spark的核心功能實現了。機器學習
固然咱們不可能從這麼古老的版本看,假如你接觸過Spark,如今準備看源碼,那麼我建議從2.x版本中選取一個,最好是2.3或者2.4。可是通過如此多的迭代,Spark的代碼量已經暴增了幾倍。因此你須要抓住重點,本文就是想跟你們說說,咱們該怎麼看,看哪些東西。分佈式
首先假如你是第一次接觸Spark,那麼你須要對Spark的設計思想有所瞭解,知道Spark用了哪些抽象,Spark在提出RDD的時候是基於什麼樣的考慮。ide
在這裏給你們推薦幾篇論文以下:學習
第一篇: 大數據
這個很少說,直接給出一個連接,這篇文章不長,很快能看完。.net
第二篇:設計
連接以下:https://blog.csdn.net/weixin_44024821/article/details/89948115code
Spark的源碼環境搭建網上有不少資源,主要是環境依賴好比JDK、Scala、Maven等,整個過程大概耗時要1-4個小時,主要是編譯源碼費時。你們能夠在網上任意找一篇文章搭建起來環境就能夠。 直到你在編譯時出現下圖就大功告成了。(我的不建議使用sbt的方式編譯,推薦Maven)
上圖是一個最簡單的Spark任務的執行圖。
在覈心設計篇,咱們最重要的模塊列表以下:
SparkContext SparkEnv SparkConf RpcEnv SparkStatusTracker SecurityManager SparkUI MetricsSystem TaskScheduler
SerializerManager BroadcastManager ShuffleManager MemoryManager NettyBlockTransferService BlockManagerMaster BlockManager CacheManager
MemoryManager MemoryPool ExecutionMemoryPool StorageMemoryPool MemoryStore UnifiedMemoryManager
LiveListenerBus MapOutputTracker DAGScheduler TaskScheduler ExecutorAllocationManager OutputCommitCoordinator ContextClearner
LocalSparkCluster Standalone Mater/Executor/Worker的容錯 Spark Streaming StreamingContext Receiver Dstream 窗口操做
Catalog TreeNode 詞法解析器Parser RuleExecutor Analyzer與Optimizer HiveSQL相關
假如你對圖計算Spark GraphX和機器學習Spark MLlib感興趣,能夠單獨看看。
整個跟實時計算相關的包和類大部分都已經包含在上述目錄中了。假如你在使用的過程當中出現了問題,就須要針對其中的具體部門去看。
源碼閱讀是咱們每個開發者都須要經歷的階段,閱讀源碼的好處就不說了。你我都懂。