将相同的EBS快照附加到每个EMR卷?

时间:2015-12-07 03:52:44

标签: hadoop emr mrjob

我想在EMR作业中使用EBS快照。由于映射器从快照中读取,因此我希望在每个节点上安装快照。除了登录每个节点之外,还有一种简单的方法吗?我想我可以让我的mapreduce工作的第一步来安装它,但这似乎是错误的。有没有更简单的方法呢?

1 个答案:

答案 0 :(得分:1)

这是可能的,但你必须跳过一些箍才能让它发挥作用。假设您有配方从shell脚本中的EBS快照创建EBS卷。 EMR提供引导操作,这些操作只是您可以创建和运行的shell脚本。在允许任何作业(EMR中的步骤)运行之前运行引导操作。

以下是使shell脚本执行所需的步骤:

  1. 根据您的快照创建新的EBS卷。 aws二进制文件安装在所有EMR实例上,因此这是您最好的选择。假设您知道快照ID,这应该是直截了当的: http://docs.aws.amazon.com/cli/latest/reference/ec2/create-volume.html
    • 确保包含DeleteOnTermination附件。
    • 您需要解析响应以获取EBS卷ID。
  2. 将刚创建的卷(使用EBS卷ID)附加到当前实例: http://docs.aws.amazon.com/cli/latest/reference/ec2/attach-volume.html
  3. 要获取当前实例ID,请使用元数据服务:

    # Uncomment this line to define a global platform for your project
    platform :ios, '8.0'
    # Uncomment this line if you're using Swift
    use_frameworks!
    
    target 'Expense' do
    pod 'ExpandingTableView'
    end
    
    target 'ExpenseTests' do
    
    end
    
    target 'ExpenseUITests' do
    
    end
    

    获得shell脚本后,需要将其上载到S3,然后将该脚本作为引导操作添加到群集中: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html

    另外要注意,您将为您创建的每个EBS卷付费,因此请确保正确设置删除终止逻辑!