2016-01-13 241 views
3

目前我使用的是Cloudera的Hadoop的單節點集羣(啓用了Kerberos)。火花提交--proxy用戶不紗線集羣模式下工作

在客戶端模式,我用下面的命令

kinit 
spark-submit --master yarn-client --proxy-user cloudera examples/src/main/python/pi.py 

這工作正常。在集羣模式下我用下面的命令(沒有做的kinit沒有TGT是存在於高速緩存)

spark-submit --principal <myprinc> --keytab <KT location> --master yarn-cluster examples/src/main/python/pi.py 

也能正常工作。但是當我使用羣集模式下面的命令(不使用kinit完成,沒有TGT在高速緩存中存在)

spark-submit --principal <myprinc> --keytab <KT location> --master yarn-cluster --proxy-user <proxy-user> examples/src/main/python/pi.py 

拋出以下錯誤

<proxy-user> tries to renew a token with renewer <myprinc> 

我想在集羣模式下的火花提交不在客戶端機器中查找TGT ...將「keytab」文件傳輸到集羣,然後啓動spark任務。那麼爲什麼指定「--proxy-user」選項在「yarn-cluster」模式下提交時查找TGT。難道我做錯了什麼。

+0

嗨,你有沒有找到解決方案? – Benjamin

+0

@Benjamin。唯一的解決辦法是修改火花代碼,這是一個巨大的痛苦。 –

回答

2

Spark不允許用代理用戶提交keytab和principal。 YARN模式(第二段)的官方文檔中的特性描述明確指出,當您運行長時間運行的作業時,您需要keytab和principal。這使應用程序能夠繼續處理任何安全問題。

想象一下,如果登錄到應用程序的所有應用程序用戶都可以代理到您的密鑰表中。

我必須做Hive做的「spark-submit」。提交我的應用程序之前基本上是kinit,然後提供一個代理用戶。所以這是我如何解決它。

@的kinit -k -t 與--proxy用戶火花提交

是最好的實現。所以不,你沒有做錯什麼。

相關問題