在服务器应用程序中,我正在从Java应用程序连接到Kerberos安全的Hadoop群集。我正在使用HDFS文件系统,Oozie,Hive等各种组件。在应用程序启动时,我确实打电话给
UserGroupInformation.loginUserFromKeytabAndReturnUGI( ... );
这将返回我的UserGroupInformation实例,并在应用程序生存期内保留它。当执行特权操作时,我使用启动它们ugi.doAs(action)。
这可以正常工作,但是我想知道是否以及何时更新kerberos票UserGroupInformation?我发现了一种UserGroupInformation.checkTGTAndReloginFromKeytab()似乎在快要到期时都会进行票证更新的方法。我还发现,WebHdfsFileSystem例如各种Hadoop工具都在调用此方法。
现在,如果我希望我的服务器应用程序(可能运行数月甚至数年)从未经历过票证到期,那么最好的方法是什么?提供具体问题:
是否可以在checkTGTAndReloginFromKeytab需要时依赖它们调用的各种Hadoop客户端?
我应该checkTGTAndReloginFromKeytab在代码中称呼自己吗?
如果是这样,我应该在每次调用ugi.doAs(...)一个计时器之前进行设置,还是设置一个计时器并定期(多久一次)调用一次?
回首忆惘然
相关分类