You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:04:54