2016-01-13 234 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用户火花提交

是最好的实现。所以不,你没有做错什么。

相关问题