1. 程式人生 > >Hadoop皇-----冠---體育源碼搭建與數據傾斜及解決辦法

Hadoop皇-----冠---體育源碼搭建與數據傾斜及解決辦法

發送 最優 partition key 執行 體育 適用於 並行計算 數據切分

1.增加jvm內存,這適用於第一種情況(唯一值非常少,極少數值有非常多的記錄值(唯一值少於幾千)),這種情況下,皇------冠--------體育源碼搭建QQ:2152876294 網址diguaym.com往往只能通過硬件的手段來進行調優,增加jvm內存可以顯著的提高運行效率。
2.增加reduce的個數,這適用於第二種情況(唯一值比較多,這個字段的某些值有遠遠多於其他值的記錄數,但是它的占比也小於百分之一或千分之一),我們知道,這種情況下,最容易造成的結果就是大量相同key被partition到一個分區,從而一個reduce執行了大量的工作,而如果我們增加了reduce的個數,這種情況相對來說會減輕很多,畢竟計算的節點多了,就算工作量還是不均勻的,那也要小很多。
3.自定義分區,這需要用戶自己繼承partition類,指定分區策略,這種方式效果比較顯著。
4.重新設計key,有一種方案是在map階段時給key加上一個隨機數,有了隨機數的key就不會被大量的分配到同一節點(小幾率),待到reduce後再把隨機數去掉即可。
5.使用combinner合並,combinner是在map階段,reduce之前的一個中間階段,在這個階段可以選擇性的把大量的相同key數據先進行一個合並,可以看做是local reduce,然後再交給reduce來處理,這樣做的好處很多,即減輕了map端向reduce端發送的數據量(減輕了網絡帶寬),也減輕了map端和re
淺析 Hadoop 中的數據傾斜
最近幾次被問到關於數據傾斜的問題,這裏找了些資料也結合一些自己的理解.?
在並行計算中我們總希望分配的每一個task 都能以差不多的粒度來切分並且完成時間相差不大,但是集群中可能硬件不同,應用的類型不同和切分的數據大小不一致總會導致有部分任務極大的拖慢了整個任務的完成時間,硬件不同就不說了,應用的類型不同其中就比如page rank 或者data mining 裏面一些計算,它的每條記錄消耗的成本不太一樣,這裏只討論關於關系型運算的(一般能用SQL表述的) 數據切分上的數據傾斜問題.
hadoop 中數據傾斜會極大影響性能的一個背景是mapreduce 框架中總是不分條件的進行sort . 在通用情況下map sort+ partition +reduce sort 可以得到結果,但是這個過程不一定是最優的. 對於關系型計算,其中數據傾斜影響最大的地方在reduce 的sort , reduce 處理的數據量的大小如果超過給定的reduce jvm?
的大小的2倍不到的閾值的時候(這個閾值是我猜測的,具體以實際監控運行情況為準),reduce 端會發生multi-pass merge sort 的情況, 這個時候觀察這些運行較慢的reduce task 的metrics 會發現reduce 跟IO 相關的metrics會比其他reduce 大很多.?

Hadoop皇-----冠---體育源碼搭建與數據傾斜及解決辦法