Apache spark 从Spark作业执行sudo命令

Apache spark 从Spark作业执行sudo命令,apache-spark,sudo,Apache Spark,Sudo,我试图在集群模式下从Spark scala作业执行python脚本,如下所示 import scala.sys.process._ Process("sudo -n python helloWorld.py").!! 我收到“sudo:需要密码”的消息 我尝试按照中的说明为用户设置NOPASSWD,方法是使用“sudo visudo”在文件末尾添加一行,如下所示: <username> ALL=(ALL) NOPASSWD: ALL ALL=(ALL)NOPASSWD:ALL

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

import scala.sys.process._

Process("sudo -n python helloWorld.py").!!
我收到“sudo:需要密码”的消息

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

<username> ALL=(ALL) NOPASSWD: ALL
ALL=(ALL)NOPASSWD:ALL

然而,它没有起作用。我仍然会犯同样的错误。有什么问题吗?

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

我在python程序中使用了
dmidecode
,该程序使用“sudo”来运行一些命令。我在docker上运行了
dmidecode
,没有任何错误

我认为这是因为docker在根模式下运行,而python程序的每个包和要求都设置在根模式下。但在“ubuntu”中,我在“sudo user”中做了所有设置,它引用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

我希望这将对您有所帮助

您确定该作业正在使用正确的用户运行吗?尝试运行命令
whoami
以获取实际用户whoami将用户显示为纱线。我为该用户设置了NOPASSWD,如下所示:纱线全部=(全部)NOPASSWD:ALL@vijay您是否在executor或driver中运行了
whoami
?如果您在foreachPartition这样的方法中运行它,它就是executor。Executor由Thread启动。我在驱动程序上运行了whoami。您确定'sudo whoami'命令的输出为'root'并在visudo上设置'%sudo ALL=(ALL:ALL)NOPASSWD:ALL'吗?所有sudo用户的最后一组NOPASSWD。