hive中设置maptask和reducetask的数量

maptask个数取决于:split逻辑切片的个数有关, 在mapreduce中,split逻辑切片和表中文件大小和文件个数、blockSize等参数有关。

hive底层读取表默认使用的是CombineHiveInputFormat,会对小文件进行合并,

CombineHiveInputFormat底层逻辑切片计算的过程如下:

1. 如果文件大小大于split.maxsize的2倍,则形成一个独立的逻辑切片

2. 如果文件大小大于split.maxsize,但是小于split.maxsize的2倍,则拆分成两个平均大小的虚拟存储

3. 如果文件大小小于split.maxsize,则形成一个虚拟存储

4. 判断虚拟存储的文件大小是否大于split.maxSize,如果大于等于则形成一个逻辑切片 如果虚拟存储的文件大小小于split.maxSize,则和下一个虚拟文件进行合并,直到大于split.maxsize,共同形成一个切片。

例如有三个文件大小,当参数设置为4M时

set mapreduce.input.fileinputformat.split.maxsize=4M

文件切分情况:

文件1:2M

文件2:6M [3M + 3M]

文件3:9M [4M + 2.5M + 2.5M ]

reduceTask个数取决于自己设置的参数值set mapreduce.job.reduces

set mapreduce.job.reduces=3

当参数set mapreduce.job.reduces=-1时

根据此公式进行选择  N=min(参数2,总输入数据量/参数1)

参数1:每个Reduce处理的数据量默认是256MB

set hive.exec.reducers.bytes.per.reducer=256000000

参数2:每个任务最大的reduce数,默认为1009

set hive.exec.reducers.max=1009 

举例:假如数据量是512M 默认启动: 512/256= 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值