gpt4 book ai didi

java - 连接到Cloudera Impala环境时出现Kerberos错误

转载 作者:行者123 更新时间:2023-12-02 20:25:59 26 4
gpt4 key购买 nike

连接到使用Kerberos的Hadoop环境时,错误:[Simba] ImpalaJDBCDriver无法连接到服务器:[Simba] ImpalaJDBCDriver Kerberos身份验证失败。

我已经在virtualbox中安装了cloudera quickstart vm,启用了kerberos,编写了连接到imapala db的Java代码,并遇到了Kerberos身份验证失败的错误。

public static void main(String[] args) throws Exception {

Configuration conf = new Configuration();
conf.set("hadoop.security.authentication", "Kerberos");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation ugi = UserGroupInformation
.loginUserFromKeytabAndReturnUGI("hdfs/quickstart.cloudera@CLOUDERA", "hdfs.keytab");

Class.forName("com.cloudera.impala.jdbc41.Driver");
Connection conn = (Connection) ugi.doAs(new PrivilegedExceptionAction<Object>() {
public Object run() {
Connection tcon = null;
try {
tcon = DriverManager.getConnection(
"jdbc:impala://quickstart.cloudera:21050;AuthMech=1;KrbHostFQDN=quickstart.cloudera;KrbRealm=CLOUDERA;KrbServiceName=hdfs");
System.out.println("Connected!");
} catch (SQLException e) {
e.printStackTrace();
}
return tcon;
}
});

Statement stmt = conn.createStatement();

String sql = "show tables";
System.out.println("Running: " + sql);
ResultSet res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1));
}
}

我启用了 Debug模式,但出现异常:

...
客户端主体= hdfs/quickstart.cloudera@CLOUDERA
服务器主体= hdfs/quickstart.cloudera@CLOUDERA
session 密钥= EncryptionKey:keyType = 23 keyBytes(十六进制转储)=
0000:8A B3 79 07 A5 06 05 9F CE 37 84 8A 15 2E 7E B5 ..y ...... 7 ......

可转让票真
转寄票证错误
代售假票
代理人票证错误
过期票假
可续签假
初始机票错误
验证时间= PDT 2019年6月23日11:52:03
开始时间= PDT 2019年6月23日11:52:03
结束时间= PDT 2019年6月24日星期一11:52:03
续订直到=空
客户地址为空
>>> KrbApReq:AP选项为00100000 00000000 00000000 00000000
>>> EType:sun.security.krb5.internal.crypto.ArcFourHmacEType
Krb5Context将mySeqNumber设置为:925793988
创建的InitSecContextToken:
0000:01 00 6E 82 02 2E 30 82 02 2A A0 03 02 01 05 A1 ..n ... 0 .. * ......

0220:4A 3E 74 0A 67 B6 5E 16 3B B8 1D FB 91 75 53 33 J> t.g。^。; .... uS3
0230:76 5E 40 81 v ^ @。

java.sql.SQLException:[Simba] [ImpalaJDBCDriver](500164)初始化错误或创建了用于身份验证的传输:[Simba] [ImpalaJDBCDriver](500169)无法连接到服务器:[Simba] [ImpalaJDBCDriver](500591)Kerberos身份验证失败..
在com.cloudera.hivecommon.api.HiveServer2ClientFactory.createTransport(未知来源)
在com.cloudera.hivecommon.api.HiveServer2ClientFactory.createClient(未知来源)
在com.cloudera.hivecommon.core.HiveJDBCCommonConnection。EstablishmentConnection(未知来源)
在com.cloudera.impala.core.ImpalaJDBCConnection。EstablishmentConnection(未知来源)
在com.cloudera.jdbc.core.LoginTimeoutConnection.connect(未知来源)
在com.cloudera.jdbc.common.BaseConnectionFactory.doConnect(未知来源)
在com.cloudera.jdbc.common.AbstractDriver.connect(未知来源)
在java.sql.DriverManager.getConnection(DriverManager.java:571)
在java.sql.DriverManager.getConnection(DriverManager.java:233)
在ImpalaJDBC $ 1.run(ImpalaJDBC.java:64)
在java.security.AccessController.doPrivileged(本机方法)
在javax.security.auth.Subject.doAs(Subject.java:415)
在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1917)
引起原因:com.cloudera.support.exceptions.GeneralException:[Simba] [ImpalaJDBCDriver](500164)初始化或创建的身份验证传输错误:[Simba] [ImpalaJDBCDriver](500169)无法连接到服务器:[Simba] [ImpalaJDBCDriver ](500591)Kerberos身份验证失败。
...另外13个
原因:java.lang.RuntimeException:[Simba] [ImpalaJDBCDriver](500169)无法连接到服务器:[Simba] [ImpalaJDBCDriver](500591)Kerberos身份验证失败。
在com.cloudera.hivecommon.api.HiveServerPrivilegedAction.run(未知来源)
在java.security.AccessController.doPrivileged(本机方法)
在javax.security.auth.Subject.doAs(Subject.java:356)
在com.cloudera.hivecommon.api.HiveServer2ClientFactory.createTransport(未知来源)
在com.cloudera.hivecommon.api.HiveServer2ClientFactory.createClient(未知来源)
在com.cloudera.hivecommon.core.HiveJDBCCommonConnection。EstablishmentConnection(未知来源)
在com.cloudera.impala.core.ImpalaJDBCConnection。EstablishmentConnection(未知来源)
在com.cloudera.jdbc.core.LoginTimeoutConnection.connect(未知来源)
在com.cloudera.jdbc.common.BaseConnectionFactory.doConnect(未知来源)
在com.cloudera.jdbc.common.AbstractDriver.connect(未知来源)
在java.sql.DriverManager.getConnection(DriverManager.java:571)
在java.sql.DriverManager.getConnection(DriverManager.java:233)
在ImpalaJDBC $ 1.run(ImpalaJDBC.java:64)
在java.security.AccessController.doPrivileged(本机方法)
在javax.security.auth.Subject.doAs(Subject.java:415)
在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1917)
在ImpalaJDBC.main(ImpalaJDBC.java:60)
引起原因:org.apache.thrift.transport.TTransportException
在org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
在org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
在org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:178)
在org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:258)
在org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport.java:37)
...另外17个

最佳答案

Impala重新启动后,我的Web项目遇到相同的问题。设置连接池以在空闲时释放所有连接,并让下一个查询重新申请连接。此时,此问题将不会发生。

关于java - 连接到Cloudera Impala环境时出现Kerberos错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56727218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com