hive.auto.convert.join
、hive.mapjoin.smalltable.filesize
和 hive.mapjoin.smalltable.filesize.check
。MapReduce 常用的调优参数
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启动前配置参数
最小分配内存
配置参数: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.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.xml
或mapredsite.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
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复