hive設置reduce的最大值

hive.exec.reducers.max(默認爲999) 計算reducer數的公式很簡單: N=min(參數2,總輸入數據量/參數1) 通常情況下,有必要手動指定reducer個數。考慮到map階段的輸出數據量通常會比輸入有大幅減少,因此即使不設定reducer個數,重設參數2還是必要的。依據Hadoop的經驗,可以將參數2設定爲0.95*(集羣中TaskTracker個數)。 正確的reduce任務的 個數應該是 0.95或者1.75 ×(節點數 ×mapred.tasktracker.tasks.maximum參數值)

mapred.tasktracker.map.tasks.maximum 一般跟物理核數有關

如果有8個核,最好有16個線程或者進程,這樣,每兩個進程競爭一個核,系統CPU利用率最高
然後,每個tasktracker還有一些其他服務線程(Hadoop自帶的),需要爲這些進程預留1~2個核比較好
所以,如果有8個核,可以有2*8-2=14個task
這14個task,可按照你自己需求分,如:8個map?slot,6個reduce?slot
實際上,只考慮核是不行的,還需要考慮內存,磁盤等
如果你有8個核,但只有1G內存,如果跑16個task,則每個task只有64MB內存,你的task能跑起來嗎?


發佈了86 篇原創文章 · 獲贊 23 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章