JDBC无密码信任认证连接Hive大数据平台报错排查
Hive JDBC Kerberos无密码认证连接错误排查
问题详情
尝试通过JDBC以无密码信任认证方式连接Hive大数据平台,相关信息如下:
连接代码
String conStr = "jdbc:hive2://bigdataplatform.abc.com:10000/staging;principal=hive/bigdataplatform.abc.com@BIGIP.abc.com;ssl=true"; Class.forName("org.apache.hive.jdbc.HiveDriver"); con = DriverManager.getConnection(conStr, "my_fid", ""); Statement stmt = con.createStatement(); stmt.executeQuery("show databases"); System.out.println("show database successfully.");
依赖包
hive-jdbc-3.1.3.jar hive-service-rpc-3.1.3.jar jdk.tools-1.8.0_321.jar libthrift-0.9.3.jar slf4j-api-2.0.11.jar hive-service-3.1.3.jar curator-client-2.12.0.jar hive-exec-3.1.3.jar hadoop-common-3.1.0.jar commons-configuration2-2.1.1.jar hadoop-auth-3.1.0.jar woodstox-core-5.0.3.jar stax2-api-3.1.4.jar commons-collections-3.2.2.jar
krb5.conf配置(Realm部分)
[realms] BIGIP.abc.com = { kdc = xxx.abc.com:88 admin_server = **** kpasswd_server = ***** master_kdc = *** }
启动命令
${JAVA_HOME}/bin/java -jar -Xms4000m /tmp/Hive_Test.jar com.data.TestMain
报错信息
Caused by: java.lang.IllegalAccessException: class org.apache.hadoop.security.authentication.util.KerberosUtil cannot access class sun.security.krb5.Config (in module java.security.jgss) because module java.security.jgss does not export sun.security.krb5 to unnamed module @571613d2
错误解析
这个错误是Java模块系统的权限访问问题:
Java 9及以上版本引入了模块系统,sun.security.krb5.Config属于java.security.jgss系统模块,该模块默认不会将sun.security.krb5包暴露给未模块化的Jar包(你的测试Jar属于未命名模块),而Hadoop的KerberosUtil类需要访问这个内部类,因此触发了权限拒绝。
是否需要更新krb5.conf?
不需要。当前错误和krb5.conf的配置无关,无需修改该文件。
解决方法
1. 确认JDK版本并添加模块导出参数
- 先检查服务器上
JAVA_HOME指向的JDK版本:执行${JAVA_HOME}/bin/java -version,如果是JDK 9+,需要在启动命令中添加模块导出参数,开放权限:
修改后的启动命令:${JAVA_HOME}/bin/java --add-exports java.security.jgss/sun.security.krb5=ALL-UNNAMED -jar -Xms4000m /tmp/Hive_Test.jar com.data.TestMain - 如果
JAVA_HOME确实指向JDK 8,却出现该错误,可能是环境变量配置混乱,建议重新指定正确的JDK 8路径。
2. 检查依赖兼容性
确认Hadoop 3.1.0、Hive 3.1.3与JDK版本的兼容性,避免混入高版本的Hadoop/Hive依赖包导致冲突。
3. 验证Kerberos票据有效性
无密码认证需要运行程序的用户已获取有效的Kerberos票据,可通过klist命令查看票据状态,若没有有效票据,需先执行kinit获取。
内容的提问来源于stack exchange,提问作者Pat
相关产品推荐
相关产品推荐

