全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)技術(shù)文章正文

MapReduce性能優(yōu)化策略(下)

更新時(shí)間:2022-04-14 來(lái)源:黑馬程序員 瀏覽量:

  3.Reduce階段

  (1)合理設(shè)置map和reduce數(shù):兩個(gè)都不能設(shè)置太少,也不能設(shè)置太多。太少,會(huì)導(dǎo)致task等待,延長(zhǎng)處理時(shí)間;太多,會(huì)導(dǎo)致map和reduce任務(wù)間競(jìng)爭(zhēng)資源,造成處理超時(shí)等錯(cuò)誤。

  (2)設(shè)置map和reduce共存:調(diào)整slowstart.completedmaps參數(shù),使map運(yùn)行到一定程度后,reduce也開(kāi)始運(yùn)行,減少reduce的等待時(shí)間。

  (3)規(guī)避使用reduce:因?yàn)閞educe在用于連接數(shù)據(jù)集的時(shí)候?qū)?huì)產(chǎn)生大量的網(wǎng)絡(luò)消耗。通過(guò)將MapReduce參數(shù)setNumReduceTasks設(shè)置為0來(lái)創(chuàng)建一個(gè)只有map的作業(yè)。

  (4)合理設(shè)置reduce端的buffer:默認(rèn)情況下,數(shù)據(jù)達(dá)到一個(gè)閾值的時(shí)候,buffer中的數(shù)據(jù)就會(huì)寫(xiě)入磁盤(pán),然后reduce會(huì)從磁盤(pán)中獲得所有的數(shù)據(jù)。也就是說(shuō),buffer和reduce是沒(méi)有直接關(guān)聯(lián)的,中間多一個(gè)寫(xiě)磁盤(pán)→讀磁盤(pán)的過(guò)程,既然有這個(gè)弊端,那么就可以通過(guò)參數(shù)來(lái)配置,使得buffer中的一部分?jǐn)?shù)據(jù)可以直接輸送到reduce,從而減少I(mǎi)/O開(kāi)銷(xiāo)。這樣一來(lái),設(shè)置buffer需要內(nèi)存,讀取數(shù)據(jù)需要內(nèi)存,reduce計(jì)算也要內(nèi)存,所以要根據(jù)作業(yè)的運(yùn)行情況進(jìn)行調(diào)整。

  上面提到的屬性參數(shù),都是位于mapred-default.xml文件中,這些屬性參數(shù)的調(diào)優(yōu)方式如表4-2所示。

  表4-2 Reduce階段的調(diào)優(yōu)屬性

1649905192171_Reduce階段的調(diào)優(yōu)屬性.jpg

  4.Shuffle階段

  Shuffle階段的調(diào)優(yōu)就是給Shuffle過(guò)程盡量多地提供內(nèi)存空間,以防止出現(xiàn)內(nèi)存溢出現(xiàn)象,可以由參數(shù)mapred.child.java.opts來(lái)設(shè)置,任務(wù)節(jié)點(diǎn)上的內(nèi)存大小應(yīng)盡量大一些。

  上面提到的屬性參數(shù),都是位于mapred-site.xml文件中,這些屬性參數(shù)的調(diào)優(yōu)方式如表4-3所示。

  表4-3 Shuffle階段的調(diào)優(yōu)屬性

1649905263465_Shuffle階段的調(diào)優(yōu)屬性.jpg

  5.其他調(diào)優(yōu)屬性

  除此之外,MapReduce還有一些基本的資源屬性的配置,這些配置的相關(guān)參數(shù)都位于mapred-default.xml文件中,通過(guò)合理配置這些屬性可以提高M(jìn)apReduce性能,表4-4列舉了部分調(diào)優(yōu)屬性。

  表4-4 MapReduce資源調(diào)優(yōu)屬性

1649905299232_MapReduce資源調(diào)優(yōu)屬性.jpg

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!