mapreduce優化方案

2021-07-02 03:39:47 字數 2253 閱讀 8904

1.

任務排程

任務排程是hadoop中重要的環節

1.計算方面,hadoop會將任務分配給空閒機器,使所有的任務能公平地分享系統資源。

2.i/o資料流方面,會盡量將map任務分配給inputsplit所在的機器,減少i/o操作。

2.資料預處理與inputsplit的大小

1.mapredue適合處理少量的大資料,所以提交任務時可以對預處理資料進行合併以提高執行效率。

2.如果乙個map執行速度快,當乙個map任務執行幾秒就結束時,就要考慮給它分配更多的資料,通常而言乙個map執行時間在1分鐘比較合適。

可以設定map輸入資料的大小來調節map的執行時間,hadoop會在處理每個block後將其作為乙個inputsplit,因此合理地設定block塊大小是很重要的調節方式。除此之外,也可以通過合理地設定map任務的數量來調節map任務的資料輸入。

3.分配map和reduce任務的數量

通過屬性

mapred.tasktracker.map.tasks.maximum 設定map任務的最大數量

mapred.tasktracker.reduce.tasks.maximum設定reduce任務最大數量

3.mapreduce的任務數量

1.首先要定義兩個概念—map/reduce任務槽。map/reduce任務槽就是這個集群能夠同時執行的map/reduce任務的最大數量。比如,在乙個具有1200臺機器的集群中,設定每台機器最多可以同時執行10個map任務,5個reduce任務。那麼這個集群的map任務槽就是12000,reduce任務槽是6000。任務槽可以幫助對任務排程進行設定

2.map的任務數主要是參考map執行時間設定的,reduce任務數主要參考任務槽來設定的,一般來說,reduce任務的數量應該是reduce任務槽的0.95倍或是1.75倍,這是基於不同的考慮來決定的。當reduce任務的數量是任務槽的0.95倍時,如果乙個reduce任務失敗,hadoop可以很快地找到一台空閒的機器重新執行這個任務。當reduce任務的數量是任務槽的1.75倍時,執行速度快的機器可以獲得更多的reduce任務,因此可以使負載更加均衡,以提高任務的處理速度。 (

在hadoop中預設是執行乙個reducer,所有的reduce任務都會放到單一的reducer去執行,效率非常低下。為了提高效能,可以適當增大reducer的數量。

最優的reducer數量取決於集群中可用的reducer任務槽的數目。reducer任務槽的數目是集群中節點個數與mapred.tasktracker.reduce.tasks.maximum(預設為2)的乘積,也可以通過mapreduce的使用者介面獲得)

4. combine函式

1.combine函式是用於本地合併資料的函式。在有些情況下,map函式產生的中間資料會有很多是重複的,比如在乙個簡單的wordcount程式中,因  

為詞頻是接近與乙個zipf分布的,每個map任務可能會產生成千上萬個記錄,若將這些記錄一一傳送給reduce任務是很耗時的。所以,mapreduce框架執行使用者寫的combine函式用於本地合併,這會大大減少網路i/o操作的消耗。此時就可以利用combine函式先計算出在這個block中單詞the的個數。合理地設計combine函式會有效地減少網路傳輸的資料量,提高mapreduce的效率。

在mapreduce程式中使用combine很簡單,只需在程式中新增如下內容:

job.setcombinerclass(combine.class);

在wordcount程式中,可以指定reduce類為combine函式,具體如下:

job.setcombinerclass(reduce.class);

5.壓縮,減少i/o

1.編寫mapreduce程式時,可以選擇對map的輸出和最終的輸出結果進行壓縮(同時可以選擇壓縮方式)。在一些情況下,map的中間輸出可能會很大,對其進行壓縮可以有效地減少網路上的資料傳輸量。對最終結果的壓縮雖然會減少資料寫hdfs的時間,但是也會對讀取產生一定的影響,因此要根據實際情況來選擇(第7章中提供了乙個小實驗來驗證壓縮的效果)。

6. 自定義comparator

1.在hadoop中,可以自定義資料型別以實現更複雜的目的,比如,當讀者想實現k-means演算法(乙個基礎的聚類演算法)時可以定義k個整數的集合。自定義hadoop資料型別時,推薦自定義comparator來實現資料的二進位制比較,這樣可以省去資料序列化和反序列化的時間,提高程式的執行效率。

大資料優化方案 MapReduce優化方法

無意中發現了乙個巨牛的人工智慧教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看 一樣!覺得太牛了,所以分享給大家。點這裡可以跳轉到教程。大資料面試寶典目錄,一 mapreduce 程式效率的瓶頸在於兩點 1 計算機效能 cpu 記憶體 磁碟健康 網路 2 i o 操作優...

MapReduce優化方法

mapreduce 程式效率取決於以下幾點 1.計算機效能 cpu 記憶體 磁碟健康 網路 2.i o 操作優化 1 資料傾斜 2 map 和 reduce 數設定不合理 3 map 執行時間太長,導致 reduce 等待過久 4 小檔案過多 5 大量的不可分塊的超大檔案 6 spill 次數過多 ...

Mapreduce的優化策略

1 combiner優化 在之前的shuffle過程中的map端生成最終溢寫檔案時,例如 aaa 1,aaa 1 這樣的資料會被合併為 而我們可以通過給每個map顯示的設定combiner,來將這個節點的輸出優化,即如前面的例如,如果他們是同一節點的資料,他們會合併為,combiner相當於小型的r...