我想在 Amazon EMR 集群中的每个节点上安装一个 Python 模块。看起来最明显的方法是通过 ssh 连接到每个节点并在命令行安装它。我将 YARN 视为在集群中的每个节点上运行相同 JAR 文件的一种方式,但 YARN 的“jar”命令似乎在本地系统上运行。
最佳答案
您可以使用 bootstrap在启动集群时在每个 EMR 节点上安装第 3 方软件。
如果您使用命令行,您可以传递保存在 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"
如果您使用的是网络界面
- 创建shell脚本以下载必要的软件
- 转到
高级选项
,作为常规集群设置
的一部分,您可以指定引导操作 - 每次克隆集群时,这些操作都会被保留,并确保在启动集群时完成 Bootstrap 。
关于hadoop - 在每个 EMR/Yarn 节点上运行 Unix shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34252030/