TEZ参数调优

yarn-site.xml

<property>
  <name>mapreduce.map.memory.mb</name>
  <value>3096</value>
</property>

hive-env.sh

export HIVE_METASTORE_HEAPSIZE=4096
export HIVE_SERVER2_HEAPSIZE=4096
export HADOOP_HEAPSIZE=4096

map reduce数量限制相关参数

set tez.grouping.split-count=300;

set hive.exec.reducers.max=300;

一、设置引擎为Tez参数:

参数

参数说明

解释

hive.execution.engine

执行引擎选择

使用tez引擎时,此值设置为tez

yarn.timeline-service.enabled

是否使用timeline服务

使用timeline时,执行hive on tez运行日志可在tez界面查看,此值为true

hive.tez.log.level

设置Tez Task的日志级别

默认是INFO日志,如果为了定位问题可设置DEBUG级别

二、内存相关调优

参数

参数说明

解释

tez.am.resource.memory.mb

Application Master分配的container大小,单位为M

AM的内存

tez.am.launch.cmd-opts

Tez AppMaster进程启动期间提供的命令行选项。不要在这些启动选项中设置任何Xmx或Xms,以便Tez可以自动确定他们

不需要主动设置

hive.tez.container.size

Tez AppMaster向RM申请的container大小,单位M

不需要主动设置TEZ的AppMaster占用的container大小由TEZ自动跳转,但是向AM申请出来的container大小则需本参数管理

hive.tez.java.opts

container进程启动期间提供的命令行选项。可以在默认参数后续添加内存选项

该参数大小一般为hive.tez.container.size的80%,不建议直接在该参数中直接添加Xmx/Xms,而是使用下面参数调参opts大小

tez.container.max.java.heap.fraction

如果hive.tez.java.opts参数中没有设置Xmx/Xms的值,值的大小为0.8*hive.tez.container.size

建议使用该值来调整opts

tez.runtime.io.sort.mb

排序输出时的排序缓冲区大小,单位M

可以将tez.runtime.io.sort.mb设置为hive.tez.container.size的40%,但该值不能超过2GB

hive.auto.convert.join.noconditionaltask.size

如果hive.auto.convert.join.noconditionaltask已关闭,则此参数不会生效。但是,如果它打开,并且n路连接的表/分区的n-1的大小总和小于此大小,连接直接转换为mapjoin(没有条件任务)。默认值为10MB

该值能将多个Join的表的n-1个表合成一个大表,然后将该表转为mapjoin可以将该值设置为hive.tez.container.size的1/3

三、task调优

参数

参数说明

解释

tez.grouping.min-size

分组拆分大小的下限

单位字节,默认50M

tez.grouping.max-size

分组拆分大小的上限

单位字节,默认256MB

tez.grouping.split-count

指定分组的数据量,指定之后忽略前两个参数

个数

hive.tez.auto.reducer.parallelism

打开Tez的reducer parallelism特性。设置true后,tez会在运行时根据数据大小动态调整reduce数量

最好使用TEZ提供的动态调整reduce数量功能。不要使用mapred.reduce.tasks参数去直接决定reduce的个数。只有打开该参数才能使用下面的hive.tez.min.partition.factor,
hive.tez.max.partition.factor参数

hive.exec.reducers.max

任务中允许的最大reduce数量

hive.exec.reducer.bytes.per.reducer

每个reduce处理的数据量,默认值是256M

hive.tez.min.partition.factor

这两个值效果一致,增加该值就是增加reduce数量。减少该值 则减少reduce数量

reduce数量由三个变量控制:hive.exec.reducers.bytes.per.reducer,
hive.tez.min.partition.factor,
hive.tez.max.partition.factor。
假设reduce任务估算出的数据里为190944bytes,则maxReduces=min(999,max(190944/256000000,1)*2)=2

hive.tez.max.partition.factor

这两个值效果一致,增加该值就是增加reduce数量。减少该值 则减少reduce数量

reduce数量由三个变量控制:hive.exec.reducers.bytes.per.reducer,
hive.tez.min.partition.factor,
hive.tez.max.partition.factor。
假设reduce任务估算出的数据里为190944bytes,则maxReduces=min(999,max(190944/256000000,1)*2)=2

tez.shuffle-vertex-manager.min-src-fraction

这两个值效果一致,增加该值则reduce stage启动晚一些。减少该值则reduce stage启动早一些

想让所有map都执行完才开始执行reduce,可以将这两个值都设置为1

tez.shuffle-vertex-manager.max-src-fraction

这两个值效果一致,增加该值则reduce stage启动晚一些。减少该值则reduce stage启动早一些

想让所有map都执行完才开始执行reduce,可以将这两个值都设置为1

四、其他调优:

参数

参数说明

解释

hive.cbo.enable

是否开始CBO

开启CBO有利于优化执行计划

hive.exec.parallel

是否并发调度各stage

为加速执行可以设置此值为true,HS会并发调度兄弟节点的stage

hive.merge.tezfiles

是否合并tez文件

可以设置此值为true,用于合并引擎文件,小文件时可以加速

tez.am.session.min.held-containers

预留最少的container数量,空闲占用,为下一个DAG提供快速响应时间

此值可以设置适当的保留数值,建议10--100

hive.auto.convert.join

是否开启自动转换mapjoin

开启时会自动根据数据大小选择是否走mapjoin

hive.mapjoin.hybridgrace.hashtable

是否使用混合的操作完成mapjoin

默认值时开启,此值仅为tez引擎使用

tez.runtime.pipelined.sorter.lazy-allocate.memory

对Tez任务中是否开启软引用的内存惰性分配

可以设置成true用于加速再缓存中建立数据的软连接访问数据

hive.prewarm.enabled

可以在作业启动前开启container预热功能

可以设置次参数为true开启预热

hive.prewarm.numcontainers

开启预热的container数

预热需要几秒钟,对于短暂会话会比较好,尤其是在查询涉及reduce阶段。但是,如果hive.prewarm.numcontainers的值高于集群中可用的值,则该过程最多需要30s。因此谨慎使用预热

hive.stats.autogather

是否开启自动收集统计信息

可以根据analyze的结果优化执行计划

hive.stats.fetch.column.stats

是否开启获取列的统计信息

可以根据analyze的结果优化执行计划

hive.compute.query.using.stats

是否开启计算查询使用表的统计信息

可以根据analyze的结果优化执行计划

hive.optimize.skewjoin

是否开启join的数据倾斜优化

根据业务数据的场景进行判断是否存在由于join导致的数据倾斜

hive.groupby.skewindata

是否开启groupby的数据倾斜优化

根据业务数据的场景进行判断是否存在由于groupby导致的数据倾斜

tez.session.am.dag.submit.timeout.secs

Tez的session模式下,AM退出前等待客户端提交任务的超时时间

默认5分钟,此时间到期后还未提交任务,AM将退出

其他调优建议:

可以通过explain观察执行计划,对执行计划适当调优,比如对表先进行统计信息收集:ANALYZE TABLE 表名 COMPUTE STATISTAICS;这样有利于执行计划的优化。




TEZ参数调优
https://www.hechunyu.com/archives/1698221907154
作者
chunyu
发布于
2023年06月14日
许可协议