mysql查看数据倾斜_深入理解hadoop数据倾斜
深入理解hadoop之數據傾斜
1、什么是數據傾斜
我們在用map /reduce程序執行時,有時候會發現reduce節點大部分執行完畢,但是有一個或者幾個reduce節點運行很慢,導致整個程序的處理時間很長,這是因為某一個key的條數比其他key多很多(有時是百倍或者千倍之多),這條key所在的reduce節點所處理的數據量比其他節點就大很多,從而導致某幾個節點遲遲運行不完。這種現象就是因為key分布不均勻、散度不夠導致的,也就是我們所說的數據傾斜。
2、數據傾斜產生的原因
在hive上執行join,group by,count distinct等操作的時候可能會發現ruduce階段卡在99.99%,一直99.99%不能結束,查看任務監控頁面,發現只有少量(1個或幾個)reduce子任務未完成;這里進一步查看進程日志或者WEBUI會發現:有一個多幾個reduce卡住;各種container報錯OOM,讀寫的數據量極大,至少遠遠超過其它正常的reduce ,伴隨著數據傾斜,會出現任務被kill等各種詭異的表現。一般情況下Hive的數據傾斜,都發生在Sql中Group和On上,而且和數據邏輯綁定比較深。
3、數據傾斜解決的辦法
1)hive.groupby.skewindata變量,這個變量是用于控制負載均衡的。當數據出現傾斜時,如果該變量設置為true,那么Hive會自動進行負載均衡。
2)mapjoin方式
3)count distinct的操作,先轉成group,再count
4)hive.groupby.skewindata=true
5)left semi jioin的使用
6)設置map端輸出、中間結果壓縮
總結
以上是生活随笔為你收集整理的mysql查看数据倾斜_深入理解hadoop数据倾斜的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flex 会使div撑满_如何讲清楚Fl
- 下一篇: mysql aes java解密_加密/