【问题标题】:HBase with Kerberos - keep a HTable instance open more than 10 hours带有 Kerberos 的 HBase - 保持 HTable 实例打开超过 10 小时
【发布时间】:2016-12-02 10:02:55
【问题描述】:

情况如下:我们有一个安全的 (Kerberos) HBase 集群。 我有一个对象,它在启动时创建一个 HTable 实例并挂在它上面。它调用:

UserGroupInformation.setConfiguration(configuration);
UserGroupInformation.loginUserFromKeytab(user, keytab);

登录到 Kerberized 集群。 然后,该对象将闲置数小时未使用。 10 多个小时后(来自我们的 Kerberos 集群的票证超时),下一次扫描表的调用结果如下:

16/12/01 18:16:24 WARN security.UserGroupInformation: PriviledgedActionException as:bigdata-app-analyticscore-msr@INTQA.THOMSONREUTERS.COM (auth:KERBEROS) cause:javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
16/12/01 18:16:24 WARN ipc.RpcClient: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
16/12/01 18:16:24 FATAL ipc.RpcClient: SASL authentication failed. The most likely cause is missing or invalid credentials. Consider 'kinit'.
- 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)
- etc.

如何保持 Kerberos 身份验证有效?

【问题讨论】:

  • 如果我们已经回答了您的问题,请适当标记;否则请告诉我们。

标签: java hbase kerberos


【解决方案1】:

我之前正好在这个论坛做一些研究。这里的问题陈述,其中 Kerberos 身份验证在 10 小时后终止,几乎与该线程的相同:

Renewing a connection to Apache Phoenix (using Kerberos) fails after exactly 10 hours

实际上,我今天早些时候刚刚编辑了该主题,并将“10 小时”放入主题行。该线程包含一些关于在这里做什么的很好的建议。我将继续借用 Samson Scharfrichter 提供的良好智慧,他在其中指出:“标准解决方案是生成一个后台线程,定期调用 checkTGTAndReloginFromKeytab() - 请参阅 Should I call ugi.checkTGTAndReloginFromKeytab() before every action on hadoop? 以获得 HortonWorks 的非常详细的解释guru(编写关于 Hadoop 和 Kerberos 的 GitBook 的同事的同事)”

我希望这可以为您提供指导。

【讨论】:

  • 我尝试设置一个计时器,每 5 分钟调用一次 ugi.checkTGTAndReloginFromKeytab(),但我遇到了同样的问题。奇怪的是,我还有其他进程可以长期保持 HTable 实例打开,但它们访问表的频率更高,不需要重新登录。接下来我将尝试在计时器上实际读取表格。
  • 我认为我的问题是同一个进程试图在同一个会话中访问一个不安全和安全的集群。我们添加了代码以确保在任何操作之前完成正确的登录。如果没有这种情况,我相信 checkTGTAndReloginFromKeytab() 在每个操作之前都是解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 2021-12-06
  • 2016-03-11
  • 1970-01-01
相关资源
最近更新 更多