hive 调优(三)tez优化

本文详细介绍了在Hive使用Tez引擎时的优化策略,包括AM和Container的内存设置、MapReduce优化、MapJoin参数调整以及Container重用设置。通过调整tez.am.resource.memory.mb、hive.tez.container.size等关键参数,可以有效提升Hive查询性能。

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

我们采用亚马逊emr构建的集群,用hive查询的时候报错,FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask,查看了下面的参数,挺有帮助的 我是设置了这个参数set hive.tez.auto.reducer.parallelism=true;

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%*t

### Hive性能方法及优化技巧 #### 基本工具使用 为了有效地进行Hive性能,掌握基本工具有助于理解查询执行计划和统计数据。`EXPLAIN`命令可用于查看SQL语句转化为MapReduce作业后的逻辑执行计划,而`ANALYZE TABLE`则帮助收集表的统计信息,这对于优化器做出更好的决策至关重要[^1]。 ```sql -- 使用 EXPLAIN 查看 SQL 执行计划 EXPLAIN SELECT * FROM table_name; -- 收集表的统计信息 ANALYZE TABLE table_name COMPUTE STATISTICS; ``` #### 表设计层面优化 针对表结构的设计也存在多种提升性能的方法: - **分区**:通过创建基于日期或其他常用过滤条件字段上的分区,能够显著减少扫描的数据量。 - **分桶**:当数据分布较为均匀时,采用分桶技术可进一步细化粒度,便于后续处理阶段快速定位所需记录。 - **索引**:虽然Hive中的索引机制相对简单,但在特定场景下仍能发挥一定作用,比如加速点查操作等。 这些措施有助于构建高效的数据访问路径,降低I/O开销。 #### 数据存储方面优化 选择合适的文件格式以及启用压缩算法都是不容忽视的重要环节: - 文件格式的选择直接影响到读写效率,Parquet、ORC这类列式存储格式相比传统的TextFile有着更高的解析速度与更低的空间占用率; - 合理运用Gzip/BZip2/Zlib等通用压缩库可以在不影响计算密集型任务的前提下大幅缩减磁盘空间需求,并间接加快传输速率。 此外,整块大小参数同样有利于平衡随机存取延迟与时延敏感的应用程序表现。 #### 作业层面上的技术手段 最后,在提交给集群运行之前还可以考虑如下几个维度来进行最终微: - 开启本地模式可以让小型任务绕过分布式框架直接利用单机资源完成运算过程; - JVM重用允许同一进程内的多个线程共享已加载类实例,节省初始化时间消耗; - 设置并行度参数控制并发执行的任务数量,防止因过度抢占而导致整体吞吐下降; - Fetch模式适用于仅需返回少量结果集的情形,此时不必启动完整的Shuffle流程即可获取目标数据片段; - Join优化涉及广播变量传递小表至大表所在节点参与关联匹配的过程,有效规避不必要的网络交互损耗; - 更换默认执行引擎(Tez/Spark),借助更先进的度算法实现更高层次的整体效能跃升; - 利用内置或自定义优化器插件对复杂表达式树实施重构变换,挖掘潜在提速机会。 #### 遵循适时的原则 值得注意的是,不应盲目追求极致性能指标,而是要根据实际情况灵活把握时机。过早介入可能造成额外负担却收效甚微,反而影响项目进度安排。因此建议先确保基础架构稳定可靠之后再逐步探索深层次改进方案[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值