2017-04-03 427 views
0

我面临的一些问题,使用下面的命令从HDFS下载大文件夹:Hadoop的Kerberos票据自动更新

hadoop fs -get /path/to/hdfs/big/folder . 

该文件夹是大(几乎3TB)和Kerberos票据有10小时和寿命7天的可用寿命。

下载的时间超过10小时,所以我不能完成操作(Kerberos安全例外)。有什么办法可以为获取操作设置自动更新票证吗?

+0

请参阅https://community.hortonworks.com/questions/9394/kerberos-ticket-isnt-being-renewed-by-solr-when-st.html –

+0

谢谢@RemusRusanu,但建议的解决方案适用于_solr_,我有** get **操作的问题。 –

回答

1

“7天可再生一生”意味着你可以更新票证明确,无需提供密码,7天;每次续约都会让你再过10小时。

我知道在Linux捆绑一个自动更新(和自动娱乐)机制,它的SSSD的一部分。所以,如果你要委托的Linux AUTH到OpenLDAP或微软AD服务,几个星期的调试后(......如果你足够幸运,曾经成功...),你将有 - 可选 - 一个Kerberos门票由操作系统管理。

还有由Hadoop的Kerberos的库启动自动更新线程,但它仅适用于连接之前在高速缓存中找到的门票;如果您创建使用库(和密钥表)票自己,那么它不会是可再生能源 - 并且必须定期重新创建 - 的许多事情Kerberos实现的Java没有处理好之一。底线:您可以试试这种技巧,在后台更新票证,直到您在完成传输后释放“锁定”为止。

touch lock.txt 
kinit ************* 
{ 
    while [[ -f lock.txt ]] 
    do 
    kinit -R 
    sleep 5m 
    done 
} & 

hdfs dfs *************** 
rm -f lock.txt 
# backround process will terminate within 5m 
0

我解决我的问题如下:

PART 1

#set the kerberos ticket cache location 
export KRB5CCNAME=/tmp/my_krbtkt 

#create a renewable ticket (10 hours lifetime + renewable for 7 days) 
kinit -r7d -l10h 

#execute the long time command 
hadoop fs -get /path/to/hdfs/big/folder . 

PART 2

计划在crontab里面Kerberos票据续期(即每6小时):

0 */6 * * * kinit -R -c /tmp/my_krbtkt 
+0

该计划作业将在7天后惨败,并在邮箱中填充错误消息。巨大的成功。 –

+0

你是对的,有了这个解决方案,你必须在工作完成后手动删除crontab中的更新。 –