如何优化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

相关推荐

  • 如何优化MySql的防护配置以提高数据库性能?

    优化MySql的防护配置,包括设置防火墙规则、更新安全补丁和强化用户权限管理。

    2024-10-10
    054
  • 如何将本地MySQL数据库无缝迁移到RDS for MySQL?

    将本地MySQL数据库迁移到阿里云RDS for MySQL,通常涉及以下步骤:,,1. **备份本地数据库**:使用mysqldump工具导出本地MySQL数据库的结构和数据。命令如下:, “bash, mysqldump u 用户名 p 数据库名 ˃ 数据库名.sql, `,,2. **创建RDS实例**:在阿里云控制台中创建一个新的RDS for MySQL实例,选择适合的配置和存储空间。,,3. **配置安全组和白名单**:确保RDS实例的安全组允许从本地机器进行连接,添加本地IP地址到白名单中。,,4. **导入数据到RDS**:使用mysql命令行工具将之前导出的SQL文件导入到RDS实例中。命令如下:, `bash, mysql h RDS实例地址 P 端口号 u 用户名 p 数据库名˂ 数据库名.sql, “,,5. **验证迁移结果**:通过应用程序或直接使用SQL查询,确保数据已成功迁移并保持一致性。,,这些步骤可以帮助你顺利地将本地MySQL数据库迁移到阿里云RDS for MySQL。

    2024-09-30
    030
  • 如何进行MapReduce2参数调优以提升性能?

    MapReduce2中的参数调优是优化作业执行效率和资源利用率的关键步骤。通过合理设置如mapreduce.job.reduces、mapreduce.map.memory.mb等参数,可以显著提升数据处理速度并减少作业运行时间。

    2024-08-20
    026

发表回复

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

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入