使用以下命令从HDFS下载大文件夹时遇到了一些问题:
hadoop fs -get /path/to/hdfs/big/folder .该文件夹很大(几乎3TB),kerberos票证的生存期为10小时,可重命名的寿命为7天。
下载需要超过10个小时,所以我无法完成操作(kerberos安全异常)。有什么办法可以为get操作自动更换票吗?
发布于 2017-04-04 08:50:20
“可续订7天”意味着您可以明确地续签票,而无需提供密码,为期7天;每次续签都会给您多10小时的时间。
我知道一个与Linux捆绑在一起的自动更新(和自动更新)机制,它是SSSD的一部分。因此,如果您想将Linux委托给OpenLDAP或Microsoft服务,经过几周的调试(...if是幸运的,您已经成功了……),您将拥有--或者是--由操作系统为您管理的Kerberos票证。
也有一个由Hadoop库启动的自动更新线程,但它只适用于连接之前在缓存中找到的票证;如果您自己使用库(和一个keytab)创建票证,那么它将不可再生--这是Java的Kerberos实现处理不好的许多事情之一--并且必须定期重新创建。
底线:您可以尝试这种方法,在后台续签,直到您在传输完成后释放一个“锁”。
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发布于 2017-04-05 15:25:29
我解决了我的问题如下:
第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 .第2部分
在crontab内安排kerberos票证更新(即每6小时一次):
0 */6 * * * kinit -R -c /tmp/my_krbtkthttps://stackoverflow.com/questions/43189044
复制相似问题