1.現象
資料傾斜是進行大資料計算時最經常遇到的問題之一。當我們在執行hiveql或者執行mapreduce作業時候,如果遇到一直卡在map100%,reduce99%,檢視任務監控頁面,發現只有少量(1個或幾個)reduce子任務未完成。因為其處理的資料量和其他reduce差異過大。一般就是遇到了資料傾斜的問題。資料傾斜其實是進行分布式計算的時候,某些節點的計算能力比較強或者需要計算的資料比較少,早早執行完了,某些節點計算的能力較差或者由於此節點需要計算的資料比較多,導致出現其他節點的reduce階段任務執行完成,但是這種節點的資料處理任務還沒有執行完成。
2.產生原因
1)key
分布不均勻 2)
業務資料本身的特性 3)
建表時考慮不周 4)
某些sql
語句本身就有資料傾斜,如下表所示:
情形
後果
join
中乙個表較小,但是
key集中
分發到某乙個或幾個
reduce
上的資料遠高於平均值
join
大表與大表,但是分桶的判斷字段
0值或空值過多
這些空值都由乙個
reduce
處理,非常慢
group by
group by
維度過小,某值的數量過多
處理某值的
reduce
灰常耗時
count distinct
某特殊值過多
處理此特殊值
reduce耗時
(待完善)
Hive 資料傾斜解決方案(調優)
在做shuffle階段的優化過程中,遇到了資料傾斜的問題,造成了對一些情況下優化效果不明顯。主要是因為在job完成後的所得到的counters是整個job的總和,優化是基於這些counters得出的平均值,而由於資料傾斜的原因造成map處理資料量的差異過大,使得這些平均值能代表的價值降低。hive的...
資料傾斜解決方案
資料傾斜定義 簡單的講,資料傾斜就是我們在資料計算的時候,由於資料的分散度不夠,導致大量的資料集中到了一台或者幾台機器上計算,這些機器的計算速度遠遠低於整個集群的平均計算速度,導致整個計算過程十分緩慢。常見資料傾斜現象 資料傾斜往往會發生在資料開發的各個環節中,比如 用hive資料計算的時候redu...
資料傾斜解決方案
1 聚合原資料 主要操作的是hive資料庫中的資料,先通過hive sql將相同key的資料聚合成一條資料,再進行map操作 當沒辦法聚合成一條資料時 增大key粒度,從而key的數量會減少,但是每個key對應的資料量會增大,key之間的資料量差異可能會減少。2 過濾導致傾斜的key 3 提高shu...