我想在EMR作业中使用EBS快照。因为映射器从快照读取,所以我希望快照安装在每个节点上。除了登录到每个节点,还有其他简便的方法吗?我想我可以进行mapreduce工作的第一步来安装它,但这似乎是错误的。有更简单的方法吗?

最佳答案

这是可能的,但是您必须跳过一些障碍才能使其正常工作。假设您有从 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卷付费,因此请确保正确设置了终止逻辑!

    关于hadoop - 将相同的EBS快照附加到每个EMR卷?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34126165/

    10-12 04:59