我正在运行一个无限循环来测试kerberos凭证的到期时间,我有以下代码。
UserGroupInformation.loginUserFromKeytab(user, keytablocn);
Configuration config = HBaseConfiguration.create();
HConnection conn = HConnectionManager.createConnection(config);
for (;;) {
HTableInterface ht = conn.getTable(tableName);
getAndPriintRow(rowkey);
}
我希望kerberos凭证在程序启动后大约10小时到期(使用keytab的linux shell上的kinit需要在我们的环境中大约10小时后重新登录)。
然而,我在大约10小时后在日志中看到的是:
15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation:PrivilegedAction 为:的 *(AUTH:KERBEROS) 来自:org.apache.hadoop.hbase.ipc.RpcClient $ Connection.handleSaslConnectionFailure(RpcClient.java:796) 15/03/06 12:39:54调试 org.apache.hadoop.security.UserGroupInformation:启动注销 * 15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation:hadoop logout 15/03/06 12:39:54调试 org.apache.hadoop.security.UserGroupInformation:启动重新登录 for *** 15/03/06 12:39:55 DEBUG org.apache.hadoop.security.UserGroupInformation:hadoop login
以某种方式调用了checkTGTAndReloginFromKeytab()方法。我无法弄清楚如何调用此方法。这允许程序永久运行。这是设计和relogin是什么?
答案 0 :(得分:1)
这是按照设计。当会话到期时,它将尝试重新登录 此功能使HBase客户端在应用程序服务器中使用时可以保持永恒。