mapreduce程式的優化主要集中在兩個方面:乙個是運算效能方面的優化;另乙個是io操作方面的優化。
具體體現在以下的幾個環節之上:
1. 任務排程
a. 盡量選擇空閒節點進行計算
b. 盡量把任務分配給inputsplit所在機器
2. 資料預處理與inputsplit的大小
盡量處理少量的大資料;而不是大量的小資料。因此可以在處理前對資料進行一次預處理,將資料進行合併。
3. map和reduce任務的數量
map任務槽中任務的數量需要參考map的執行時間,而reduce任務的數量則只需要參考map槽中的任務數,一般是0.95或1.75倍。
4. 使用combine函式
該函式用於合併本地的資料,可以大大減少網路消耗。具體請參考函式手冊。
5. 壓縮
可以對一些中間資料進行壓縮處理,達到減少網路消耗的目的。
6. 自定義comparator
可以自定義資料型別實現更複雜的目的。
**:
Mapreduce的優化策略
1 combiner優化 在之前的shuffle過程中的map端生成最終溢寫檔案時,例如 aaa 1,aaa 1 這樣的資料會被合併為 而我們可以通過給每個map顯示的設定combiner,來將這個節點的輸出優化,即如前面的例如,如果他們是同一節點的資料,他們會合併為,combiner相當於小型的r...
MapReduce的優化方法
從以下6個方面著手考慮 map端資料輸入時主要需要考慮的是小檔案 因為hadoop預設的切片原則是按檔案進行的 的問題 針對小檔案的問題我們有如下兩種解決方案 1 合併小檔案 在map讀取資料任務開始前,可以人工的對小檔案進行乙個合併,合併成乙個大檔案。2 採用combinetextinputfor...
mapreduce優化方案
1.任務排程 任務排程是hadoop中重要的環節 1.計算方面,hadoop會將任務分配給空閒機器,使所有的任務能公平地分享系統資源。2.i o資料流方面,會盡量將map任務分配給inputsplit所在的機器,減少i o操作。2.資料預處理與inputsplit的大小 1.mapredue適合處理...