在EMR Slaves上运行命令?

时间:2016-11-30 20:34:04

标签: apache-spark yarn emr amazon-emr

我正在尝试在所有从属计算机上使用pip install更新正在运行的EMR集群。我怎么能这样做?

我无法通过引导步骤来执行此操作,因为它是一个长时间运行的EMR,我无法将其删除。

EMR集群正在运行Spark&纱线,所以我通常会使用spark slaves.sh,但我无法在主节点上找到该脚本。它安装在我找不到的地方吗?或者有什么方法可以安装它吗?

我见过其他问题,说使用yarn distributed-shell,但我找不到一个如何做到这一点的工作示例。

BTW,我相信集群正在使用EMR 4.8.0,Spark 1.6.1。

1 个答案:

答案 0 :(得分:9)

您可以从节点运行yarn命令以获取所有节点的列表,并且可以使用SSH在所有这些节点上运行命令。就像前面提到的文章一样,你可以运行像

这样的东西
#Copy ssh key(like ssh_key.pem) of the cluster to master node.
aws s3 cp s3://bucket/ssh_key.pem ~/

# change permissions to read 
chmod 400 ssh_key.pem

# Run a PIP command
yarn node -list|sed -n "s/^\(ip[^:]*\):.*/\1/p" | xargs -t -I{} -P10 ssh -o StrictHostKeyChecking=no -i ~/ssh_key.pem hadoop@{} "pip install package"