文档章节

关于hive中的reduce个数的设置。

o
 osc_1ee7cxmx
发布于 2018/08/06 17:33
字数 555
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

我们都知道在进行hive的查询的时候,设置合理的reduce个数能够使计算的速度加快。

具体的提高速度的方法有下面这些:

(1)     hive.exec.reducers.bytes.per.reducer(每个reduce任务处理的数据量,默认为1000^3=1G) 

       hive.exec.reducers.max(每个任务最大的reduce数,默认为999)

我们公司的集群当中的这两个参数的设置如图所示。

在数据进入到reduce中的时候,在map的输入的时候总的数据量小于这个数的时候,会交给一个reduce去处理。

(2)set mapred.reduce.tasks = 15;

也可以通过设置reduce的个数进行reduce端的设置。截图如下:

 

虽然设置了reduce的个数看起来好像执行速度变快了。但是实际并不是这样的。

同map一样,启动和初始化reduce也会消耗时间和资源,

另外,有多少个reduce,就会有多少个输出文件,如果生成了很多小文件,那这些小文件作为下一次任务的输入,则也会出现小文件过多的问题。

 

 对于整个sql的优化可以从下面几个步骤去优化:

(1)尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段

(2)单个SQL所起的JOB个数尽量控制在5个以下

(3)慎重使用mapjoin,一般行数小于2000行,大小小于1M(扩容后可以适当放大)的表才能使用,小表要注意放在join的左边。否则会引起磁盘和内存的大量消耗

(4)写SQL要先了解数据本身的特点,如果有join ,group操作的话,要注意是否会有数据倾斜

    set hive.exec.reducers.max=200;

   set mapred.reduce.tasks= 200;---增大Reduce个数

   set hive.groupby.mapaggr.checkinterval=100000 ;--这个是group的键对应的记录条数超过这个值则会进行分拆,值根据具体数据量设置

(5) 如果union all的部分个数大于2,或者每个union部分数据量大,应该拆成多个insert into 语句,这样会提升执行的速度。

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

hbase2.1.9 centos7 完全分布式 搭建随记

hbase2.1.9 centos7 完全分布式 搭建随记 这里是当初在三个ECS节点上搭建hadoop+zookeeper+hbase+solr的主要步骤,文章内容未经过润色,请参考的同学搭配其他博客一同使用,并记得根据实际情...

osc_4tfw1dxv
28分钟前
11
0
zookeeper3.5.5 centos7 完全分布式 搭建随记

zookeeper3.5.5 centos7 完全分布式 搭建随记 这里是当初在三个ECS节点上搭建hadoop+zookeeper+hbase+solr的主要步骤,文章内容未经过润色,请参考的同学搭配其他博客一同使用,并记得根据实...

osc_6jhxf9ab
30分钟前
19
0
steam夏日促销悄然开始,用Python爬取排行榜上的游戏打折信息

前言 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,...

osc_ur9mmbck
30分钟前
16
0
python 里 certifi 库的作用

python 里 certifi 库的作用 安装了certifi之后,和requests库一样也有一个cacert.pem,可以用编辑器打开cacert.pem,里面包含了很多可信任知名公司的证书/公钥 库的路径,我这里是python2.7...

osc_1x6ycmfm
32分钟前
11
0
干掉"ZooKeeper",阿里为什么不用ZK做服务发现?

  20大进阶架构专题每日送达   链接:yq.aliyun.com/articles/601745   2020年Java面试题库连载中   !   正文   站在未来的路口,回望历史的迷途,常常会很有意思,因为我们会不...

osc_q5m9dzk0
34分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部