教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

如何操作MapReduce的性能調(diào)優(yōu)?

更新時間:2020年11月18日14時40分 來源:傳智播客 瀏覽次數(shù):

  使用Hadoop進行大數(shù)據(jù)運算,當(dāng)數(shù)據(jù)量極其大時,那么對MapReduce性能的調(diào)優(yōu)重要性不言而喻,尤其是Shuffle過程中的參數(shù)配置對作業(yè)的總執(zhí)行時間影響特別大。下面總結(jié)一些和MapReduce相關(guān)的性能調(diào)優(yōu)方法,主要從五個方面考慮:數(shù)據(jù)輸入、Map階段、Reduce階段、Shuffle階段和其他調(diào)優(yōu)屬性。

  1.數(shù)據(jù)輸入

  在執(zhí)行MapReduce任務(wù)前,將小文件進行合并,大量的小文件會產(chǎn)生大量的map任務(wù),增大map任務(wù)裝載的次數(shù),而任務(wù)的裝載比較耗時,從而導(dǎo)致MapReduce運行速度較慢。因此我們采用CombineTextInputFormat來作為輸入,解決輸入端大量的小文件場景。

  2.Map階段

  (1)減少溢寫(spill)次數(shù):通過調(diào)整io.sort.mb及sort.spill.percent參數(shù)值,增大觸發(fā)spill的內(nèi)存上限,減少spill次數(shù),從而減少磁盤IO。

  (2)減少合并(merge)次數(shù):通過調(diào)整io.sort.factor參數(shù),增大merge的文件數(shù)目,減少merge的次數(shù),從而縮短mr處理時間。

  (3)在map之后,不影響業(yè)務(wù)邏輯前提下,先進行combine處理,減少 I/O。

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

  ? 表1 Map階段調(diào)優(yōu)屬性

  3.Reduce階段

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

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

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

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

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

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

4.Shuffle階段

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

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

? 表3 shuffle階段的調(diào)優(yōu)屬性

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

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

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


猜你喜歡:

HBase表常見Shell命令及具體語法 

Combiner組件創(chuàng)建和使用演示【大數(shù)據(jù)文章】 

單例中懶漢和惡漢模式的區(qū)別 

大數(shù)據(jù)培訓(xùn)課程 

0 分享到:
和我們在線交談!