将相同的ebs快照附加到每个emr卷?

x9ybnkn6  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(270)

我想在emr作业中使用ebs快照。因为Map程序从快照中读取数据,所以我希望快照装载到每个节点上。除了登录到每个节点之外,还有其他简单的方法吗?我想我可以在mapreduce工作的第一步安装它,但这似乎是错误的。有更简单的方法吗?

mwngjboj

mwngjboj1#

这是可能的,但你得克服一些困难才能使它发挥作用。假设您有从shell脚本中的ebs快照创建ebs卷的方法。emr提供引导操作,这些只是您可以创建和运行的shell脚本。引导操作在允许运行任何作业(emr中的步骤)之前运行。
以下是执行shell脚本所需的步骤:
基于快照创建新的ebs卷。aws二进制文件安装在所有emr示例上,因此这是您的最佳选择。假设您知道快照id,这应该很简单:http://docs.aws.amazon.com/cli/latest/reference/ec2/create-volume.html
确保包含deleteontermination附件。
您需要解析响应以获取ebs卷id。
将刚刚创建的卷(使用ebs卷id)附加到当前示例:http://docs.aws.amazon.com/cli/latest/reference/ec2/attach-volume.html
要获取当前示例id,请使用元数据服务:

wget -q -O - http://instance-data/latest/meta-data/instance-id

拥有shell脚本后,需要将其上载到s3,然后将该脚本作为引导操作添加到集群:http://docs.aws.amazon.com/elasticmapreduce/latest/developerguide/emr-plan-bootstrap.html
还要注意的是,您创建的每个ebs卷都将收取费用,因此请确保正确设置了delete-on-termination逻辑!

相关问题