hive引數調優彙總
阿新 • • 發佈:2019-02-07
參考:http://blog.csdn.net/beckham008/article/details/23741151?utm_source=tuicool&utm_medium=referral
1.設定合理solt數
mapred.tasktracker.map.tasks.maximum 每個tasktracker可同時執行的最大map task數,預設值2。 mapred.tasktracker.reduce.tasks.maximum 每個tasktracker可同時執行的最大reduce task數,預設值1。 2.配置磁碟塊 mapred.local.dir map task中間結果寫本地磁碟路徑,預設值${hadoop.tmp.dir}/mapred/local。 可配置多塊磁碟緩解寫壓力。當存在多個可以磁碟時,Hadoop將採用輪詢方式將不同的map task中間結果寫到磁碟上。 3.配置RPC Handler數 mapred.job.tracker.handler.count作業最多允許失敗的map task比例,預設值0。 mapred.max.reduce.failures.percent
- Map 端部分聚合:
- 並不是所有的聚合操作都需要在 Reduce 端完成,很多聚合操作都可以先在 Map 端進行部分聚合,最後在 Reduce端得出最終結果。
- 基於 Hash
- 引數包括:
- hive.map.aggr = true 是否在 Map 端進行聚合,預設為True
- hive.groupby.mapaggr.checkinterval =100000 在 Map 端進行聚合操作的條目數目
- 有資料傾斜的時候進行負載均衡
- hive.groupby.skewindata = false
- 當選項設定為 true,生成的查詢計劃會有兩個 MR Job。第一個 MR Job 中,Map 的輸出結果集合會隨機分佈到Reduce 中,每個 Reduce 做部分聚合操作,並輸出結果,這樣處理的結果是相同的 Group By Key有可能被分發到不同的 Reduce 中,從而達到負載均衡的目的;第二個 MR Job 再根據預處理的資料結果按照 Group ByKey 分佈到 Reduce 中(這個過程可以保證相同的 Group By Key 被分佈到同一個 Reduce中),最後完成最終的聚合操作。