

AWS Data Pipeline 不再提供給新客戶。的現有客戶 AWS Data Pipeline 可以繼續正常使用服務。[進一步了解](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用命令列啟動叢集
<a name="dp-launch-emr-jobflow-cli"></a>

如果您定期執行 Amazon EMR 叢集來分析 Web 日誌或分析科學資料，您可以使用 AWS Data Pipeline 來管理您的 Amazon EMR 叢集。使用 時 AWS Data Pipeline，您可以指定在叢集啟動之前必須符合的先決條件 （例如，確保今天的資料已上傳至 Amazon S3。) 本教學課程會逐步引導您啟動叢集，該叢集可以是簡單 Amazon EMR 型管道的模型，或做為更涉及管道的一部分。

**先決條件**

在您可以使用 CLI 之前，必須完成下列步驟：

1. 安裝和設定命令列界面 (CLI)。如需詳細資訊，請參閱[存取 AWS Data Pipeline](what-is-datapipeline.md#accessing-datapipeline)。

1. 確保名為 **DataPipelineDefaultRole** 和 **DataPipelineDefaultResourceRole** 的 IAM 角色存在。 AWS Data Pipeline 主控台會自動為您建立這些角色。如果您至少尚未使用 AWS Data Pipeline 主控台一次，則必須手動建立這些角色。如需詳細資訊，請參閱[的 IAM 角色 AWS Data Pipeline](dp-iam-roles.md)。

**Topics**
+ [建立管道定義檔案](#streaming-cluster-json)
+ [上傳並啟動管道定義](#streaming-cluster-activate)
+ [監控管道執行](#streaming-cluster-monitor)

## 建立管道定義檔案
<a name="streaming-cluster-json"></a>

下列程式碼是簡單 Amazon EMR 叢集的管道定義檔案，該叢集會執行 Amazon EMR 提供的現有 Hadoop 串流任務。此範例應用程式稱為 WordCount，您也可以使用 Amazon EMR 主控台執行它。

將此程式碼複製到文字檔，並儲存為 `MyEmrPipelineDefinition.json`。您應該將 Amazon S3 儲存貯體位置取代為您擁有的 Amazon S3 儲存貯體名稱。您還應該取代開始和結束日期。若要立即啟動叢集，`startDateTime`請將 設定為過去一天的日期，`endDateTime`將 設定為未來的一天。 AWS Data Pipeline 然後 會立即開始啟動「逾期」叢集，嘗試將其視為工作待處理項目。此回填表示您不需要等待一小時，即可看到 AWS Data Pipeline 啟動其第一個叢集。

```
{
  "objects": [
    {
      "id": "Hourly",
      "type": "Schedule",
      "startDateTime": "2012-11-19T07:48:00",
      "endDateTime": "2012-11-21T07:48:00",
      "period": "1 hours"
    },
    {
      "id": "MyCluster",
      "type": "EmrCluster",
      "masterInstanceType": "m1.small",
      "schedule": {
        "ref": "Hourly"
      }
    },
    {
      "id": "MyEmrActivity",
      "type": "EmrActivity",
      "schedule": {
        "ref": "Hourly"
      },
      "runsOn": {
        "ref": "MyCluster"
      },
      "step": "/home/hadoop/contrib/streaming/hadoop-streaming.jar,-input,s3n://elasticmapreduce/samples/wordcount/input,-output,s3://myawsbucket/wordcount/output/#{@scheduledStartTime},-mapper,s3n://elasticmapreduce/samples/wordcount/wordSplitter.py,-reducer,aggregate"
    }
  ]
}
```

 此管道有三個物件：
+  `Hourly`，代表工作排程。您可以將排程設定為活動的欄位之一。當您這麼做時，活動會根據該排程執行，或如本案例每小時執行。
+  `MyCluster`，代表用來執行叢集的一組 Amazon EC2 執行個體。您可以指定執行為叢集之 EC2 執行個體的大小和數量。如果您不指定執行個體的數量，則此叢集會啟動兩個，主節點和任務節點。您可以指定要在其中啟動叢集的子網路。您可以將其他組態新增至叢集，例如引導操作，將其他軟體載入 Amazon EMR 提供的 AMI。
+  `MyEmrActivity`，代表使用叢集處理的運算。Amazon EMR 支援多種類型的叢集，包括串流、串聯和指令碼 Hive。`runsOn` 欄位是指返回 MyCluster，使用它做為叢集基礎的規格。

## 上傳並啟動管道定義
<a name="streaming-cluster-activate"></a>

您必須上傳管道定義並啟用管道。在下列範例命令中，將 *pipeline\$1name* 取代為管道的標籤，並將 *pipeline\$1file* 取代為管道定義`.json`檔案的完整路徑。

**AWS CLI**

若要建立管道定義並啟用管道，請使用下列 [create-pipeline](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/create-pipeline.html) 命令。請注意管道的 ID，因為您會將此值與大多數 CLI 命令搭配使用。

```
aws datapipeline create-pipeline --name pipeline_name --unique-id token
{
    "pipelineId": "df-00627471SOVYZEXAMPLE"
}
```

若要上傳管道定義，請使用下列 [put-pipeline-definition](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/put-pipeline-definition.html) 命令。

```
aws datapipeline put-pipeline-definition --pipeline-id df-00627471SOVYZEXAMPLE --pipeline-definition file://MyEmrPipelineDefinition.json
```

如果您管道驗證成功， `validationErrors` 欄位會是空的。您應該檢閱任何警告。

若要啟用管道，請使用下列 [activate-pipeline](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/activate-pipeline.html) 命令。

```
aws datapipeline activate-pipeline --pipeline-id df-00627471SOVYZEXAMPLE
```

您可以使用下列 [list-pipelines](https://docs.aws.amazon.com/cli/latest/reference/datapipeline/list-pipelines.html) 命令，驗證管道是否出現在管道清單中。

```
aws datapipeline list-pipelines
```

## 監控管道執行
<a name="streaming-cluster-monitor"></a>

您可以使用 Amazon EMR 主控台檢視啟動 AWS Data Pipeline 的叢集，也可以使用 Amazon S3 主控台檢視輸出資料夾。

**若要檢查 啟動的叢集進度 AWS Data Pipeline**

1. 開啟 Amazon EMR 主控台。

1. 由 產生的叢集 AWS Data Pipeline 名稱格式如下：*<pipeline-identifier>*\$1@*<emr-cluster-name>*\$1*<launch-time>*。  
![\[Elastic MapReduce 叢集 list showing three running clusters with unique identifiers.\]](http://docs.aws.amazon.com/zh_tw/datapipeline/latest/DeveloperGuide/images/dp-emr-scenario-starting.png)

1. 其中一個執行完成後，請開啟 Amazon S3 主控台，檢查時間戳記輸出資料夾是否存在，並包含叢集的預期結果。  
![\[Amazon S3 console showing folders with timestamp names in the wordcount directory.\]](http://docs.aws.amazon.com/zh_tw/datapipeline/latest/DeveloperGuide/images/dp-emr-scenario-output.png)