如何优化Hive中的MapReduce任务与MapJoin性能?

MapReduce MapJoin 在 Hive 中的常用配置参数包括 hive.auto.convert.joinhive.mapjoin.smalltable.filesizehive.mapjoin.smalltable.filesize.check

MapReduce 常用的调优参数

如何优化Hive中的MapReduce任务与MapJoin性能?

1、资源相关参数

Map任务内存上限

配置参数mapreduce.map.memory.mb

参数说明:一个Map Task可使用的资源上限(单位:MB),默认为1024,如果Map Task实际使用的资源量超过该值,则会被强制杀死。

Reduce任务内存上限

配置参数mapreduce.reduce.memory.mb

参数说明:一个Reduce Task可使用的资源上限(单位:MB),默认为1024,如果Reduce Task实际使用的资源量超过该值,则会被强制杀死。

Map任务CPU核心数

配置参数mapreduce.map.cpu.vcores

参数说明:每个Map Task可使用的最多cpu core数目,默认值: 1。

Reduce任务CPU核心数

配置参数mapreduce.reduce.cpu.vcores

参数说明:每个Reduce Task可使用的最多cpu core数目,默认值: 1。

Reduce任务并行复制数

配置参数mapreduce.reduce.shuffle.parallelcopies

参数说明:每个Reduce去Map中取数据的并行数,默认值是5。

Shuffle合并百分比

配置参数mapreduce.reduce.shuffle.merge.percent

参数说明:Buffer中的数据达到多少比例开始写入磁盘,默认值0.66。

Reduce Shuffle输入缓冲区百分比

配置参数mapreduce.reduce.shuffle.input.buffer.percent

参数说明:Buffer大小占Reduce可用内存的比例,默认值0.7。

2、YARN启动前配置参数

如何优化Hive中的MapReduce任务与MapJoin性能?

最小分配内存

配置参数yarn.scheduler.minimumallocationmb

参数说明:给应用程序Container分配的最小内存,默认值:1024。

最大分配内存

配置参数yarn.scheduler.maximumallocationmb

参数说明:给应用程序Container分配的最大内存,默认值:8192。

最小分配虚拟核心数

配置参数yarn.scheduler.minimumallocationvcores

参数说明:每个Container申请的最小CPU核数,默认值:1。

最大分配虚拟核心数

配置参数yarn.scheduler.maximumallocationvcores

参数说明:每个Container申请的最大CPU核数,默认值:32。

最大物理内存

配置参数yarn.nodemanager.resource.memorymb

参数说明:给Containers分配的最大物理内存,默认值:8192。

Hive中的MapJoin配置参数

1、自动转换Map Join

配置参数hive.auto.convert.join

参数说明:表示是否自动把任务转为 map join,默认该配置为 true,当一个表的大小小于 25 MB(配置参数:hive.mapjoin.smalltable.filesize)时,表之间的 join 会被自动转成 map join。

2、无条件任务合并

配置参数hive.auto.convert.join.noconditionaltask

参数说明:是否将多个 map join 合并为一个,默认为 true,多个 mapjoin 转换成 1 个时,所有小表的文件大小总和的最大值由hive.auto.convert.join.noconditionaltask.size 配置项控制。

3、本地任务最大内存使用率

如何优化Hive中的MapReduce任务与MapJoin性能?

配置参数hive.mapjoin.localtask.max.memory.usage

参数说明:将小表转成 hashtable 的本地任务的最大内存使用率,默认0.9。

4、跟随group by任务的本地任务最大内存使用率

配置参数hive.mapjoin.followby.gby.localtask.max.memory.usage

参数说明:mapjoin 后面紧跟着一个 group by 任务,这种情况下本地任务的最大内存使用率,默认是0.55。

5、内存检查行数

配置参数hive.mapjoin.check.memory.rows

参数说明:localtask 每处理完多少行,就执行内存检查,默认为 100000。

FAQs

1、Q: 在MapReduce中,如何设置Map任务的内存上限?

A: 可以通过配置文件mapreddefault.xmlmapredsite.xml 中的mapreduce.map.memory.mb 参数来设置Map任务的内存上限,设置为2GB,可以在配置文件中添加以下内容:

“`xml

<property>

<name>mapreduce.map.memory.mb</name>

<value>2048</value>

</property>

“`

2、Q: Hive中的Map Join有哪些局限性?

A: Hive中的Map Join有以下几个局限性:

1. 不能把全连接(full outer join)转换成 map join。

2. 只能把左连接或右连接转换成 map join,且参与连接的小表的大小必须小于 25MB。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1100105.html

(0)
未希的头像未希新媒体运营
上一篇 2024-09-29 05:41
下一篇 2024-09-29 05:42

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入