You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Tez的Hive插入记录时Tez启动失败求助

Hive插入ACID表时Tez DAGAppMaster启动失败排查方案

核心错误分析

执行INSERT语句触发Tez任务时,DAGAppMaster在初始化阶段失败,核心报错:

java.lang.ClassCastException: org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$GetFileInfoRequestProto cannot be cast to com.google.protobuf.Message

该错误属于Protobuf版本依赖冲突,是由于Hadoop、Tez、Hive三方依赖的Protobuf库版本不一致,导致类加载时出现类型不兼容问题。

解决方案步骤

1. 检查三方Protobuf版本一致性

分别查看Hadoop、Tez、Hive的lib目录下的Protobuf jar包版本:

  • 查看Hadoop版本:ls $HADOOP_HOME/lib/protobuf-java-*.jar
  • 查看Tez版本:ls $TEZ_HOME/lib/protobuf-java-*.jar
  • 查看Hive版本:ls $HIVE_HOME/lib/protobuf-java-*.jar
    确保三者的Protobuf版本完全一致(比如Hadoop 3.3.1默认对应protobuf-java-2.5.0.jar)。

2. 统一Protobuf依赖包

如果发现版本不一致:

  • 删除Tez/lib和Hive/lib中与Hadoop版本不匹配的protobuf-java-*.jar
  • 从Hadoop/lib目录复制对应版本的protobuf-java-*.jar到Tez/lib和Hive/lib目录

3. 验证Tez Hadoop Shim兼容性

日志显示加载了DefaultHadoopShim,需确认Tez版本与Hadoop版本的兼容性:

  • Tez 0.10.2官方支持Hadoop 3.1.x至3.3.x,若shim包不匹配:
    • 检查$TEZ_HOME/lib/tez-hadoop-shim-*.jar,确保其版本对应Hadoop 3.3.x(如tez-hadoop-shim-3.3.0-0.10.2.jar)
    • 若shim包版本不符,替换为与Hadoop版本匹配的Tez shim包

4. 清理缓存并重启服务

  • 清理YARN节点缓存:
    yarn rmadmin -refreshNodes
    rm -rf /tmp/hadoop-hadoop/nm-local-dir/usercache/hadoop/appcache/*
    
  • 依次重启HDFS、YARN、HiveMetastore、HiveServer2服务,确保依赖变更生效

5. 确认配置正确性

  • 检查tez-site.xml中tez.lib.uris配置,确保指向已修正依赖的Tez包路径
  • 检查hive-site.xml中hive.execution.engine=tez,且hive.tez.container.size设置合理(避免资源不足)

内容的提问来源于stack exchange,提问作者Kaher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 03:47:09