《Apache Spark 設計與實現(xiàn)》
本文主要討論 Apache Spark 的設計與實現(xiàn),重點關(guān)注其設計思想、運行原理、實現(xiàn)架構(gòu)及性能調(diào)優(yōu),附帶討論與 Hadoop MapReduce 在設計與實現(xiàn)上的區(qū)別。不喜歡將該文檔稱之為“源碼分析”,因為本文的主要目的不是去解讀實現(xiàn)代碼,而是盡量有邏輯地,從設計與實現(xiàn)原理的角度,來理解 job 從產(chǎn)生到執(zhí)行完成的整個過程,進而去理解整個系統(tǒng)。
討論系統(tǒng)的設計與實現(xiàn)有很多方法,本文選擇 問題驅(qū)動 的方式,一開始引入問題,然后分問題逐步深入。從一個典型的 job 例子入手,逐漸討論 job 生成及執(zhí)行過程中所需要的系統(tǒng)功能支持,然后有選擇地深入討論一些功能模塊的設計原理與實現(xiàn)方式。也許這樣的方式比一開始就分模塊討論更有主線。
本文檔面向的是希望對 Spark 設計與實現(xiàn)機制,以及大數(shù)據(jù)分布式處理框架深入了解的 Geeks。
因為 Spark 社區(qū)很活躍,更新速度很快,本文檔也會盡量保持同步,文檔號的命名與 Spark 版本一致,只是多了一位,最后一位表示文檔的版本號。
由于技術(shù)水平、實驗條件、經(jīng)驗等限制,當前只討論 Spark core standalone 版本中的核心功能,而不是全部功能。誠邀各位小伙伴們加入進來,豐富和完善文檔。
關(guān)于學術(shù)方面的一些討論可以參閱相關(guān)的論文以及 Matei 的博士論文,也可以看看我之前寫的這篇 blog。
好久沒有寫這么完整的文檔了,上次寫還是三年前在學 Ng 的 ML 課程的時候,當年好有激情啊。這次的撰寫花了 20+ days,從暑假寫到現(xiàn)在,大部分時間花在 debug、畫圖和琢磨怎么寫上,希望文檔能對大家和自己都有所幫助。
內(nèi)容
本文檔首先討論 job 如何生成,然后討論怎么執(zhí)行,最后討論系統(tǒng)相關(guān)的功能特性。具體內(nèi)容如下:
Overview 總體介紹
Job logical plan 介紹 job 的邏輯執(zhí)行圖(數(shù)據(jù)依賴圖)
Job physical plan 介紹 job 的物理執(zhí)行圖
Shuffle details 介紹 shuffle 過程
Architecture 介紹系統(tǒng)模塊如何協(xié)調(diào)完成整個 job 的執(zhí)行
Cache and Checkpoint 介紹 cache 和 checkpoint 功能
Broadcast 介紹 broadcast 功能
Job Scheduling 尚未撰寫
Fault-tolerance 尚未撰寫
可以直接點 md 文件查看。
喜歡看 pdf 版本的可以去 這里 下載。
如果使用 Mac OS X 的話,推薦下載 MacDown 后使用 github 主題去閱讀這些文檔。
示例
寫文檔期間為了 debug 系統(tǒng),自己設計了一些 examples,放在了 SparkLearning/src/internals 下。
