Безопасное приложение hbase - аутентификация kerberos

Я запускаю бесконечный цикл для проверки истечения срока действия учетных данных Kerberos, у меня есть следующий код.

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

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

Я ожидаю, что срок действия учетных данных kerberos истечет примерно через 10 часов после запуска программы (в нашей среде для kinit в оболочке linux с использованием keytab требуется перезапуск через примерно 10 часов).

Однако, что я вижу в журнале примерно через 10 часов:

15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: PrivilegedAction as:* (auth: KERBEROS) от:org.apache.hadoop.hbase.ipc.RpcClient$Connection.handleSaslConnectionFailure(RpcClient. Java:796) 15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: Инициирование выхода из системы для * 15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: выход из hadoop 15/03/06 12:39:54 DEBUG org.apache.hadoop.security.UserGroupInformation: Инициирование повторного входа в систему для *** 15/03/06 12:39:55 DEBUG org.apache.hadoop.security.UserGroupInformation: логин hadoop

Метод checkTGTAndReloginFromKeytab() был каким-то образом вызван. Я не могу понять, как этот метод был вызван. Это позволяет программе работать постоянно. Это дизайн и что делает relogin?

1 ответ

Решение

Это согласно дизайну. Когда сеанс истекает, он попытается повторно войти в систему.
Эта функциональность позволяет клиентам HBase оставаться в вечности, когда они используются на серверах приложений.

Другие вопросы по тегам