数仓工具—Hive进阶之优化reduce任务数量(10)

数仓工具—Hive进阶之优化reduce任务数量(10),第1张

数仓工具—Hive进阶之优化reduce任务数量(10) 优化 reduce 任务数量

前面我们介绍过了,如何控制map 的数量,以及为什么要控制map 的数量,具体可以参考前面的文章,Hive进阶之优化map任务数量,最终我们得到了一个结论,那就是使大数据量利用合适的map数;使单个map任务处理合适的数据量,这个就可以作为我们调节map 任务数的原则。

今天我们看一下如何优化 reduce 任务数量

为什么要控制reduce 数量

其实为什么要控制reduce 数量和为什么要控制map 数量是一样的,reduce 数量太少,每个reducer 处理的数据太多就会导致任务运行太慢,而且还会经常出现数据倾斜。

同理如果reduce 数量太多,就会导致每个reducer 的启动时间远大于数据处理时间,从而导致资源浪费,也就是reduce的个数设置其实对执行效率有很大的影响:

  1. 如果reduce太少: 如果数据量很大,会导致这个reduce异常的慢,从而导致这个任务不能结束,也有可能会OOM
  2. 如果reduce太多: 产生的小文件太多,合并起来代价太高,namenode的内存占用也会增大。
影响reduce 数量的参数

我们每次执行hive的hql时,shell里都会提示一段话,其实从这段话里面我们就能大致知道如何调节reduce的数量

Number of reduce tasks not s

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5435760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存