1

我正在运行一个无限循环来测试 kerberos 凭据的过期,我有以下代码。

UserGroupInformation.loginUserFromKeytab(user, keytablocn);
Configuration config = HBaseConfiguration.create();
HConnection conn = HConnectionManager.createConnection(config);

for (;;) {
HTableInterface ht = conn.getTable(tableName);
getAndPriintRow(rowkey);
}

我预计 kerberos 凭据将在程序启动后约 10 小时到期(Linux shell 上使用 keytab 的 kinit 需要在我们的环境中约 10 小时后重新登录)。

但是大约 10 小时后我在日志中看到的是:

15/03/06 12:39:54 调试 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 调试 org.apache.hadoop.security.UserGroupInformation: hadoop 注销 15/03/06 12:39:54 调试 org.apache.hadoop.security.UserGroupInformation:为 *** 15/03/06 12:39:55 启动重新登录调试 org.apache.hadoop.security。 UserGroupInformation:hadoop 登录

以某种方式调用了 checkTGTAndReloginFromKeytab() 方法。我无法弄清楚这个方法是如何被调用的。这允许程序永久运行。这是设计使然吗?重新登录是做什么的?

4

1 回答 1

1

这是按照设计。当会话到期时,它将尝试重新登录。
此功能使 HBase 客户端在应用程序服务器中使用时能够永远保持不变。

于 2015-03-07T20:52:08.837 回答