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

Apache Hive 3.1.2配置Tez后启动Hive CLI失败求助

问题分析与解决方案

错误原因

org.apache.hadoop.fs.BatchListingOperations 类是Hadoop 3.2.0及以上版本才引入的API,你当前使用的Hadoop 3.1.1并不包含这个类。出现该错误的核心原因是:配置的Tez版本与Hadoop 3.1.1不兼容,Tez依赖的jar包中引用了高版本Hadoop的API,导致类加载失败。

解决方案

1. 匹配Tez与Hadoop的兼容版本

选择明确支持Hadoop 3.1.1的Tez版本,推荐使用 Tez 0.9.2(官方明确兼容Hadoop 3.1.x系列),避免使用Tez 0.10.0及以上版本(这类版本依赖Hadoop 3.2+的API)。

2. 替换Tez中的冲突Hadoop依赖jar

下载对应兼容版本的Tez包后,检查tez-xxx/lib目录下的Hadoop相关jar(如hadoop-common.jar、hadoop-hdfs.jar等),确保这些jar的版本与集群的Hadoop 3.1.1完全一致:

  • 如果Tez包自带了高版本的Hadoop jar,将其删除,替换为你集群Hadoop安装目录$HADOOP_HOME/share/hadoop/common和$HADOOP_HOME/share/hadoop/hdfs下的对应jar。

3. 重新上传Tez到HDFS并修正配置

  • 删除HDFS上原有的/user/tez/目录:
    hdfs dfs -rm -r /user/tez/
    
  • 将替换完依赖的Tez包解压后,上传到HDFS:
    hdfs dfs -put /path/to/your/tez-0.9.2 /user/tez/
    
  • 检查hive-site.xml中的Tez配置,确保tez.lib.uris指向正确路径:
    <property>
        <name>tez.lib.uris</name>
        <value>${fs.defaultFS}/user/tez/tez-0.9.2,${fs.defaultFS}/user/tez/tez-0.9.2/lib</value>
    </property>
    

4. 清理本地缓存并重启服务

  • 删除Hadoop和Hive的本地临时缓存:
    rm -rf /tmp/hadoop-*
    rm -rf /tmp/hive-*
    
  • 重启Hive服务,重新启动Hive CLI测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:04:58