HiveServer2启动报错java.lang.NoSuchMethodError求助
问题原因分析
环境信息
java -version openjdk version "11.0.8" 2020-07-14 LTS OpenJDK Runtime Environment 18.9 (build 11.0.8+10-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode, sharing)
- Hadoop版本:3.4.1
- Hive版本:4.0.1
错误信息
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.util.ShutdownHookManager.addShutdownHook(Ljava/lang/Runnable;IJLjava/util/concurrent/TimeUnit;)V at org.apache.hive.common.util.ShutdownHookManager.addShutdownHook(ShutdownHookManager.java:99) at org.apache.hive.common.util.ShutdownHookManager.addShutdownHook(ShutdownHookManager.java:71) at org.apache.hive.common.util.HiveStringUtils.startupShutdownMessage(HiveStringUtils.java:770) at org.apache.hive.service.server.HiveServer2.main(HiveServer2.java:1276) 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:221) at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
原因说明
这个错误是版本兼容性不匹配导致的:
- Hive 4.0.1的代码中调用了
org.apache.hadoop.util.ShutdownHookManager类的addShutdownHook(Runnable, int, long, TimeUnit)方法,但当前使用的Hadoop 3.4.1版本里,该类并未提供这个特定签名的方法。 - 核心问题是Hive 4.0.1依赖的Hadoop API版本,与你实际部署的Hadoop 3.4.1存在差异,二者的接口定义不兼容,从而触发了方法找不到的异常。
内容的提问来源于stack exchange,提问作者Mich Talebzadeh
相关产品推荐
相关产品推荐

