1. <button id="t1m4q"></button>

        2. <dd id="t1m4q"></dd>

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

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

          MapReduce性能調優(yōu)方法有哪些?

          更新時(shí)間:2022年03月28日16時(shí)46分 來(lái)源:傳智教育 瀏覽次數:

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

          1.數據輸入

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

          2.Map階段

          (1)減少溢寫(xiě)(spill)次數:通過(guò)調整io.sort.mb及sort.spill.percent參數值,增大觸發(fā)spill的內存上限,減少spill次數,從而減少磁盤(pán)IO。

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

          (3)在map之后,不影響業(yè)務(wù)邏輯前提下,先進(jìn)行combine處理,減少I(mǎi)/O。我們在上面提到的那些屬性參數,都是位于mapred-default.xml文件中,這些屬性參數的調優(yōu)方式如表4-1所示。

          表4-1Map階段調優(yōu)屬性

          3.Reduce階段

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

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

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

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

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

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

          4.Shuffle階段

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

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

          表4-3shuffle階段的調優(yōu)屬性

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

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

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

          0 分享到:
          和我們在線(xiàn)交談!
          久久久久亚洲AV成人片一级毛片_三级中文字幕在线视频_国产黄频免费无数次看_最新精品亚洲成a人在线观看