當前位置:成語大全網 - 書法字典 - 大數據MapReduce性能調優方法綜述

大數據MapReduce性能調優方法綜述

當Hadoop用於大數據操作時,當數據量極大時,調優MapReduce性能的重要性不言而喻,尤其是Shuffle過程中的參數配置對作業的總執行時間影響很大。下面總結了壹些與MapReduce相關的性能調優方法,主要從數據輸入、Map階段、Reduce階段、Shuffle階段、其他調優屬性五個方面。

在執行MapReduce任務之前,對小文件進行合並,大量的小文件會產生大量的地圖任務,會增加加載地圖任務的次數,任務的加載比較耗時,導致MapReduce運行速度較慢。所以我們使用CombineTextInputFormat作為輸入,解決輸入端大量的小文件場景。

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

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

(3)映射後,在不影響業務邏輯的前提下,先進行合並處理,減少I/O..

上面我們提到的屬性參數都位於mapred-default.xml文件中,這些屬性參數的調優方法如表1所示。

表1映射階段調整屬性

(1)設置地圖,合理減少數字:既不能設置太少,也不能設置太多。太少會導致任務等待,延長處理時間;過多的任務會導致map和reduce任務之間的資源競爭,導致處理超時等錯誤。

(2)設置map和reduce***內存:調整slowstart.completedmaps的參數,使map運行到壹定程度後,減少reduce的等待時間。

(3)避免使用reduce:因為reduce用於連接數據集時會產生大量的網絡消耗。通過將MapReduce參數setNumReduceTasks設置為0來創建僅地圖作業。

(4)合理設置reduce端的緩沖區:默認情況下,當數據達到壹個閾值時,緩沖區中的數據會被寫入磁盤,然後reduce會從磁盤中獲取所有數據。換句話說,buffer和reduce不是直接相關的,中間多了壹個寫盤-->;既然讀盤的過程有這個缺點,那麽可以通過參數配置,讓緩沖區的部分數據直接轉移,減少IO開銷。這樣設置緩沖區需要內存,讀取數據需要內存,減少計算也需要內存,所以要根據作業的操作來調整。

上面提到的屬性參數都位於mapred-default.xml文件中,這些屬性參數的調優方法如表2所示。

表2 Reduce階段的調整屬性

Shuffle階段的調優是為Shuffle進程提供盡可能多的內存空間,防止內存溢出,可以通過參數mapred.child.java.opts設置,任務節點上的內存大小要盡可能大。

上面提到的屬性參數都位於mapred-site.xml文件中,這些屬性參數的調優方法如表3所示。

表3洗牌階段的調整特性

此外,MapReduce還有壹些基本的資源屬性配置,這些配置的相關參數位於mapred-default.xml文件中。我們可以合理配置這些屬性來提高MapReduce的性能。表4列出了壹些調優屬性。

表4 MapReduce資源調整屬性

來自:/news/20201118/143040 . html。