我想在amazonemr集群中的每个节点上安装python模块。显然,这样做的方法是通过ssh连接到每个节点并在命令行中安装它。我把yarn看作是在集群中的每个节点上运行相同jar文件的一种方式,但是yarn的“jar”命令似乎是在本地系统上运行的。
3gtaxfhh1#
yarn有一个名为distributedshell的代码示例,它可以完成您所说的工作。但是它有点重,可以使用puppet在集群中安装和配置软件。当然,它也可以运行unixshell命令或安装python模块。有关详细信息,请参阅http://puppetlabs.com
oknwwptz2#
在启动集群时,可以使用引导在每个emr节点上安装第三方软件。如果您使用的是命令行,那么可以传递保存在s3中的shell脚本作为引导操作的一部分。
aws emr create-cluster --name "Test cluster" --ami-version 3.3 \ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hue Name=Hive Name=Pig \ --instance-count 5 --instance-type m3.xlarge \ --bootstrap-action Path="s3://elasticmapreduce/bootstrap-actions/download.sh"
如果您使用的是web界面创建shell脚本以下载必要的软件去 advanced options 作为一部分 General Cluster Settings 可以指定引导操作每次克隆集群时,这些操作都将被保留,并确保在启动集群时完成引导。
advanced options
General Cluster Settings
sz81bmfz3#
下面是一种在创建emr集群后跨所有节点运行脚本的可能方法。
yarn node -list 2>/dev/null \ | sed -n "s/^\(ip[^:]*\):.*/\1/p" \ | xargs -t -I{} \ ssh -i ~/.ssh/yourkey.pem hadoop@{} \ "pip install package"
关于这里发生的事情的一些注意事项:这个 yarn node -list 步骤列出所有节点(使用 --states 限制此选项)这个 sed 步骤解析该列表以获得节点名称如果需要,添加 -o StrictHostKeyChecking=no 到ssh以禁用主机密钥检查如果需要,添加 -P n 将此限制为 n 一次一个节点这要求ssh私钥存在于当前节点上
yarn node -list
--states
sed
-o StrictHostKeyChecking=no
-P n
n
mitkmikd4#
这很难看,但我用的是一双 run-if 引导操作 instance.isMaster=true 以及 instance.isMaster=false 要在所有节点上运行我的命令:
run-if
instance.isMaster=true
instance.isMaster=false
--bootstrap-action \ Path=s3://elasticmapreduce/bootstrap-actions/run-if,Args=["instance.isMaster=true","sudo pip install sklearn"] \ Path=s3://elasticmapreduce/bootstrap-actions/run-if,Args=["instance.isMaster=false","sudo pip install sklearn"]
4条答案
按热度按时间3gtaxfhh1#
yarn有一个名为distributedshell的代码示例,它可以完成您所说的工作。但是它有点重,可以使用puppet在集群中安装和配置软件。当然,它也可以运行unixshell命令或安装python模块。
有关详细信息,请参阅http://puppetlabs.com
oknwwptz2#
在启动集群时,可以使用引导在每个emr节点上安装第三方软件。
如果您使用的是命令行,那么可以传递保存在s3中的shell脚本作为引导操作的一部分。
如果您使用的是web界面
创建shell脚本以下载必要的软件
去
advanced options
作为一部分General Cluster Settings
可以指定引导操作每次克隆集群时,这些操作都将被保留,并确保在启动集群时完成引导。
sz81bmfz3#
下面是一种在创建emr集群后跨所有节点运行脚本的可能方法。
关于这里发生的事情的一些注意事项:
这个
yarn node -list
步骤列出所有节点(使用--states
限制此选项)这个
sed
步骤解析该列表以获得节点名称如果需要,添加
-o StrictHostKeyChecking=no
到ssh以禁用主机密钥检查如果需要,添加
-P n
将此限制为n
一次一个节点这要求ssh私钥存在于当前节点上
mitkmikd4#
这很难看,但我用的是一双
run-if
引导操作instance.isMaster=true
以及instance.isMaster=false
要在所有节点上运行我的命令: