【问题标题】:Hadoop kerberos ticket auto renewHadoop kerberos 票证自动续订
【发布时间】:2017-04-05 23:25:29
【问题描述】:

我在使用以下命令从 HDFS 下载大文件夹时遇到一些问题:

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

文件夹很大(将近 3TB),kerberos 票证的生命周期为 10 小时,可再生生命周期为 7 天。

下载需要10多个小时,所以我无法完成操作(kerberos安全异常)。有没有办法为get操作设置ticket的自动续费?

【问题讨论】:

标签: hadoop hdfs kerberos


【解决方案1】:

“7 天的可续订有效期” 表示您可以明确将票证续订 7 天,而无需提供密码;每次续订都会让您多花 10 小时。

我知道与 Linux 捆绑在一起的单一自动更新(和自动重新创建)机制,它是 SSSD 的一部分。因此,如果您想将 Linux 身份验证委托给 OpenLDAP 或 Microsoft AD 服务,经过几周的调试(...如果您有幸成功...),您将拥有 --可选 -- 由操作系统为您管理的 Kerberos 票证。

还有一个由 Hadoop Kerberos 库启动的自动更新线程,但它只适用于连接前在缓存中找到的票证;如果您使用库(和 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

【讨论】:

    【解决方案2】:

    我解决了我的问题如下:

    第 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_krbtkt
    

    【讨论】:

    • 您是对的,使用此解决方案,您必须在工作完成后手动从 crontab 中删除续订。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 2021-10-20
    • 2011-12-23
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    相关资源
    最近更新 更多