Hive优化----系统评估reduce数为1的MR Job优化

本文介绍了针对Hive中reduce数估算不合理导致任务执行缓慢的问题,通过云霄飞车项目对reduce数为1的MR Job进行优化。优化策略包括判断reduce数是否在编译时确定,以及重新估算reduce数,从而提高任务执行效率。通过设置`mapred.reduce.tasks`为200,实验结果显示性能提升了约3倍。
摘要由CSDN通过智能技术生成
名词解释:

云霄飞车:hive本身对MR Job reduce数估算不合理,导致reduce分配过少,任务运行很慢,云霄飞车项目主要对hive本身reduce数的估算进行优化。

map_input_bytesmap输入文件大小,单位:bytes

map_output_bytesmap输出文件大小,单位:bytes

 

优化背景

云霄飞车一期存在如下问题:只能优化reduce>1MR Job。原因在于无法确定reduce数为1是编译时确定还是根据map输入估算的结果。对于编译时确定,不能进行优化,否则导致结果错误;对于后者,需要进行优化,特别是对于map_output_bytes远大于map_input_bytes的情况,不进行优化将导致reduce执行过慢。

 

解决方法:

确定reduce数为1是编译时确定还是根据map_input_bytes估算得到的。具体实现方式:编译完成后,收集编译时确定的reduce数为1Job;云霄飞车优化时,如果此Jobreduce数为1不在收集的Job集合里面,则此Job不是编译时确定的reduce,则进行优化,否则不优化。

 

优化算法:

hive估算reduce的逻辑如下:

  1. 判断Job是否需要reduce操作,如不需要reduce操作,reduce数设置为0,跳出;如需要reduce操作,执行步骤(2);
  2. 判断Job是否在编译时确定reduce数为1,如编译确定为1reduce数设置为1
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值