大數(shù)據(jù)服務(wù)上云的思考">大數(shù)據(jù)服務(wù)上云的思考
905
2025-04-04
本文和之前發(fā)表的2篇文章有關(guān)聯(lián),建議先閱讀前兩篇文章
spark的內(nèi)存管理機(jī)制學(xué)習(xí)——BlockManager
spark到底是怎么確認(rèn)內(nèi)存夠不夠用的?超大超詳細(xì)圖解!讓你掌握Spark memeoryStore內(nèi)存管理的精髓
spark中存在一個(gè)cacheManager,它的作用是什么? 緩存原理又是如何的?
以及和內(nèi)存memoryStore對(duì)應(yīng)的diskManager,它又是如何和內(nèi)存管理做交互,實(shí)現(xiàn)spark很重要的落盤機(jī)制的?本文將給你進(jìn)行一一講解
RDD緩存管理cacheManager
當(dāng)需要計(jì)算RDD時(shí),需要避免重復(fù)計(jì)算的RDD。
什么時(shí)候RDD可能會(huì)被重復(fù)計(jì)算?一般是寬依賴RDD, 即RDD的下游可能有多個(gè), 但是另一個(gè)下游的拉去可能較慢, 那么此時(shí)需要做緩存。
cacheManager只是對(duì)RDD的管理, 真正的緩存以及獲取是通過(guò)blockManager,然后根據(jù)內(nèi)存情況選擇存內(nèi)存還是存磁盤。
RDD不是一定會(huì)做緩存,這取決于存儲(chǔ)級(jí)別的設(shè)定。
RDD沒(méi)緩存時(shí), 不一定要重新計(jì)算, 也可能從CheckPoint中拿
checkPoint概念:
checkpoint在spark中主要有兩塊應(yīng)用:一塊是在spark core中對(duì)RDD做checkpoint,可以切斷做checkpoint RDD的依賴關(guān)系,將RDD數(shù)據(jù)保存到可靠存儲(chǔ)(如HDFS)以便數(shù)據(jù)恢復(fù);另外一塊是應(yīng)用在spark streaming中,使用checkpoint用來(lái)保存DStreamGraph以及相關(guān)配置信息,以便在Driver崩潰重啟的時(shí)候能夠接著之前進(jìn)度繼續(xù)進(jìn)行處理(如之前waiting batch的job會(huì)在重啟后繼續(xù)處理)。
如果需要存入內(nèi)存,直接使用memoryStore即可,memoryStore的存儲(chǔ)過(guò)程見(jiàn)上一篇博文。
如果要寫入磁盤,需要調(diào)用diskStore提供的put方法把RDD對(duì)應(yīng)的block塊寫入磁盤
diskStore和diskBlockManager有什么關(guān)系?
diskStore里要寫入數(shù)據(jù)時(shí),負(fù)責(zé)打開某個(gè)文件, 然后往文件里寫入。
取出數(shù)據(jù)時(shí),也是找到對(duì)應(yīng)的文件,然后取出數(shù)據(jù)。
而這個(gè)磁盤文件的管理并沒(méi)有放到diskStore里實(shí)現(xiàn),而是獨(dú)立了一個(gè)diskBlockManager模塊。
以DiskStore的putArray方法為例,從下圖可看出關(guān)系:
即文件相關(guān)、序列化相關(guān),都讓diskBlockManager來(lái)搞了。
diskBlockManager的getFile過(guò)程
上圖里有個(gè)getFile的操作,即從DBM中拿到文件對(duì)象做寫入。
那么這個(gè)文件創(chuàng)建時(shí),怎么選路徑,怎么命名?
首先,文件的路徑和文件名, 使用2次哈希得到
使用2級(jí)哈希做路徑的目的,是因?yàn)橐患?jí)目錄有多個(gè),需要用哈希選擇放到哪個(gè)一級(jí)目錄。
每次創(chuàng)建文件的話,會(huì)把該文件放到DBM里的一個(gè)數(shù)組中,并加上鉤子做管理,如果程序中止或者結(jié)束,需要主動(dòng)清理臨時(shí)文件。
DiskBlockManager全圖:
EI企業(yè)智能 Java 可信智能計(jì)算服務(wù) TICS 大數(shù)據(jù) 智能數(shù)據(jù)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。