hive 优化实践 案例2

背景:任务topic#report_hw_page_uv_stat#v1凌晨5点高峰期消耗vcore80000+ 执行时间1100+s

调试:下午4点 较空闲时段

 

尝试1:reduce个数

跟案例1一样,设置了set mapred.reduce.tasks=200,现在注释掉。对比结果,vcore减少70%,但时间增加了。还是vcore优先吧。

before
*********************TASK RESOURCE INFO*********************
* applicationIds:['application_1537022799650_6294348']     *
* vcoreSecondsSum:5274                                     *
* memorySecondsSum:8128009                                 *
* mapCntSum:39                                             *
* reduceCntSum:4600                                        *
* containerCntSum:4639                                     *
* numFilesSum:1                                            *
* numRowsSum:3670                                          *
* totalSizeSum:179339                                      *
* rawDataSizeSum:175669                                    *
* hiveExecuteTime:63                                       *
************************************************************

after 
*********************TASK RESOURCE INFO*********************
* applicationIds:['application_1537022799650_6294785']     *
* vcoreSecondsSum:1995                                     *
* memorySecondsSum:3025414                                 *
* mapCntSum:39                                             *
* reduceCntSum:46                                          *
* containerCntSum:85                                       *
* numFilesSum:1                                            *
* numRowsSum:3670                                          *
* totalSizeSum:179339                                      *
* rawDataSizeSum:175669                                    *
* hiveExecuteTime:110                                      *
************************************************************

 

尝试2:调整hive.exec.reducers.bytes.per.reducer

默认是600M,依次调整为300M,1G 对比效果。

300M
*********************TASK RESOURCE INFO*********************
* applicationIds:['application_1537022799650_6295502']     *
* vcoreSecondsSum:1925                                     *
* memorySecondsSum:2901075                                 *
* mapCntSum:39                                             *
* reduceCntSum:46                                          *
* containerCntSum:85                                       *
* numFilesSum:1                                            *
* numRowsSum:3670                                          *
* totalSizeSum:179339                                      *
* rawDataSizeSum:175669                                    *
* hiveExecuteTime:148                                      *
************************************************************

1G
*********************TASK RESOURCE INFO*********************
* applicationIds:['application_1537022799650_6295538']     *
* vcoreSecondsSum:1223                                     *
* memorySecondsSum:1860971                                 *
* mapCntSum:39                                             *
* reduceCntSum:46                                          *
* containerCntSum:85                                       *
* numFilesSum:1                                            *
* numRowsSum:3670                                          *
* totalSizeSum:179339                                      *
* rawDataSizeSum:175669                                    *
* hiveExecuteTime:63                                       *
************************************************************

决定调整为1G

 

尝试3: mapjoin

在reducer=1G的基础上,set hive.auto.convert.join = true启用mapjoin。可是结果变坏了。。。

mapjoin
*********************TASK RESOURCE INFO*********************
* applicationIds:['application_1537022799650_6295650']     *
* vcoreSecondsSum:1497                                     *
* memorySecondsSum:2280312                                 *
* mapCntSum:39                                             *
* reduceCntSum:36                                          *
* containerCntSum:75                                       *
* numFilesSum:6                                            *
* numRowsSum:0                                             *
* totalSizeSum:179339                                      *
* rawDataSizeSum:0                                         *
* hiveExecuteTime:75                                       *
************************************************************

分析原因,left join的大表可能不算大(比如未达到千万级),导致小表复制的代价 > 大表shuffle的代价。通常当大表比较大时,提升效果会很明显。决定不启用mapjoin。

 

总结:

1.mapjoin不一定会提升。

2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值