我有一个java应用程序,它需要访问Hadoop集群来定期获取文件(例如,每24小时一次)。
由于为保护该集群启用了Kerberos协议,所以我使用UserGroupInformation类的UserGroupInformation()方法:https://hadoop.apache.org/docs/r1.2.1/api/org/apache/hadoop/security/UserGroupInformation.html。
现在,我知道kinit命令授予一个票证授予票证来访问任何Kerberized,并且必须定期刷新此票证(通过kinit命令)。现在,我的问题是,是否需要定期(从代码中)运行kinit,并结合上面的Java运行代码才能工作?或者一旦运行就足够了吗?或者根本不需要。
感谢您的阅读。
发布于 2017-06-05 05:55:35
不是的。如果您使用带有有效键签和用户名的函数kinit,则不需要定期从任何地方运行loginUserFromKeytab。
来自文档
从keytab文件中登录用户。从keytab文件加载用户标识并将其登录。它们将成为当前登录的用户。
因此,每次使用有效的参数调用方法loginUserFromKeytab时。它登录用户。
发布于 2017-06-05 20:35:27
这是一个又长又复杂的故事。简言之:
checkTGTAndReloginFromKeytab(),并且当它接近到期时,它将重新创建该票证。一些推荐读数:
https://stackoverflow.com/questions/44362086
复制相似问题