You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 10环境下Hive 3.1.2安装与运行故障排查求助

Hive 3.1.2 + Hadoop 3.2.2 在Windows 10上的安装问题排查与解决

我之前在Windows环境下部署Hive时踩过不少类似的坑,结合你的问题场景,给你梳理下针对性的解决办法:

初始问题回顾

你在Windows 10上搭配Hadoop 3.2.2安装Hive 3.1.2,Hadoop服务能正常启动,但启动Hive Shell有一堆警告,执行show databases;报错,后续修复路径变量后又出现HDFS相关的方法不存在错误。


1. 启动Hive Shell的警告与元数据库初始化失败

警告分析与处理

  • SLF4J绑定冲突:这是Hadoop和Hive依赖的日志实现jar包冲突导致的。你可以直接删除Hadoop目录下的C:\my_programs\hadoop-3.2.2\share\hadoop\common\lib\slf4j-log4j12-1.7.25.jar,保留Hive自带的log4j-slf4j-impl-2.10.0.jar就能解决这个警告。
  • hive.server2.enable.impersonation不存在警告:在Hive的conf/hive-site.xml里添加这个配置项即可消除警告,复制这段内容进去:
    <property>
      <name>hive.server2.enable.impersonation</name>
      <value>true</value>
    </property>
    
  • Hive-on-MR弃用提示:这只是官方的 deprecation 提示,暂时不想切换执行引擎的话可以忽略;如果要解决,后续可以尝试配置Spark作为执行引擎(Windows上Tez支持不太友好)。

元数据库初始化失败(SessionHiveMetaStoreClient无法实例化)

Windows下执行schematool要注意用.cmd后缀的脚本,步骤如下:

  1. 先确保Hadoop集群已经启动(运行start-dfs.cmdstart-yarn.cmd
  2. 打开PowerShell,进入Hive的bin目录:cd C:\my_programs\hive_3.1.2\bin
  3. 执行初始化命令:.\schematool.cmd -dbType derby -initSchema

另外,要确保hive-site.xml里有Derby的基础配置,不然初始化也会出问题,把这段配置加到文件里:

<configuration>
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
  </property>
  <property>
    <name>hive.metastore.local</name>
    <value>true</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>org.apache.derby.jdbc.EmbeddedDriver</value>
  </property>
</configuration>

2. 更新后出现的NoSuchMethodError错误

这个错误是Hive 3.1.2和Hadoop 3.2.2的API不兼容导致的,Hive 3.1.2对Hadoop的版本要求更高(官方推荐3.3.x及以上),给你两个解决思路:

方案一:升级Hadoop版本

卸载当前的Hadoop 3.2.2,安装Hadoop 3.3.1或更高版本,版本匹配后这个API冲突问题就会消失,这是最稳妥的办法。

方案二:替换Hive中的Hadoop依赖jar

如果不想升级Hadoop,可以手动把Hadoop 3.2.2目录下的核心jar包(比如hadoop-common-3.2.2.jarhadoop-hdfs-3.2.2.jarhadoop-client-3.2.2.jar)复制到Hive的lib目录下,替换掉Hive自带的旧版本Hadoop jar包。

额外检查Hadoop配置

确保Hadoop的两个核心配置文件正确:

  • core-site.xml:配置HDFS的默认地址
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://localhost:9000</value>
    </property>
    
  • hdfs-site.xml:单机环境下设置副本数为1
    <property>
      <name>dfs.replication</name>
      <value>1</value>
    </property>
    

配置完记得重启Hadoop服务。


内容的提问来源于stack exchange,提问作者Nguyễn Hải Dương

火山引擎 最新活动