【调优指导】TEZ常见调优参数
【摘要】 Hive on Tez常用调优参数
一、设置引擎为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;这样有利于执行计划的优化。
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)