spark-submit --proxy-user 在 yarn 集群模式下不工作

spark-submit --proxy-user do not work in yarn cluster mode

目前我使用的是cloudera hadoop单节点集群(启用了kerberos。)

在客户端模式下,我使用以下命令

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>

我猜想在集群模式下,spark-submit 不会在客户端计算机中寻找 TGT...它将 "keytab" 文件传输到集群,然后启动 spark 作业。那么为什么在 "yarn-cluster" 模式下提交时指定“--proxy-user”选项会查找 TGT。我是不是做错了什么。

Spark 不允许使用代理用户提交密钥表和主体。 YARN 模式官方文档中的功能描述(第二段)明确指出,当您 运行ning 长 运行ning 作业时,您需要 keytab 和 principal。这使应用程序能够继续处理任何安全问题。

想象一下,如果登录到您的应用程序的所有应用程序用户都可以代理到您的密钥表。

我必须做 Hive 对 运行 "spark-submit" 做的事情。基本上是在提交我的申请之前 kinit,然后提供一个代理用户。所以这就是我解决它的方法。

kinit @-k -t spark-submit 与 --proxy-user

是最好的实现。所以不,你没有做错任何事。