Hive优化(2)之系统评估reduce数为1的MR Job优化

本文介绍了Hive中针对reduce数为1的MapReduce任务(MR Job)进行性能优化的方法。通过分析云霄飞车项目,揭示了Hive在估算reduce数时的问题,提出了优化算法,包括判断reduce数是否编译时确定以及根据输入文件大小重新估算reduce数。通过实例展示,调整reduce任务数量显著提升了作业执行效率。
摘要由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,跳出;如需要reduce操作,执行步骤(3);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值