新聞中心
一、到底什么是Shuffle?
Shuffle中文翻譯為“洗牌”,需要Shuffle的關(guān)鍵性原因是某種具有共同特征的數(shù)據(jù)需要最終匯聚到一個(gè) 計(jì)算節(jié)點(diǎn)上進(jìn)行計(jì)算。
二、Shuffle可能面臨的問(wèn)題?
1, 數(shù)據(jù)量非常大;
2, 數(shù)據(jù)如何分類,即如何Partition,Hash、Sort、鎢絲計(jì)算;
3, 負(fù)載均衡(數(shù)據(jù)傾斜);
4, 網(wǎng)絡(luò)傳輸效率,需要在壓縮和解壓縮之間做出權(quán)衡,序列化和反序列也是要考慮的問(wèn)題;
說(shuō)明:具體的Task進(jìn)行計(jì)算的時(shí)候盡一切大可能使得數(shù)據(jù)具備Process Locality的特性;退而求次是增加數(shù)據(jù)分片,減少每個(gè)Task處理的數(shù)據(jù)量。
三、Hash Shuffle
1, key不能是Array;
2, Hash Shuffle不需要排序,此時(shí)從理論上講就節(jié)省了Hadoop MapReduce中進(jìn)行Shuffle需要排序時(shí)候的時(shí)間浪費(fèi),因?yàn)閷?shí)際生產(chǎn)環(huán)境有大量的不需要排序的Shuffle類型;
思考:不需要排序的Hash Shuffle是否一定比需要排序的Sorted Shuffle速度更快?不一定!如果數(shù)據(jù)規(guī)模比的情形下,Hash Shuffle會(huì)比Sorted Shuffle速度快(很多)!但是如果數(shù)據(jù)量大,此時(shí)Sorted Shuffle一般都會(huì)比Hash Shuffle快(很多)
3,每個(gè)ShuffleMapTask會(huì)根據(jù)key的哈希值計(jì)算出當(dāng)前的key需要寫入的Partition,然后把決定后的結(jié)果寫入單 獨(dú)的文件,此時(shí)會(huì)導(dǎo)致每個(gè)Task產(chǎn)生R(指下一個(gè)Stage的并行度)個(gè)文件,如果當(dāng)前的Stage中有M個(gè)ShuffleMapTask,則會(huì)M*R個(gè)文件?。。?/p>
注意:Shuffle操作絕大多數(shù)情況下都要通過(guò)網(wǎng)絡(luò),如果Mapper和Reducer在同一臺(tái)機(jī)器上,此時(shí)只需要讀取本地 磁盤即可。
Hash Shuffle的兩大死穴:第一:Shuffle前會(huì)產(chǎn)生海量的小文件于磁盤之上,此時(shí)會(huì)產(chǎn)生大量耗時(shí)低效的IO操 作;第二:內(nèi)存不共用?。?!由于內(nèi)存中需要保存海量的文件操作句柄和臨時(shí)緩存信息,如果數(shù)據(jù)處理規(guī)模比較龐大的話,內(nèi)存不可承受,出現(xiàn)OOM等問(wèn)題!
四、Sorted Shuffle:
為了改善上述的問(wèn)題(同時(shí)打開(kāi)過(guò)多文件導(dǎo)致Writer Handler內(nèi)存使用過(guò)大以及產(chǎn)生過(guò)度文件導(dǎo)致大量的隨機(jī)讀寫 帶來(lái)的效率極為低下的磁盤IO操作),Spark后來(lái)推出了Consalidate機(jī)制,來(lái)把小文件合并,此時(shí)Shuffle時(shí)文件產(chǎn)生的數(shù)量為cores*R,對(duì)于ShuffleMapTask的數(shù)量明顯多于同時(shí)可用的并行Cores的數(shù)量的情況下,Shuffle產(chǎn)生的文件會(huì)大幅度減少,會(huì)極大降低OOM的可能;
為此Spark推出了Shuffle Pluggable開(kāi)放框架,方便系統(tǒng)升級(jí)的時(shí)候定制Shuffle功能模塊,也方便第三方系統(tǒng)改造人 員根據(jù)實(shí)際的業(yè)務(wù)場(chǎng)景來(lái)開(kāi)放具體最佳的Shuffle模塊;核心接口ShuffleManager,具體默認(rèn)實(shí)現(xiàn) 有HashShuffleManager、SortShuffleManager等,Spark 1.6.1中具體的配置如下:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前題目:SparkShuffle內(nèi)幕解密(24)-創(chuàng)新互聯(lián)
分享URL:http://fisionsoft.com.cn/article/dicdsg.html