本文验证了hadoop3.3.0整合hive3.1.2在java8环境下是可行的,而在高于8的jdk版本中是不可行的,由于笔者一直使用java14作为开发环境,所以在安装时踩了很多坑,但是也收获颇丰。写这篇文章的目的是让大家在安装的过程中少走弯路,同时也把我在踩坑过程中的发现分享给大家。
安装过程所有的tar包均为Apache官网下载,关于安装hadoop,可以参考我的另一篇文章:
centos8+java14+hadoop-3.3.0搭建hadoop集群(全网最新)
但是这里必须强调的是:必须使用jdk8作为环境,虽然使用java14可以顺利搭建hadoop集群,但是在启动hive数仓时会报错,由于hive安装目录下的某个jar包在加载时使用的是java8的环境,在jdk高于8时,会导致
HiveServer2服务运行异常
并在日志打印报错:
java.lang.RuntimeException: Error applying authorization policy on hive configuration: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')
at org.apache.hive.service.cli.CLIService.init(CLIService.java:118) ~[hive-service-3.1.2.jar:3.1.2]
at org.apache.hive.service.CompositeService.init(CompositeService.java:59) ~[hive-service-3.1.2.jar:3.1.2]
at org.apache.hive.service.server.HiveServer2.init(HiveServer2.java:230) ~[hive-service-3.1.2.jar:3.1.2]
at org.apache.hive.service.server.HiveServer2.startHiveServer2(HiveServer2.java:1036) [hive-service-3.1.2.jar:3.1.2]
at org.apache.hive.service.server.HiveServer2.access$1600(HiveServer2.java:140) [hive-service-3.1.2.jar:3.1.2]
at org.apache.hive.service.server.HiveServer2$StartOptionExecutor.execute(HiveServer2