【问题标题】:spark-submit --proxy-user do not work in yarn cluster modespark-submit --proxy-user 在纱线集群模式下不起作用
【发布时间】:2016-04-18 06:05:02
【问题描述】:

目前我正在使用 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 作业。那么为什么指定“--proxy-user”选项在“yarn-cluster”模式下提交时会查找TGT。我是不是做错了什么。

【问题讨论】:

  • 您好,您找到解决方案了吗?
  • @Benjamin。唯一的解决办法就是修改spark代码,结果很痛苦。

标签: hadoop apache-spark hadoop-yarn


【解决方案1】:

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

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

我必须像 Hive 那样运行“spark-submit”。基本上在提交我的申请之前 kinit 然后提供代理用户。所以这就是我解决它的方法。

kinit @ -k -t 使用 --proxy-user 提交 spark-submit

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2020-04-25
    • 2023-04-08
    • 2016-04-09
    • 2015-04-30
    • 2017-08-30
    相关资源
    最近更新 更多