Hive性能优化的任务配置

Hive有些参数是可以配置的,针对不同的任务,可以做不同的任务配置,加上这几个配置,对任务执行有很大的影响,能快速提升执行速度。

1、reduce的个数控制

如果处理大量的数据,比如几百GB,但是只有默认的50个reducer,那么时间会发现全部耗费在reduce阶段的copy数据阶段;

这时候如果能人工干预,增大reducer个数,就会实现多节点数据复制,不会让copy阶段的网卡速度成为瓶颈;

reduce的个数控制主要有两个set属性:

set hive.exec.reducers.bytes.per.reducer=1000000000;
set mapreduce.job.reduces=3000;

第一个参数设置每个reduce节点处理1GB数据,但是我发现有时候没有生效;所以第二个参数也可以设置下,这里设置使用3000个节点处理reduce,我这边是生效了。

2、map和reduce的并发数控制

或者称为:同时执行map和reduce的数目控制

SET mapred.job.map.capacity = 1000;
SET mapred.job.reduce.capacity = 1000;

这两个参数,设置并发度为1000;如果不设置,默认的是50或者100,那么你自己设置了第一步的reduce个数控制,把reduce个数提到3000,可是每次最多执行50个,也会发现是瓶颈。

通过几组参数,会发现个数、并发度都很高,真正实现的是大数据量高并行度的处理,当然这也要求集群有足够的资源,不然卡在资源瓶颈上还是无法告诉并行执行。

发布了242 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/peishuai1987/article/details/89947213