2017-04-03 122 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中的更新。 –