无法从Java自动更新Kerberos票证

在我的服务器应用程序中,我正在从Java应用程序连接到受Kerberos保护的Hadoop群集。在应用程序启动时,我会打电话给

UserGroupInformation.loginUserFromKeytabAndReturnUGI( ... );

我正在使用本机FileSystemAPI(例如FileSystem.exists()和)进行基本的File操作FileSystem.delete()

我的应用程序在24小时后引发以下错误。这就是Kerberos票证的到期日。

Caused by: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]

at org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:690)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:422)

at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1709)

at org.apache.hadoop.ipc.Client$Connection.handleSaslConnectionFailure(Client.java:653)

at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:740)

at org.apache.hadoop.ipc.Client$Connection.access$2900(Client.java:378)

at org.apache.hadoop.ipc.Client.getConnection(Client.java:1492)

at org.apache.hadoop.ipc.Client.call(Client.java:1402)

... 27 more

Caused by: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]

at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:211)

at org.apache.hadoop.security.SaslRpcClient.saslConnect(SaslRpcClient.java:413)

at org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:563)

我的应用程序使用Java 8,并且遇到了此错误。

但是,看起来我的应用程序使用的hadoop-

common-2.7.1.2.4.2.12-1.jar已具有修复功能。来源可以在这里找到。

但是仍然出现相同的错误,因为没有进行自动续订。仅UserGroupInformation.checkTGTAndReloginFromkeytab()在按照上述答案中的建议在每个操作之前调用后才解决了此问题。但这仅在使用Rest

API而非RPC时才被建议,我希望本机Java API仅使用RPC。

为什么不按上述答案的建议进行自动续订?

回答:

不幸的是,使用此UserGroupInformation#loginUserFromKeytabAndReturnUGI方法时,存在自动更新无法正常工作的已知问题。我目前不知道Apache

Hadoop中的任何已知代码修复。

您添加呼叫的解决方案UserGroupInformation#checkTGTAndReloginFromKeytab是可行的解决方法。我建议您暂时坚持该做法,并关注Apache

Hadoop发行说明,以查看将来是否有修复程序提交。

以上是 无法从Java自动更新Kerberos票证 的全部内容, 来源链接: utcz.com/qa/418088.html

回到顶部