spark-submit提交任務(wù)機(jī)制,底層元數(shù)據(jù)管理

driver有blockManagerMaster,負(fù)責(zé)對各個節(jié)點(diǎn)上的blockManager內(nèi)部管理數(shù)據(jù)的元數(shù)據(jù)就行維護(hù),比如block增刪改等操作,都會在這里維護(hù)元數(shù)據(jù)變量。

每個BlockManager在啟動之后,做的第一件事,就是向BlockMangerMaster進(jìn)行注冊,此時BlockManagerMaster會為其創(chuàng)建對應(yīng)的BlockManagerInfo。

使用BlockManger時執(zhí)行了寫操作,比如RDD運(yùn)行中的一些中間數(shù)據(jù),或者我們手動指定的Cache或Persist。比如緩存級別設(shè)置的是(MEMORY_AND_DISK),那么會優(yōu)先將數(shù)據(jù)寫入到內(nèi)存,如果內(nèi)存大小不夠,在使用硬盤。

此外如果Persist指定的緩存級別是_2,帶復(fù)制的這種,那么會使用BlockManagerWorker將數(shù)據(jù)Replicate一份到其他節(jié)點(diǎn)的BlockManager。

只要使用BlockManager執(zhí)行了數(shù)據(jù)的增刪改操作,那么必須將Block的BlockStatus上報到BlockManagerMaster上去,在BlockManagerMaster上,會對指定的BlockManager的BlockManagerInfo內(nèi)部的BlockStatus進(jìn)行增刪改操作,從而達(dá)到維護(hù)元數(shù)據(jù)的功能。

每個節(jié)點(diǎn)上都有BlockManager,有幾個關(guān)鍵組件DiskStore,負(fù)責(zé)對磁盤上的數(shù)據(jù)進(jìn)行讀寫。

MemoryStore,負(fù)責(zé)對內(nèi)存上的數(shù)據(jù)進(jìn)行讀寫。

ConnectionManager,負(fù)責(zé)建立BlockManager到遠(yuǎn)程其他節(jié)點(diǎn)的BlockManager的網(wǎng)絡(luò)連接。

BlockManagerWorker,負(fù)責(zé)對遠(yuǎn)程其他節(jié)點(diǎn)的BlockManager的數(shù)據(jù)讀寫。

從BlockManager讀取數(shù)據(jù)時,比如說shuffle Read的操作,如果能從本地讀數(shù)據(jù),那么就和DiskStore或MomoryStore從本地來讀取數(shù)據(jù),但是如果本地沒有數(shù)據(jù)的話,就會用ConnectionManager與有數(shù)據(jù)的BlockManager建立連接,然后用BlockManagerWorkrer從遠(yuǎn)程的BlockManager讀取數(shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容