HIVE远程部署提示驱动不存在

HIAV远程部署初始化时候lib目录下存在mysql-jdbc驱动却依旧提示驱动不存在

  • 宿主机:macos Apple M2 Pro
  • 虚拟机:Ubuntu 20.04.6 LTS aarch64
  • hadoop3.3.1, hive3.1.2, mysql8.0.33, mysql-connector-java-8.0.33.jar
  • hadoop允许正常 mysql正常 指定用户存在且权限正常 远程连接正常(全部测试过)
  • hive环境变量配置正常 lib目录下存在jdbc连接包 且版本与mysql一致
node@node0:~$ /export/server/hive/bin/schematool -initSchema -dbType mysql -verbose
Metastore connection URL:        jdbc:mysql://node0:3306/hive?createDatabaseIfNotExist=true&useSSL=false
Metastore Connection Driver :    com.mysql.cj.jdbc.Driver
Metastore connection User:       hive
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver
Underlying cause: java.lang.ClassNotFoundException : com.mysql.cj.jdbc.Driver
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver
        at org.apache.hadoop.hive.metastore.tools.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:97)
        at org.apache.hive.beeline.HiveSchemaTool.getConnectionToMetastore(HiveSchemaTool.java:169)
        at org.apache.hive.beeline.HiveSchemaTool.testConnectionToMetastore(HiveSchemaTool.java:475)
        at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:581)
        at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:567)
        at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:1517)
        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:323)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
Caused by: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
        at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at org.apache.hadoop.hive.metastore.tools.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:85)
        ... 11 more
*** schemaTool failed ***
node@node0:~$ 

所有配置都正常就是提示mysql连接驱动不存在

这个错误提示表明无法找到 MySQL 连接驱动类 "com.mysql.cj.jdbc.Driver"。在处理这个问题之前,可以尝试以下几个步骤来解决该问题:

  • 确保你的 MySQL 连接驱动 JAR 文件 "mysql-connector-java-8.0.33.jar" 存在于 Hive 的类路径中。你提到该文件位于 Hive 的 "lib" 目录下,但有时候可能需要将其放置在其他位置。你可以尝试将该 JAR 文件移动到其他可能的位置,例如 $HIVE_HOME/lib 目录。
  • 确认你的环境变量 $HIVE_HOME 配置正确。Hive 需要正确设置 $HIVE_HOME 环境变量,以便在启动时正确加载相关的类和配置文件。
  • 检查 MySQL 连接驱动类的版本兼容性。确保你使用的 MySQL 连接驱动版本与 MySQL 数据库的版本兼容。如果版本不匹配,可能会导致驱动无法加载或出现其他错误。确保你使用的是与你的 MySQL 数据库版本相匹配的 MySQL 连接驱动。
  • 检查类路径中是否存在冲突的驱动。如果在类路径中存在多个版本的 MySQL 连接驱动或其他冲突的 JDBC 驱动,可能会导致加载错误。确保类路径中只包含你需要的 MySQL 连接驱动,并删除任何冲突的驱动。
  • 如果你正在使用 Hadoop 的分布式环境,例如使用 YARN,确保在每个节点上都进行了相同的配置更改。有时候在分布式环境中,某些节点可能缺少正确的配置或 JAR 文件,导致连接驱动无法加载。

尝试上述步骤后,重新初始化 Hive 的元数据数据库,看看问题是否得到解决。如果问题仍然存在,请提供更多关于你的配置和环境的详细信息,以便我可以更进一步地帮助你解决问题。