【问题标题】:Executing sudo command from Spark job从 Spark 作业执行 sudo 命令
【发布时间】:2018-10-21 22:52:34
【问题描述】:

我正在尝试以集群模式从 Spark scala 作业执行 python 脚本,如下所示。

import scala.sys.process._

Process("sudo -n python helloWorld.py").!!

我收到“sudo:需要密码”消息。

我尝试按照link 中的说明为用户设置 NOPASSWD,方法是使用 'sudo visudo' 在文件末尾添加一行,如下所示:

<username> ALL=(ALL) NOPASSWD: ALL

但是没有用。我仍然得到同样的错误。有什么问题?

【问题讨论】:

  • 您确定该作业正在使用正确的用户运行吗?尝试运行命令whoami 获取实际用户

标签: apache-spark sudo


【解决方案1】:

在我的 python 程序中使用dmidecode 时遇到了这个问题,该程序使用“sudo”来运行某些命令。我在 docker 上运行了 dmidecode 并且没有任何错误。

我认为这是因为 docker 在 root 模式下运行,并且我的 python 程序的每个包和要求都设置在 root 模式下。但是在“ubuntu”中,我在“sudo 用户”中进行了所有设置,这些设置引用了 root 以执行“sudo”命令,而我的 root 用户没有任何设置。

如前所述,我的提交是:

sudo ~/spark/bin/spark-submit --name tets --master spark://10.28.10.9:5050 --executor-cores 4 
                              --executor-memory 6G --files use.npy --py-files a.zip main.py

但在 docker 中是:

~/spark/bin/spark-submit --name tets --master spark://10.28.10.9:5050 --executor-cores 4 
                         --executor-memory 6G --files use.npy --py-files a.zip main.py

希望对你有帮助

【讨论】:

  • 您确定您的 'sudo whoami' 命令的输出是 'root' 并在 visudo 上设置 '%sudo ALL=(ALL:ALL) NOPASSWD: ALL' 吗?为所有 sudo 用户设置的最后一个 NOPASSWD。​​span>
【解决方案2】:

该过程是从火花驱动程序开始的吗?您应该以 sudo 用户身份运行 spark 应用程序。

【讨论】:

  • whoami 将用户显示为纱线。我为这个用户设置了 NOPASSWD,如下所示: yarn ALL=(ALL) NOPASSWD: ALL
  • @vijay 你在执行程序或驱动程序中运行了whoami 吗?如果您在 foreachPartition 之类的方法中运行它,它就是执行程序。 Executor 由 yarn 启动。
  • 我在驱动程序上运行了 whoami。
猜你喜欢
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多