Tez优化参数设置

本文详细介绍了Tez在Hadoop环境中的内存优化,包括AM和Container的内存及JVM参数设置,如tez.am.resource.memory.mb和hive.tez.container.size等。此外,还涉及了Hive的Map Join参数,如tez.runtime.io.sort.mb和hive.auto.convert.join.noconditionaltask.size。同时讨论了Mapper/Reducer的优化策略,包括Mapper数、Reducer数的设置以及Shuffle阶段的相关参数。提供了一套完整的Tez性能调优方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tez内存优化

1、AM、Container大小设置

tez.am.resource.memory.mb

参数说明:Set tez.am.resource.memory.mb tobe the same as yarn.scheduler.minimum-allocation-mb the YARNminimum container size.

hive.tez.container.size

参数说明:Set hive.tez.container.size to be the same as or a small multiple(1 or 2 times that) of YARN container size yarn.scheduler.minimum-allocation-mb but NEVER more than yarn.scheduler.maximum-allocation-mb.

2、AM、Container JVM参数设置

tez.am.launch.cmd-opts 

默认值:80%*tez.am.resource.memory.mb

参数说明:一般不需要调整

hive.tez.java.ops

    默认值:80%*hive.tez.container.size

       参数说明:Hortonworks建议“–server –Djava.net.preferIPv4Stack=true–XX:NewRatio=8 –XX:+UseNUMA –XX:UseG1G”

tez.container.max.java.heap.fraction

    默认值:0.8

     &nbs

### 配置Hive以使用Tez引擎 为了使Hive能够利用Tez作为执行引擎,需确保已安装并配置好Apache Tez。完成环境准备之后,在Hive中启用Tez可以通过设置`hive.execution.engine`参数来实现[^1]。 ```sql SET hive.execution.engine=tez; ``` 此命令告知Hive采用Tez而非默认的MapReduce框架来进行SQL查询处理。 #### 调整Mapper和Reducer的数量 对于优化基于Tez的任务性能而言,合理设定Mapper与Reducer数目至关重要。这不仅影响到作业的整体效率也关系着集群资源的有效利用率。通过调整如下几个关键属性可以达到更好的效果: - `tez.grouping.max-size`: 控制输入文件分片的最大尺寸,默认值通常为1GB左右;减小该数值会增加Mapper实例数量。 - `tez.grouping.min-size`: 设定最小切分大小,防止过多的小型片段产生不必要的开销,默认大约是64MB。 - `hive.tez.container.size`: 定义每个容器所需的内存总量,适当增大有助于加速计算密集型操作。 - `hive.tez.java.opts`: 指明JVM启动选项字符串,比如-Xmx用于指定堆空间上限。 - `tez.runtime.io.sort.mb`: 排序缓冲区所占内存量,提高其值能加快排序速度但占用更多RAM。 - `num reducers`: 可直接通过`set mapred.reduce.tasks=<number>`指令手动指定期望的Reducer个数,不过更推荐依赖于数据集特性自适应决定这一参数。 上述配置项均可以在提交具体查询前临时修改生效,也可以写入全局配置文件使得变更长期有效[^2]。 #### SQL层面的调优建议 除了硬件资源配置外,合理的SQL编写同样重要。开启自动转换Join功能可以让系统尝试将标准JOIN语句转化为更加高效的MAP JOIN形式,从而提升运行效能。例如: ```sql SET hive.auto.convert.join=true; SET hive.mapjoin.smalltable.filesize=25000000; -- 小表阈值设为25MB SET hive.auto.convert.join.noconditionaltask=true; SET hive.auto.convert.join.noconditionaltask.size=52428800; -- 大表阈值设为50MB ``` 以上设置允许当参与连接运算的一方满足特定条件时(即体积小于给定界限),优先考虑使用哈希联接方式代替传统嵌套循环算法[^3]。 另外,针对涉及分区表的操作场景,应激活动态分区模式以便更好地支持多级目录结构下的高效插入动作: ```sql SET hive.exec.dynamic.partition.mode=nonstrict; ``` 此举放宽了对目标路径存在的严格校验逻辑,简化ETL流程中的某些环节[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值