Spark運(yùn)行機(jī)制與原理詳解目錄

https://github.com/JerryLead/SparkInternals

Spark Internals

Spark Version: 1.0.2
Doc Version: 1.0.2.0

Authors

Weibo Id Name
@JerryLead Lijie Xu

Introduction

本文主要討論 Apache Spark 的設(shè)計與實現(xiàn)商乎,重點(diǎn)關(guān)注其設(shè)計思想央拖、運(yùn)行原理、實現(xiàn)架構(gòu)及性能調(diào)優(yōu),附帶討論與 Hadoop MapReduce 在設(shè)計與實現(xiàn)上的區(qū)別鲜戒。不喜歡將該文檔稱之為“源碼分析”专控,因為本文的主要目的不是去解讀實現(xiàn)代碼,而是盡量有邏輯地,從設(shè)計與實現(xiàn)原理的角度,來理解 job 從產(chǎn)生到執(zhí)行完成的整個過程塞赂,進(jìn)而去理解整個系統(tǒng)于未。

討論系統(tǒng)的設(shè)計與實現(xiàn)有很多方法,本文選擇 問題驅(qū)動 的方式,一開始引入問題,然后分問題逐步深入。從一個典型的 job 例子入手辩越,逐漸討論 job 生成及執(zhí)行過程中所需要的系統(tǒng)功能支持,然后有選擇地深入討論一些功能模塊的設(shè)計原理與實現(xiàn)方式信粮。也許這樣的方式比一開始就分模塊討論更有主線黔攒。

本文檔面向的是希望對 Spark 設(shè)計與實現(xiàn)機(jī)制,以及大數(shù)據(jù)分布式處理框架深入了解的 Geeks强缘。

因為 Spark 社區(qū)很活躍督惰,更新速度很快,本文檔也會盡量保持同步旅掂,文檔號的命名與 Spark 版本一致赏胚,只是多了一位,最后一位表示文檔的版本號商虐。

由于技術(shù)水平觉阅、實驗條件、經(jīng)驗等限制秘车,當(dāng)前只討論 Spark core standalone 版本中的核心功能典勇,而不是全部功能。誠邀各位小伙伴們加入進(jìn)來叮趴,豐富和完善文檔割笙。

關(guān)于學(xué)術(shù)方面的一些討論可以參閱相關(guān)的論文以及 Matei 的博士論文,也可以看看我之前寫的這篇 blog眯亦。

好久沒有寫這么完整的文檔了咳蔚,上次寫還是三年前在學(xué) Ng 的 ML 課程的時候,當(dāng)年好有激情啊搔驼。這次的撰寫花了 20+ days,從暑假寫到現(xiàn)在侈询,大部分時間花在 debug舌涨、畫圖和琢磨怎么寫上,希望文檔能對大家和自己都有所幫助。

Contents

本文檔首先討論 job 如何生成囊嘉,然后討論怎么執(zhí)行温技,最后討論系統(tǒng)相關(guān)的功能特性。具體內(nèi)容如下:

  1. Overview 總體介紹
    Spark詳解01概覽|Spark部署|執(zhí)行原理
  2. Job logical plan 介紹 job 的邏輯執(zhí)行圖(數(shù)據(jù)依賴圖)
    Spark詳解02Job 邏輯執(zhí)行圖
  3. Job physical plan 介紹 job 的物理執(zhí)行圖
    Spark詳解03Job 物理執(zhí)行圖
  4. Shuffle details 介紹 shuffle 過程
    Spark詳解04Shuffle 過程
  5. Architecture 介紹系統(tǒng)模塊如何協(xié)調(diào)完成整個 job 的執(zhí)行
    Spark詳解05架構(gòu)Architecture
  6. Cache and Checkpoint 介紹 cache 和 checkpoint 功能
    Spark詳解06容錯機(jī)制Cache 和 Checkpoint
  7. Broadcast 介紹 broadcast 功能
    Spark詳解07廣播變量Broadcast
  8. Job Scheduling 尚未撰寫
  9. Fault-tolerance 尚未撰寫

可以直接點(diǎn) md 文件查看扭粱。

喜歡看 pdf 版本的可以去 這里 下載舵鳞。

如果使用 Mac OS X 的話,推薦下載 MacDown 后使用 github 主題去閱讀這些文檔琢蛤。

Examples

寫文檔期間為了 debug 系統(tǒng)蜓堕,自己設(shè)計了一些 examples,放在了 SparkLearning/src/internals 下博其。

