国产精品国产精品国产专区不卡,国产精品无码专区AV在线播放,国产乱子精品的A片视频_影院

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

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

MapReduce性能調優方法有哪些?

更新時間:2022年03月28日16時46分 來源:傳智教育 瀏覽次數:

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

1.數據輸入

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

2.Map階段

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

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

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

表4-1Map階段調優屬性

3.Reduce階段

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

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

(3)規避使用reduce:因為reduce在用于連接數據集的時候將會產生大量的網絡消耗。通過將MapReduce參數setNumReduceTasks設置為0來創建一個只有map的作業。

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

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

表4-2Reduce階段的調優屬性

4.Shuffle階段

Shuffle階段的調優就是給Shuffle過程盡量多地提供內存空間,以防止出現內存溢出現象,可以由參數mapred.child.java.opts來設置,任務節點上的內存大小應盡量大。

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

表4-3shuffle階段的調優屬性

5.其他調優屬性

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

表4-4MapReduce資源調優屬性

0 分享到: