hive on tez 错误记录

本文详细记录了在使用Hive on Tez时遇到的三种错误及解决方法。包括因内存不足导致的Container被杀,Hadoop版本不匹配引发的NoSuchFieldError,以及Hive执行引擎配置问题产生的Execution Error。通过调整Tez配置,更新Hadoop依赖,配置Hive和YARN的环境变量等措施,成功解决了问题。

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

 

1、执行过程失败,报 Container killed on request. Exit code is 143   

如下图:

 

 

分析:造成这种原因是由于总内存不多,而容器在jvm中占比过高,修改tez-site.xml文件,添加如下配置:

<property>
        <name>tez.container.max.java.heap.fraction</name>
        <value>0.2</value>   #调低内存占比,默认是0.8(也就是80%)
</property>

 2、ERROR [main] exec.TaskRunner: Error in executeTask java.lang.NoSuchFieldError: DEFAULT_MR_AM_ADMIN_USER_ENV

分析:

  • hadoop版本与tez所带的hadoop版本不一致。
  • 没有配置tez的类路径或者配置失效。

解决:

  • 第一种情况,删除tez的lib目录下的hadoop包,然后拷贝hadoop lib下的hadoop包过去。(参考上篇hive on tez)
  • 第二种情况,在hadoop-env.sh配置环境变量 或者拷贝tez目录或者tez的lib目录下的.jar包到hive下的lib目录。
1、hadoop-env.sh配置环境变量
TEZ_CONF_DIR=/data1/hadoop/hadoop/etc/hadoop/ TEZ_JARS=/tez-0.9.0 export HADOOP_CLASSPATH=${HADOOP_CLASSPATH}:${TEZ_CONF_DIR}:${TEZ_JARS}/*:${TEZ_JARS}/lib/*
或者
2、拷贝jar文件到hive
#cp /tez-0.9.0/*.jar /data1/hadoop/hive/lib
#cp /tez-0.9.0/lib/*.jar /data1/hadoop/hive/lib
### 配置 Apache Hive 使用 Apache Tez 为了使 Hive 查询能够在 Apache Tez 上执行,需调整 `hive-site.xml` 文件中的特定属性。具体来说,应将 `hive.execution.engine` 属性设为 `tez`[^1]。 ```xml <property> <name>hive.execution.engine</name> <value>tez</value> </property> ``` 此外,在某些情况下,默认临时目录路径可能包含不必要的 `${system}` 变量前缀,这会干扰正常操作。因此建议手动移除这些变量,确保路径格式正确无误[^3]: ```xml <property> <name>hive.exec.scratchdir</name> <value>/tmp/${user.name}</value> </property> ``` ### 性能优化策略 对于基于 TezHive 执行引擎而言,合理的表设计能够显著提升查询效率。创建分区表时可以利用 `PARTITIONED BY` 子句来定义分区列;而通过指定 `CLUSTERED BY` 和 `SORT BY` 列,则可实现数据分桶与排序功能,从而进一步增强读取速度和处理效能[^2]。 #### 调整资源分配参数 适当调节 Tez 容器内存大小及其他资源配置同样有助于提高作业吞吐量。例如,可以通过修改以下配置项来进行微调: - `tez.am.resource.memory.mb`: 设置 Application Master 请求的最大内存量。 - `tez.task.resource.memory.mb`: 控制 Task 进程可用的最大物理内存空间。 - `tez.runtime.io.sort.mb`: 影响到内部排序缓冲区尺寸。 以上各项均应在集群容量范围内合理设定,以达到最佳平衡状态。 #### 启用向量化执行模式 启用向量化执行方式可以让 CPU 更高效地完成批量计算任务。只需简单开启此特性即可享受潜在性能增益: ```sql SET hive.vectorized.execution.enabled=true; ``` #### 应用统计信息收集机制 定期更新表结构元数据以及各字段分布情况的相关统计数据,以便于 CBO (Cost-Based Optimizer) 准确评估不同计划的成本差异并选出最优方案。 ```sql ANALYZE TABLE my_table COMPUTE STATISTICS FOR COLUMNS column_name; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值