月光956 2025-11-28 21:39 采纳率: 0%
浏览 3

在虚拟机上打开hive,最后有出现一大堆这些东西,该怎么处理啊

which: no hbase in (/export/servers/hadoop-3.1.3/bin:/export/servers/hadoop-3.1.3/sbin:/export/servers/apache-hive-3.1.3-bin/bin:/export/servers/hadoop-3.1.3/bin:/export/servers/hadoop-3.1.3/sbin:/export/servers/apache-hive-3.1.3-bin/bin:/export/servers/hadoop-3.1.3/bin:/export/servers/hadoop-3.1.3/sbin::/export/servers/hadoop-3.1.3/bin:/export/servers/hadoop-3.1.3/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/export/servers/jdk/bin:/root/bin)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/export/servers/hadoop-3.1.3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/export/servers/apache-hive-3.1.3-bin/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Hive Session ID = a4cf2a4b-e071-4662-a486-37fd78804cf9

Logging initialized using configuration in file:/export/servers/apache-hive-3.1.3-bin/conf/hive-log4j2.properties Async: true
0 [a4cf2a4b-e071-4662-a486-37fd78804cf9 main] WARN org.apache.hadoop.hive.metastore.ObjectStore - datanucleus.autoStartMechanismMode is set to unsupported value null . Setting it to value: ignored
357 [a4cf2a4b-e071-4662-a486-37fd78804cf9 main] WARN com.zaxxer.hikari.util.DriverDataSource - Registered driver with driverClassName=org.apache.derby.jdbc.EmbeddedDriver was not found, trying direct instantiation.
545 [a4cf2a4b-e071-4662-a486-37fd78804cf9 main] WARN com.zaxxer.hikari.util.DriverDataSource - Registered driver with driverClassName=org.apache.derby.jdbc.EmbeddedDriver was not found, trying direct instantiation.
837 [a4cf2a4b-e071-4662-a486-37fd78804cf9 main] WARN org.apache.hadoop.hive.metastore.MetaStoreDirectSql - Self-test query [select "DB_ID" from "DBS"] failed; direct SQL is disabled
javax.jdo.JDODataStoreException: Error executing SQL query "select "DB_ID" from "DBS"".
at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:543)
at org.datanucleus.api.jdo.JDOQuery.executeInternal(JDOQuery.java:391)
at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:216)
at org.apache.hadoop.hive.metastore.MetaStoreDirectSql.runTestQuery(MetaStoreDirectSql.java:276)
at org.apache.hadoop.hive.metastore.MetaStoreDirectSql.(MetaStoreDirectSql.java:184)
at org.apache.hadoop.hive.metastore.ObjectStore.initializeHelper(ObjectStore.java:499)
at org.apache.hadoop.hive.metastore.ObjectStore.initialize(ObjectStore.java:421)
at org.apache.hadoop.hive.metastore.ObjectStore.setConf(ObjectStore.java:376)
at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:77)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:137)
at org.apache.hadoop.hive.metastore.RawStoreProxy.(RawStoreProxy.java:59)
at org.apache.hadoop.hive.metastore.RawStoreProxy.getProxy(RawStoreProxy.java:67)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.newRawStoreForConf(HiveMetaStore.java:720)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMSForConf(HiveMetaStore.java:698)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:692)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:769)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:540)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:147)
at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:108)
at org.apache.hadoop.hive.metastore.RetryingHMSHandler.(RetryingHMSHandler.java:80)
at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:93)
at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:8678)
at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.(HiveMetaStoreClient.java:169)
at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.(SessionHiveMetaStoreClient.java:94)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.hadoop.hive.metastore.utils.JavaUtils.newInstance(JavaUtils.java:84)
at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.(RetryingMetaStoreClient.java:95)
at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:148)
at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:119)
at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:4306)
at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:4374)
at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:4354)
at org.apache.hadoop.hive.ql.metadata.Hive.getAllFunctions(Hive.java:4610)
at org.apache.hadoop.hive.ql.metadata.Hive.reloadFunctions(Hive.java:291)
at org.apache.hadoop.hive.ql.metadata.Hive.registerAllFunctionsOnce(Hive.java:274)
at org.apache.hadoop.hive.ql.metadata.Hive.(Hive.java:442)
at org.apache.hadoop.hive.ql.metadata.Hive.create(Hive.java:382)
at org.apache.hadoop.hive.ql.metadata.Hive.getInternal(Hive.java:362)
at org.apache.hadoop.hive.ql.metadata.Hive.get(Hive.java:331)
at org.apache.hadoop.hive.ql.metadata.HiveMaterializedViewsRegistry.init(HiveMaterializedViewsRegistry.java:133)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:755)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:318)
at org.apache.hadoop.util.RunJar.main(RunJar.java:232)
NestedThrowablesStackTrace:

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2025-11-28 22:01
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你遇到的这个问题是 Hive 启动时出现大量警告和错误信息,这通常表明 Hive 的元数据存储(Metastore)配置不正确或无法连接到 Metastore 服务。下面我将详细解释这些日志内容,并提供解决方案


    📌 问题分析

    从你提供的日志中可以看到以下几个关键点:

    1. 找不到 hbase 命令
      这是因为 hbase 不在你的环境变量路径中,但这个错误并不影响 Hive 的启动,可以忽略,除非你需要使用 HBase。

    2. SLF4J 多个绑定警告
      表示 SLF4J 有多个日志实现(如 log4j 和 log4j2),会导致日志输出混乱,建议解决。

    3. Hive Metastore 初始化失败
      关键错误是:

      javax.jdo.JDODataStoreException: Error executing SQL query "select "DB_ID" from "DBS".
      

      表明 Hive 无法连接到 Metastore 数据库(通常是 Derby、MySQL 或 PostgreSQL)。

    4. MetaStoreDirectSql 报错
      指出直接 SQL 查询失败,说明 Hive 无法访问 Metastore 数据库。


    ✅ 解决方案

    一、检查并配置 Hive Metastore 配置文件

    1. 编辑 Hive 配置文件 hive-site.xml

    确保你已经配置了 Hive Metastore 的数据库连接信息。

    <configuration>
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionDriverName</name>
            <value>com.mysql.cj.jdbc.Driver</value>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionUserName</name>
            <value>hiveuser</value>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionPassword</name>
            <value>hivepassword</value>
        </property>
    </configuration>
    

    注意:请根据你的实际数据库进行修改,比如 MySQL 地址、用户名、密码等。

    2. 确保 MySQL 驱动存在

    将 MySQL 的 JDBC 驱动(如 mysql-connector-java-8.0.28.jar)复制到 Hive 的 lib 目录中:

    cp mysql-connector-java-8.0.28.jar /export/servers/apache-hive-3.1.3-bin/lib/
    

    二、初始化 Hive Metastore 数据库

    如果这是第一次使用 Hive,需要初始化 Metastore 数据库结构。

    1. 执行初始化脚本

    schematool -dbType mysql -initSchema
    
    • -dbType:指定数据库类型(如 mysql
    • -initSchema:初始化 Schema

    如果提示缺少依赖,请安装 mysql-connector-java 包。


    三、处理 SLF4J 多个绑定问题

    1. 删除多余的日志依赖包

    进入 Hive 的 lib 目录,删除重复的 SLF4J 绑定:

    cd /export/servers/apache-hive-3.1.3-bin/lib
    rm slf4j-log4j12-1.7.25.jar
    

    保留 log4j-slf4j-impl-2.17.1.jar 即可。


    四、验证 Hive 元数据是否可用

    1. 启动 Hive 并执行简单查询

    hive
    

    然后执行以下命令测试:

    SHOW DATABASES;
    

    如果能正常显示数据库列表,说明 Metastore 已经连接成功。


    🧠 附加建议

    | 项目 | 内容 | |------|------| | 数据库类型 | 推荐使用 MySQL 而不是 Derby,因为 Derby 性能差且不支持多节点 | | 权限问题 | 确保 Hive 用户对 Metastore 数据库有读写权限 | | 防火墙设置 | 如果数据库在远程服务器上,确保端口(如 3306)开放 | | 版本兼容性 | 确保 Hive 版本与 MySQL 驱动、JDBC 版本兼容 |


    🧩 示例:修改后的 Hive 配置文件 hive-site.xml

    <configuration>
        <!-- Metastore 数据库配置 -->
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionDriverName</name>
            <value>com.mysql.cj.jdbc.Driver</value>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionUserName</name>
            <value>hiveuser</value>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionPassword</name>
            <value>hivepassword</value>
        </property>
    
        <!-- 日志配置 -->
        <property>
            <name>hive.root.logger</name>
            <value>INFO,console</value>
        </property>
    </configuration>
    

    ✅ 总结

    重点步骤如下:

    1. 配置 hive-site.xml 文件,确保 Metastore 数据库连接正确。
    2. 添加 MySQL JDBC 驱动 到 Hive 的 lib 目录。
    3. 初始化 Metastore 数据库结构 使用 schematool
    4. 解决 SLF4J 多绑定问题,删除重复的日志依赖。
    5. 验证 Hive 是否能正常访问 Metastore,执行 SHOW DATABASES; 测试。

    如果你仍然遇到问题,请提供以下信息:

    • Hive 的版本
    • 使用的数据库类型(如 MySQL、Derby)
    • hive-site.xml 的完整配置
    • 错误日志的完整内容

    我可以进一步帮助你排查具体原因。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月28日