我想在emr作业中使用ebs快照。因为Map程序从快照中读取数据,所以我希望快照装载到每个节点上。除了登录到每个节点之外,还有其他简单的方法吗?我想我可以在mapreduce工作的第一步安装它,但这似乎是错误的。有更简单的方法吗?
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逻辑!
1条答案
按热度按时间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,请使用元数据服务:
拥有shell脚本后,需要将其上载到s3,然后将该脚本作为引导操作添加到集群:http://docs.aws.amazon.com/elasticmapreduce/latest/developerguide/emr-plan-bootstrap.html
还要注意的是,您创建的每个ebs卷都将收取费用,因此请确保正确设置了delete-on-termination逻辑!