具體體現在以下的幾個環節之上:
1. 任務調度
a. 盡量選擇空閑節點進行計算
b. 盡量把任務分配給InputSplit所在機器
2. 數據預處理與InputSplit的大小
盡量處理少量的大數據;而不是大量的小數據。因此可以在處理前對數據進行壹次預處理,將數據進行合並。
如果自己懶得合並,可以參考使用CombineFileInputFormat函數。具體用法請查閱相關函數手冊。
3. Map和Reduce任務的數量
Map任務槽中任務的數量需要參考Map的運行時間,而Reduce任務的數量則只需要參考Map槽中的任務數,壹般是0.95或1.75倍。
4. 使用Combine函數
該函數用於合並本地的數據,可以大大減少網絡消耗。具體請參考函數手冊。
5. 壓縮
可以對壹些中間數據進行壓縮處理,達到減少網絡消耗的目的。
6. 自定義comparator
可以自定義數據類型實現更復雜的目的。