Spark發展至今,應該說已經非常成熟了。是大資料計算領域不得不學習的架構。尤其是Spark在穩定性和社群發展的成熟度方面,吊打其他的大資料處理架構。
Spark至今隻經曆過1.x、2.x和3.x三個大版本的變化,在核心實作上,我們在Github能看到的最早的實作是0.5版本,這個版本隻有1萬多行代碼,就把Spark的核心功能實作了。
https://mmbiz.qpic.cn/mmbiz_jpg/UdK9ByfMT2MSKPJAPEuwFF4c51BIibTSLV41740Vutq954fX6Fteiaan8ZlFGYcnT5N9Vs7qlJ6EgnBX4IgYprtw/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1
基礎概念篇
首先假如你是第一次接觸Spark,那麼你需要對Spark的設計思想有所了解,知道Spark用了哪些抽象,Spark在提出RDD的時候是基于什麼樣的考慮。
在這裡給大家推薦幾篇論文如下:
第一篇:
這個不多說,直接給出一個連結,這篇文章不長,很快能看完。
彈性分布式資料集:一種為記憶體化叢集計算設計的容錯抽象:
https://fasionchan.com/blog/2017/10/19/yi-wen-tan-xing-fen-bu-shi-shu-ju-ji-yi-zhong-wei-nei-cun-hua-ji-qun-ji-suan-she-ji-de-rong-cuo-mo-xing/第二篇:
大型叢集上的快速和通用資料處理架構
這篇論文長達170多頁,當然我們沒有必要看完,我在網上找到一個總結,我們在《彈性分布式資料集:一種為記憶體化叢集計算設計的容錯抽象》這篇論文基礎上看起來也會輕松不少。
連結如下:
https://blog.csdn.net/weixin_44024821/article/details/89948115環境準備
Spark的源碼環境搭建網上有很多資源,主要是環境依賴比如JDK、Scala、Maven等,整個過程大概耗時要1-4個小時,主要是編譯源碼費時。大家可以在網上任意找一篇文章搭建起來環境就可以。 直到你在編譯時出現下圖就大功告成了。(個人不建議使用sbt的方式編譯,推薦Maven)
https://mmbiz.qpic.cn/mmbiz_jpg/UdK9ByfMT2MSKPJAPEuwFF4c51BIibTSLvX4kgyJe4iboNydKuCN2kWpIIH6ibebzeiau8pfmibQUC3f3ebslwf3W5w/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1Spark核心設計篇
https://mmbiz.qpic.cn/mmbiz_png/UdK9ByfMT2MSKPJAPEuwFF4c51BIibTSLshuQSPsOJW1rC7icLgKSPLq7ficCAgzxc8L9qhHKLS9Z6nqTfia9WtThQ/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1上圖是一個最簡單的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感興趣,可以單獨看看。
整個跟實時計算相關的包和類大部分都已經包含在上述目錄中了。假如你在使用的過程中出現了問題,就需要針對其中的具體部門去看。
源碼閱讀是我們每一個開發者都需要經曆的階段,閱讀源碼的好處就不說了。你我都懂。
關注我的公衆号,背景回複【JAVAPDF】擷取200頁面試題!
5萬人關注的大資料成神之路,不來了解一下嗎? 5萬人關注的大資料成神之路,真的不來了解一下嗎? 5萬人關注的大資料成神之路,确定真的不來了解一下嗎?