我是AWS EMR的新手,我从EMR中的shell脚本安装我的python库依赖项。
但此安装不影响从节点(核心/任务),依赖项安装在主节点中。
因此,现在我正在尝试编写一个在从节点上安装依赖项的脚本。
使用boto3框架,我能够检索ID。
response = emr_client.list_instances(
ClusterId=cluster_id
)
instances =[]
for i in xrange(len(response["Instances"])):
print response["Instances"][i]["Ec2InstanceId"]
instances.append(response["Instances"][i]["Ec2InstanceId"])使用send_command -ids触发SSM实例-在正常的ec2实例中,这是可行的,但由于此实例在EM中,因此抛出错误InvalidInstanceId
resp = ssm_client.send_command(
InstanceIds=instances,
DocumentName="setup.sh"
)发布于 2018-03-28 23:31:53
电子病历提供了名为Bootstrap Actions的选项,在安装实际的hadoop软件之前,可以在为电子病历创建的所有ec2实例中执行该选项。我建议您探索该选项,而不是一个接一个地手动运行shell脚本。
EMR还提供了使用自定义AMI的选项。您可以创建EMR,在其中安装您的第三方依赖项,并为其创建Ec2,然后使用该AMI创建EMR集群。
https://stackoverflow.com/questions/49508175
复制相似问题