MapReduce解決數據傾斜

可以從一下三個方面入手:

一、業務邏輯方面

1、map端的key值進行hash的時候,可能得到的hash值相同,然而相同的hash值會分配給同一個reduce函數去處理,因此就會出現某一個reduce的工作量非常大,進而導致數據傾斜。因此解決數據傾斜可以優化定義你的hash函數。

2、還有就是,例如你對一部分數據進行了處理,這樣將導致這部分數據與其他未處理數據不同,所以這些數據有可能出現在map端聚集,因此,可以在map任務在運行前,將處理過的數據與未處理的數據分開進行map任務。

二、程序方面

調整設計程序的思路。

三、調參方面

Hadoop自帶了很多的參數和機制來調節數據傾斜,合理利用它們可以解決部分數據傾斜的問題。

四、數據處理方面

1、進行數據預處理。

2、有損方法:將異常數據過濾掉,比如說IP爲0的數據刪除。

3、無損的方法:對分佈不均衡的數據單獨計算,先對key做一次hash,將數據打散再並行運算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章