Acknowledgement

文檔寫作過程中套才,遇到過一些細(xì)節(jié)問題,感謝下列同學(xué)給予的解答慕淡、討論和幫助:

  • @Andrew-Xia 參與討論了 BlockManager 的實現(xiàn)與 broadcast(rdd) 會出現(xiàn)的情況背伴。

  • @CrazyJVM 參與討論了 BlockManager 的實現(xiàn)。

  • @王聯(lián)輝 參與討論了 BlockManager 的實現(xiàn)峰髓。

感謝下列同學(xué)對文檔內(nèi)容的補(bǔ)充:

Weibo Id 章節(jié) 補(bǔ)充內(nèi)容 修改狀態(tài)
@OopsOutOfMemory Overview workers 與 executors 的關(guān)系及 Spark Executor Driver資源調(diào)度小結(jié) 由于這部分內(nèi)容的相關(guān)實現(xiàn)還在不斷 update傻寂,本文暫不作結(jié)論性總結(jié),已添加詳情鏈接到該同學(xué)的 blog

感謝下列同學(xué)指出文檔中的不足或錯誤:

Weibo Id 章節(jié) 不足或錯誤 修改狀態(tài)
@Joshuawangzj Overview 多個 application 運(yùn)行時 worker 應(yīng)該會啟動多個 Backend 進(jìn)程 已修改携兵,但需要進(jìn)一步實驗證實疾掰。怎么控制 Backend 的個數(shù)還不清楚
@_cs_cm Overview 最新的 groupByKey() 已經(jīng)取消蘊(yùn)含的 mapValues() 操作,沒有MapValuesRDD 產(chǎn)生了 已修改 groupByKey() 相關(guān)的 figures 和描述
@染染生起 JobLogicalPlan FullDepedency 中的 N:N 關(guān)系是否屬于 NarrowDependency 將原來的兩種 NarrowDependency 描述改為更清楚的三種眉孩,已做更詳細(xì)的說明
@zzl0 前四章 很多 typos个绍,比如 “groupByKey 產(chǎn)生了后面三個 RDD”,應(yīng)該是兩個浪汪。詳見 pull request巴柿。 已經(jīng)全部修改
@左手牽右手TEL Cache 和 Broadcast 兩章 很多 typos 已經(jīng)全部修改
@cloud-fan JobLogicalPlan Cogroup() 圖中的某些剪頭應(yīng)該是紅色的 已經(jīng)全部修改
@CrazyJvm Shuffle details 從 Spark1.1開始spark.shuffle.file.buffer.kb的默認(rèn)值為32k,而不是100k 已經(jīng)全部修改

特別感謝 @明風(fēng)Andy 同學(xué)給予的大力支持死遭。

Special thanks to the rockers (including researchers, developers and users) who participate in the design, implementation and discussion of big data systems.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末广恢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呀潭,更是在濱河造成了極大的恐慌钉迷,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钠署,死亡現(xiàn)場離奇詭異糠聪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谐鼎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門舰蟆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事身害∥肚模” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵塌鸯,是天一觀的道長侍瑟。 經(jīng)常有香客問我,道長丙猬,這世上最難降的妖魔是什么涨颜? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮淮悼,結(jié)果婚禮上咐低,老公的妹妹穿的比我還像新娘。我一直安慰自己袜腥,他們只是感情好见擦,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著羹令,像睡著了一般鲤屡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上福侈,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天酒来,我揣著相機(jī)與錄音,去河邊找鬼肪凛。 笑死堰汉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的伟墙。 我是一名探鬼主播翘鸭,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼戳葵!你這毒婦竟也來了就乓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拱烁,失蹤者是張志新(化名)和其女友劉穎生蚁,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戏自,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邦投,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了擅笔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尼摹。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡见芹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蠢涝,到底是詐尸還是另有隱情,我是刑警寧澤阅懦,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布和二,位于F島的核電站,受9級特大地震影響耳胎,放射性物質(zhì)發(fā)生泄漏惯吕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一怕午、第九天 我趴在偏房一處隱蔽的房頂上張望废登。 院中可真熱鬧,春花似錦郁惜、人聲如沸堡距。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羽戒。三九已至,卻和暖如春虎韵,著一層夾襖步出監(jiān)牢的瞬間易稠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工包蓝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驶社,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓测萎,卻偏偏與公主長得像亡电,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绳泉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容