Spark源碼閱讀的正確打開方式

Spark源碼閱讀的正確打開方式

羣主王知無 大數據技術與架構 架構

Spark發展至今,應該說已經很是成熟了。是大數據計算領域不得不學習的框架。尤爲是Spark在穩定性和社區發展的成熟度方面,吊打其餘的大數據處理框架。框架

Spark至今只經歷過1.x、2.x和3.x三個大版本的變化,在覈心實現上,咱們在Github能看到的最先的實現是0.5版本,這個版本只有1萬多行代碼,就把Spark的核心功能實現了。機器學習

Spark源碼閱讀的正確打開方式

固然咱們不可能從這麼古老的版本看,假如你接觸過Spark,如今準備看源碼,那麼我建議從2.x版本中選取一個,最好是2.3或者2.4。可是通過如此多的迭代,Spark的代碼量已經暴增了幾倍。因此你須要抓住重點,本文就是想跟你們說說,咱們該怎麼看,看哪些東西。分佈式

基礎概念篇

首先假如你是第一次接觸Spark,那麼你須要對Spark的設計思想有所瞭解,知道Spark用了哪些抽象,Spark在提出RDD的時候是基於什麼樣的考慮。ide

在這裏給你們推薦幾篇論文以下:學習

第一篇: 大數據

這個很少說,直接給出一個連接,這篇文章不長,很快能看完。.net

第二篇:設計

  • 大型集羣上的快速和通用數據處理架構
    這篇論文長達170多頁,固然咱們沒有必要看完,我在網上找到一個總結,咱們在《彈性分佈式數據集:一種爲內存化集羣計算設計的容錯抽象》這篇論文基礎上看起來也會輕鬆很多。

連接以下:https://blog.csdn.net/weixin_44024821/article/details/89948115code

環境準備

Spark的源碼環境搭建網上有不少資源,主要是環境依賴好比JDK、Scala、Maven等,整個過程大概耗時要1-4個小時,主要是編譯源碼費時。你們能夠在網上任意找一篇文章搭建起來環境就能夠。 直到你在編譯時出現下圖就大功告成了。(我的不建議使用sbt的方式編譯,推薦Maven)

Spark源碼閱讀的正確打開方式

Spark核心設計篇

Spark源碼閱讀的正確打開方式

上圖是一個最簡單的Spark任務的執行圖。

在覈心設計篇,咱們最重要的模塊列表以下:

Spark的初始化

SparkContext SparkEnv SparkConf RpcEnv SparkStatusTracker SecurityManager SparkUI MetricsSystem TaskScheduler

Spark的存儲體系

SerializerManager BroadcastManager ShuffleManager MemoryManager NettyBlockTransferService BlockManagerMaster BlockManager CacheManager

Spark的內存管理

MemoryManager MemoryPool ExecutionMemoryPool StorageMemoryPool MemoryStore UnifiedMemoryManager

Spark的運算體系

LiveListenerBus MapOutputTracker DAGScheduler TaskScheduler ExecutorAllocationManager OutputCommitCoordinator ContextClearner

Spark的部署模式

LocalSparkCluster Standalone Mater/Executor/Worker的容錯

Spark Streaming

StreamingContext Receiver Dstream 窗口操做

Spark SQL

Catalog TreeNode 詞法解析器Parser RuleExecutor Analyzer與Optimizer HiveSQL相關

其餘

假如你對圖計算Spark GraphX和機器學習Spark MLlib感興趣,能夠單獨看看。

整個跟實時計算相關的包和類大部分都已經包含在上述目錄中了。假如你在使用的過程當中出現了問題,就須要針對其中的具體部門去看。

源碼閱讀是咱們每個開發者都須要經歷的階段,閱讀源碼的好處就不說了。你我都懂。

相關文章
相關標籤/搜索