Hive on tez 运行报错集锦

执行 hive:直接报java.lang.ClassNotFoundException: org.apache.hadoop.mapred.MRVersion

CDH集群安装组件都ok,在Hue界面中使用Hive的HQL是都是ok的

但是直接在liunx中,打开客户端命令:

执行 hive:直接报java.lang.ClassNotFoundException: org.apache.hadoop.mapred.MRVersion

解决方案:

因为CDH的hive-site.xml配置文件中没有指向hadoop的安装目录,以下是我后加的配置相:

hive在CDH中的路径如下:/opt/cloudera/parcels/CDH/lib/hive/conf,注意,修改后记得分发集群

 

hive on tez 运行时抛 java.lang.NoClassDefFoundError: com/esotericsoftware/kryo/Serializer

解决方案:

将/opt/cloudera/parcels/C

在 Paimon 1.0.1 中使用 Hive on Tez 读取 Paimon 表时遇到 SQL 报错 `Vertex failed`,通常与任务执行过程中某些节点(Vertex)未能成功完成计算任务有关。此类错误可能由多种原因引发,包括但不限于资源不足、数据倾斜、配置问题或兼容性问题。 ### 可能的原因及解决方案 #### 1. **资源不足导致任务失败** 在 Hive on Tez 执行过程中,如果某个 Map 或 Reduce 任务分配的内存或 CPU 资源不足,可能导致 Vertex 执行失败。特别是在读取 Paimon 表时,由于其列式存储结构和复杂的文件合并机制,可能对内存需求较高。 - **解决方案**:适当调整 Tez 和 YARN 的资源配置参数,例如: ```sql -- 增加 Mapper 内存 SET mapreduce.map.memory.mb=4096; -- 设置 YARN 容器最小内存 SET yarn.scheduler.minimum-allocation-mb=4096; -- 调整 JVM 堆内存参数 SET mapreduce.map.java.opts=-Xmx3600m; -- 设置 Tez 的内存分配 SET tez.task.resource.memory-mb=4096; SET tez.runtime.unordered.output.buffer.size-mb=1024; ``` #### 2. **Paimon 表与 Hive Catalog 集成问题** Paimon 表通过 Hive StorageHandler 集成到 Hive 中,若集成配置不正确,可能导致元数据读取失败或文件路径解析异常,从而触发 Vertex 失败。 - **验证方式**:检查 Paimon 表的 Hive 外部表定义是否正确,确保 `LOCATION` 或 `paimon_location` 指向有效的 HDFS 路径,并且 Hive Metastore 和 Hiveserver2 已重启以加载新配置 [^3]。 - **修复方式**:重新确认 Hive Metastore 和 Hiveserver2 的启动状态,确保所有服务正常运行,并检查日志文件中是否有连接或路径异常。 #### 3. **Hive on Tez 与 Paimon 文件格式兼容性问题** Paimon 使用其自定义的列式文件格式(基于 ORC 或 Parquet 的变种),若 Hive on Tez 版本不支持该格式,可能导致读取失败。 - **解决方案**: - 确保 HiveTez 的版本与 Paimon 1.0.1 兼容。 - 更新 PaimonHive StorageHandler JAR 包至最新版本,确保其支持当前 HiveTez运行环境。 - 在 Hive 表定义中明确指定文件格式,例如: ```sql CREATE EXTERNAL TABLE test.paimon_ex_ws_t STORED BY 'org.apache.paimon.hive.PaimonStorageHandler' LOCATION 'hdfs://node154:8020/paimon/hive/test.db/ws_t'; ``` #### 4. **任务执行中的 GC 问题或线程异常** 在执行过程中,若 JVM 频繁发生 Full GC 或线程阻塞,也可能导致 Vertex 超时或失败。 - **解决方案**:启用 GC 日志并分析: ```sql SET mapreduce.map.java.opts=-Xmx3600m -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/gc.log; ``` 根据 GC 日志判断是否存在频繁 GC 或内存泄漏问题。 #### 5. **数据倾斜导致部分 Vertex 耗时过长** 若 Paimon 表中某些分区或文件的数据量远大于其他分区,可能导致部分 Vertex 执行时间过长,进而被 YARN 或 Tez 判定为失败。 - **解决方案**: - 对数据进行预分区或采样,避免数据倾斜。 - 使用动态分区并控制每个分区的数据量。 - 启用 Tez 的自动并发调整功能: ```sql SET tez.grouping.split-waves=3.0; SET tez.grouping.min-size=16MB; SET tez.grouping.max-size=1024MB; ``` ### 总结 `Vertex failed` 错误通常由资源不足、配置错误、数据倾斜或兼容性问题引起。解决该问题需结合日志分析、资源配置调整和 PaimonHive 集成状态的检查。建议优先排查资源限制和 Hive Catalog 配置,其次关注数据分布与执行日志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值