Spark Internals

jopen 10年前發布 | 21K 次閱讀 Spark 分布式/云計算/大數據

Introduction

本文主要討論 Apache Spark 的設計與實現,重點關注其設計思想、運行原理、實現架構及性能調優,附帶討論與 Hadoop MapReduce 在設計與實現上的區別。不喜歡將該文檔稱之為“源碼分析”,因為本文的主要目的不是去解讀實現代碼,而是盡量有邏輯地,從設計與實現原理的角度,來理解 job 從產生到執行完成的整個過程,進而去理解整個系統。

討論系統的設計與實現有很多方法,本文選擇 問題驅動 的方式,一開始引入問題,然后分問題逐步深入。從一個典型的 job 例子入手,逐漸討論 job 生成及執行過程中所需要的系統功能支持,然后有選擇地深入討論一些功能模塊的設計原理與實現方式。也許這樣的方式比一開始就分模塊討論更有主線。

本文檔面向的是希望對 Spark 設計與實現機制,以及大數據分布式處理框架深入了解的 Geeks。

因為 Spark 社區很活躍,更新速度很快,本文檔也會盡量保持同步,文檔號的命名與 Spark 版本一致,只是多了一位,最后一位表示文檔的版本號。

由于技術水平、實驗條件、經驗等限制,當前只討論 Spark core standalone 版本中的核心功能,而不是全部功能。誠邀各位小伙伴們加入進來,豐富和完善文檔。

關于學術方面的一些討論可以參閱相關的論文以及 Matei 的博士論文,也可以看看我之前寫的這篇 blog

好久沒有寫這么完整的文檔了,上次寫還是三年前在學 Ng 的 ML 課程的時候,當年好有激情啊。這次的撰寫花了 20+ days,從暑假寫到現在,大部分時間花在 debug、畫圖和琢磨怎么寫上,希望文檔能對大家和自己都有所幫助。

Contents

本文檔首先討論 job 如何生成,然后討論怎么執行,最后討論系統相關的功能特性。具體內容如下:

  1. Overview 總體介紹
  2. Job logical plan 介紹 job 的邏輯執行圖(數據依賴圖)
  3. Job physical plan 介紹 job 的物理執行圖
  4. Shuffle details 介紹 shuffle 過程
  5. Architecture 介紹系統模塊如何協調完成整個 job 的執行
  6. Cache and Checkpoint 介紹 cache 和 checkpoint 功能
  7. Broadcast 介紹 broadcast 功能
  8. Job Scheduling 尚未撰寫
  9. Fault-tolerance 尚未撰寫

https://github.com/JerryLead/SparkInternals/tree/master/markdown

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!