如何在现有EMR集群上运行EmrActivity?

时间:2017-05-04 23:41:19

标签: amazon-data-pipeline

有没有办法在现有群集上的AWS Data Pipeline中运行EmrActivity?我们目前正在使用Data Pipeline使用EmrCluster和EmrActivity在AWS EMR中运行作业,但我们希望所有管道都在同一个集群上运行。我已经尝试阅读文档并在架构师中构建管道但我似乎无法找到一种方法来做任何事情,只需创建一个集群并在其上运行作业。似乎不是一种定义使用现有集群的新管道的方法。如果有我怎么办?我们目前正在使用CloudFormation来创建我们的管道,所以如果可能的话,使用CloudFormation的示例会更好,但我会采取我能得到的。

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。

  1. 启动您的EMR群集
  2. 使用选项--workerGroup=name-of-the-worker-group
  3. 在主实例上启动TaskRunner
  4. 在您的管道活动中,请勿指定runsOn参数,而是通过您的工作组。
  5. 以下是使用CloudFormation定义此类参数的活动示例:

    ...
    {
            "Id": "S3ToRedshiftCopyActivity",
            "Name": "S3ToRedshiftCopyActivity",
            "Fields": [
              {
                "Key": "type",
                "StringValue": "RedshiftCopyActivity"
              },
              {
                "Key": "workerGroup",
                "StringValue": "name-of-the-worker-group"
              },
              {
                "Key": "insertMode",
                "StringValue": "#{myInsertMode}"
              },
              {
                "Key": "commandOptions",
                "StringValue": "FORMAT CSV"
              },
              {
                "Key": "dependsOn",
                "RefValue": "RedshiftTableCreateActivity"
              },
              {
                "Key": "input",
                "RefValue": "S3StagingDataNode"
              },
              {
                "Key": "output",
                "RefValue": "DestRedshiftTable"
              }
            ]
    }
    ...
    

    您可以在此处找到有关如何执行此操作的详细文档: http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-how-task-runner-user-managed.html