一、概述
根據(jù)《深入理解Spark:核心思想與源碼分析》一書,結(jié)合最新的spark源代碼master分支進(jìn)行源碼閱讀,對(duì)新版本的代碼加上自己的一些理解,如有錯(cuò)誤,希望指出。
1.塊管理器BlockManager的實(shí)現(xiàn)
塊管理器是Spark存儲(chǔ)體系的核心組件,Driver Application和Executor都會(huì)創(chuàng)建BlockManager,源代碼位置在core/org.apache.spark.storage,部分代碼如下。
View Code
上面代碼中聲明的BlockInfoManager用于管理BlockManager緩存BlockId及對(duì)應(yīng)的BlockInfo,BlockInfoManager提供一些列的同步讀寫策略。BlockManager由以下部分組成。
1)shuffle客戶端shuffleClient;
2)BlockManagerMaster,對(duì)存在于所有Executor上的BlockManager進(jìn)行統(tǒng)一管理;
3)磁盤塊管理器DiskBlockManager;
4)內(nèi)存存儲(chǔ)MemoryStore;