

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

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

# 使用任務執行器
<a name="dp-using-task-runner"></a>

 任務執行器是一種任務代理程式應用程式，可輪詢 AWS Data Pipeline 排程任務，並在 Amazon EC2 執行個體、Amazon EMR 叢集或其他運算資源上執行它們，並依此報告狀態。根據您的應用程式，您可以選擇：
+ 允許 為您 AWS Data Pipeline 安裝和管理一或多個 Task Runner 應用程式。當管道啟動時，活動 runsOn 欄位參考的預設`Ec2Instance`或`EmrCluster`物件會自動建立。 AWS Data Pipeline 會負責在 EC2 執行個體或 EMR 叢集的主節點上安裝 Task Runner。在此模式中， AWS Data Pipeline 可以為您執行大部分的執行個體或叢集管理。
+ 在您管理的資源上執行所有或一部分的管道。潛在資源包括長時間執行的 Amazon EC2 執行個體、Amazon EMR 叢集或實體伺服器。您可以安裝任務執行器 （可以是任務執行器或您自己裝置自訂任務代理程式），只要它可以與 AWS Data Pipeline Web 服務通訊即可。在此模式中，您幾乎可以完全控制使用的資源及其管理方式，而且您必須手動安裝和設定 Task Runner。若要執行此作業，請使用本節中的程序，如[使用任務執行器在現有資源上執行工作](dp-how-task-runner-user-managed.md)中所述。

# AWS Data Pipeline受管資源上的任務執行器
<a name="dp-how-task-runner-dp-managed"></a>

 當資源由 啟動和管理時 AWS Data Pipeline，Web 服務會自動在該資源上安裝 Task Runner，以處理管道中的任務。您可以為活動物件`runsOn`的 欄位指定運算資源 (Amazon EC2 執行個體或 Amazon EMR 叢集）。當 AWS Data Pipeline 啟動此資源時，它會在該資源上安裝 Task Runner，並將其設定為處理其`runsOn`欄位設定為該資源的所有活動物件。當 AWS Data Pipeline 終止資源時，任務執行器日誌會在關閉之前發佈到 Amazon S3 位置。

![\[AWS Data Pipeline受管資源上的任務執行器生命週期\]](http://docs.aws.amazon.com/zh_tw/datapipeline/latest/DeveloperGuide/images/dp-task-runner-managed-emr-jobflow.png)


 例如，若您在管道中使用 `EmrActivity`，並在 `runsOn` 欄位中指定 `EmrCluster` 資源。當 AWS Data Pipeline 處理該活動時，它會啟動 Amazon EMR 叢集，並將 Task Runner 安裝到主節點。然後，此任務執行器會針對其`runsOn`欄位設定為該`EmrCluster`物件的活動處理任務。以下來自管道定義的摘要顯示兩個物件間的此關聯。

```
{
  "id" : "MyEmrActivity",
  "name" : "Work to perform on my data",
  "type" : "EmrActivity",
  "runsOn" : {"ref" : "MyEmrCluster"},
  "preStepCommand" : "scp remoteFiles localFiles",
  "step" : "s3://amzn-s3-demo-bucket/myPath/myStep.jar,firstArg,secondArg",
  "step" : "s3://amzn-s3-demo-bucket/myPath/myOtherStep.jar,anotherArg",
  "postStepCommand" : "scp localFiles remoteFiles",
  "input" : {"ref" : "MyS3Input"},
  "output" : {"ref" : "MyS3Output"}
},
{
  "id" : "MyEmrCluster",
  "name" : "EMR cluster to perform the work",
  "type" : "EmrCluster",
  "hadoopVersion" : "0.20",
  "keypair" : "myKeyPair",
  "masterInstanceType" : "m1.xlarge",
  "coreInstanceType" : "m1.small",
  "coreInstanceCount" : "10",
  "taskInstanceType" : "m1.small",
  "taskInstanceCount": "10",
  "bootstrapAction" : "s3://elasticmapreduce/libs/ba/configure-hadoop,arg1,arg2,arg3",
  "bootstrapAction" : "s3://elasticmapreduce/libs/ba/configure-other-stuff,arg1,arg2"
}
```

如需執行此活動的資訊和範例，請參閱 [EmrActivity](dp-object-emractivity.md)。

 如果您在管道中有多個 AWS Data Pipeline受管資源，任務執行器會安裝在每個資源上，而且它們都會輪詢 AWS Data Pipeline 任務以進行處理。

# 使用任務執行器在現有資源上執行工作
<a name="dp-how-task-runner-user-managed"></a>

您可以在您管理的運算資源上安裝 Task Runner，例如 Amazon EC2 執行個體，或實體伺服器或工作站。任務執行器可以安裝在任何相容硬體或作業系統的任何位置，但前提是它可以與 AWS Data Pipeline Web 服務通訊。

例如，當您想要使用 AWS Data Pipeline 來處理存放在組織防火牆內的資料時，這種方法非常有用。透過在本機網路的伺服器上安裝 Task Runner，您可以安全地存取本機資料庫，然後輪詢 以執行 AWS Data Pipeline 下一個任務。當 AWS Data Pipeline 結束處理或刪除管道時，Task Runner 執行個體仍會在您的運算資源上執行，直到您手動將其關閉為止。Task Runner 日誌會在管道執行完成後保留。

若要在您管理的資源上使用 Task Runner，您必須先下載 Task Runner，然後使用本節中的程序將其安裝在運算資源上。

**注意**  
 您只能在 Linux、UNIX 或 macOS 上安裝 Task Runner。Windows 作業系統不支援 Task Runner。  
若要使用 Task Runner 2.0，所需的最低 Java 版本為 1.7。

若要將已安裝的 Task Runner 連線到其應處理的管道活動，請將`workerGroup`欄位新增至物件，並設定 Task Runner 輪詢該工作者群組值。您可以在執行 Task Runner JAR 檔案時，以參數 （例如 `--workerGroup=wg-12345`) 形式傳遞工作者群組字串來執行此操作。

![\[AWS Data Pipeline diagram showing monthly task flow for archiving processed invoices using Task Runner.\]](http://docs.aws.amazon.com/zh_tw/datapipeline/latest/DeveloperGuide/images/dp-task-runner-user-emr-jobflow.png)


```
{
  "id" : "CreateDirectory",
  "type" : "ShellCommandActivity",
  "workerGroup" : "wg-12345",
  "command" : "mkdir new-directory"
}
```

## 安裝任務執行器
<a name="dp-installing-taskrunner"></a>

本節說明如何安裝和設定 Task Runner 及其先決條件。安裝過程是一個相當直接的手動程序。

**安裝 Task Runner**

1. Task Runner 需要 Java 1.6 或 1.8 版。若要判斷是否已安裝 Java，以及其執行的版本，請使用以下命令：

   ```
   java -version
   ```

    如果您的電腦上未安裝 Java 1.6 或 1.8，請從 https：//[http://www.oracle.com/technetwork/java/index.html](http://www.oracle.com/technetwork/java/index.html) 下載其中一個版本。下載並安裝 Java，然後繼續進行下一個步驟。

1. `TaskRunner-1.0.jar` 從 [https://s3.amazonaws.com/datapipeline-us-east-1/us-east-1/software/latest/TaskRunner/TaskRunner-1.0.jar](https://s3.amazonaws.com/datapipeline-us-east-1/us-east-1/software/latest/TaskRunner/TaskRunner-1.0.jar) 下載，然後將其複製到目標運算資源上的資料夾。對於執行`EmrActivity`任務的 Amazon EMR 叢集，請在叢集的主節點上安裝 Task Runner。

1. 使用 Task Runner 連線至 AWS Data Pipeline Web 服務來處理命令時，使用者需要對具有建立或管理資料管道許可的角色進行程式設計存取。如需詳細資訊，請參閱[授予程式設計存取權](dp-get-setup.md#dp-grant-programmatic-access)。

1. Task Runner 會使用 HTTPS 連線至 AWS Data Pipeline Web 服務。如果您使用的是 AWS 資源，請確定已在適當的路由表和子網路 ACL 中啟用 HTTPS。若您使用防火牆或代理，請確認連接埠 443 已開啟。

# （選用） 授予 Amazon RDS 的任務執行器存取權
<a name="dp-taskrunner-rdssecurity"></a>

Amazon RDS 可讓您使用資料庫安全群組 （資料庫安全群組） 控制對資料庫執行個體的存取。資料庫安全群組與防火牆的功能類似，可控制對資料庫執行個體的網路存取。根據預設，您資料庫執行個體的網路存取是關閉的。您必須修改資料庫安全群組，讓 Task Runner 存取您的 Amazon RDS 執行個體。Task Runner 會從其執行的執行個體取得 Amazon RDS 存取權，因此您新增至 Amazon RDS 執行個體的帳戶和安全群組取決於您安裝 Task Runner 的位置。

**授予 EC2-Classic 中 Task Runner 的存取權**

1. 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Instances (執行個體)**，然後選取您的資料庫執行個體。

1. 在 **Security and Network (安全與網路)** 下方，選取安全群組，開啟 **Security Groups (安全群組)** 頁面，其中已選取此資料庫安全群組。選取資料庫安全群組的詳細資訊圖示。

1. 在 **Security Group Details (安全群組詳細資訊)** 下方，使用適當的 **Connection Type (連線類型)** 和 **Details (詳細資訊)** 建立規則。這些欄位取決於 Task Runner 執行的位置，如下所述：
   + `Ec2Resource`
     + **Connection Type (連線類型)**：`EC2 Security Group`

       **Details (詳細資訊)**：*my-security-group-name* (您為 EC2 執行個體建立的安全群組名稱)
   + `EmrResource`
     + **Connection Type (連線類型)**：`EC2 Security Group`

       **Details (詳細資訊)**：`ElasticMapReduce-master`
     + **Connection Type (連線類型)**：`EC2 Security Group`

       **Details (詳細資訊)**：`ElasticMapReduce-slave`
   + 您的本機環境 (現場部署)
     + **Connection Type (連線類型)**：`CIDR/IP`：

       **Details (詳細資訊)**：*my-ip-address* (您電腦的 IP 地址或您網路的 IP 地址範圍 (若您的電腦位於防火牆後方的話))

1. 按一下 Add (新增)。

**授予 EC2-VPC 中 Task Runner 的存取權**

1. 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取資料庫執行個體的詳細資訊圖示。在**安全與網路**下，開啟安全群組的連結，這會帶您前往 Amazon EC2 主控台。若您使用安全群組的舊版主控台設計，請選取主控台頁面頂端顯示的圖示，切換至新版的主控台設計。

1. 在 **Inbound (傳入)** 標籤，選擇 **Edit (編輯)**，**Add Rule (新增規則)**。指定您在啟動資料庫執行個體時使用的資料庫連接埠。來源取決於 Task Runner 執行的位置，如下所述：
   + `Ec2Resource`
     + *my-security-group-id* (您為 EC2 執行個體建立的安全群組 ID)
   + `EmrResource`
     + *master-security-group-id* (`ElasticMapReduce-master` 安全群組的 ID)
     + *slave-security-group-id* (`ElasticMapReduce-slave` 安全群組的 ID)
   + 您的本機環境 (現場部署)
     + *ip-address* (您電腦的 IP 地址或您網路的 IP 地址範圍 (若您的電腦位於防火牆後方的話))

1. 按一下 **Save (儲存)**。

## 啟動任務執行器
<a name="dp-activate-task-runner"></a>

在設定為您安裝 Task Runner 之目錄的新命令提示視窗中，使用以下命令啟動 Task Runner。

```
java -jar TaskRunner-1.0.jar --config ~/credentials.json --workerGroup=myWorkerGroup --region=MyRegion --logUri=s3://amzn-s3-demo-bucket/foldername
```

`--config` 選項會指向您的登入資料檔案。

`--workerGroup` 選項會指定您的工作者群組名稱，其值必須與您在要處理任務的管道中所指定的值相同。

`--region` 選項則會指定您提取要執行任務的服務區域。

`--logUri` 選項用於將壓縮日誌推送到 Amazon S3 中的位置。

當任務執行器處於作用中狀態時，它會列印日誌檔案寫入終端機視窗中的路徑。下列是 範例。

```
Logging to /Computer_Name/.../output/logs
```

Task Runner 應與您的登入殼層分離執行。若您使用終端機應用程式連線到您的電腦，您可能需要使用公用程式 (例如 nohup 或 screen) 來防止 Task Runner 應用程式在您登出時離開。如需命令列選項的詳細資訊，請參閱 [任務執行器組態選項](dp-taskrunner-config-options.md)。

## 驗證任務執行器記錄
<a name="dp-verify-task-runner"></a>

驗證 Task Runner 是否正常運作的最簡單方法是檢查它是否正在寫入日誌檔案。Task Runner 會將每小時日誌檔案寫入安裝 Task Runner 的目錄 `output/logs`下。檔案名稱為 `Task Runner.log.YYYY-MM-DD-HH`，其中 HH 的範圍介於 00 到 23 間 (UDT)。為節省儲存空間，任何超過八個小時的日誌檔案都會以 GZip 壓縮。

# 任務執行器執行緒和先決條件
<a name="dp-taskrunner-threading"></a>

 任務執行器會針對每個任務、活動和先決條件使用執行緒集區。的預設設定`--tasks`為 2，這表示從任務集區配置了兩個執行緒，每個執行緒都會輪詢新任務 AWS Data Pipeline 的服務。因此，`--tasks` 是一項效能調校屬性，可用來協助最佳化管道的輸送量。

 先決條件的管道重試邏輯發生在任務執行器中。配置兩個先決條件執行緒來輪詢 AWS Data Pipeline 先決條件物件。Task Runner 會遵守您在先決條件上定義的先決條件物件 **retryDelay** 和 **preconditionTimeout** 欄位。

在許多情況下，減少先決條件輪詢逾時和重試次數有助於改善您應用程式的效能。同樣地，具備長時間執行先決條件的應用程式可能需要增加逾時和重試值。如需先決條件物件的詳細資訊，請參閱[先決條件](dp-concepts-preconditions.md)。

# 任務執行器組態選項
<a name="dp-taskrunner-config-options"></a>

這些是當您啟動 Task Runner 時，可從命令列取得的組態選項。


****  

| 命令列參數 | Description | 
| --- | --- | 
| `--help` | 命令列說明。範例：`Java -jar TaskRunner-1.0.jar --help` | 
| `--config` | 您 `credentials.json` 檔案的路徑和檔案名稱。 | 
| `--accessId` | Task Runner 在提出請求時使用的 AWS 存取金鑰 ID。 `--accessID` 和 `--secretKey`選項提供使用 credentials.json 檔案的替代方案。若也有提供 `credentials.json` 檔案，則 `--accessID` 和 `--secretKey` 選項會有較高的優先順序。 | 
| `--secretKey` | Task Runner 在提出請求時使用的 AWS 私密金鑰。如需詳細資訊，請參閱`--accessID`。 | 
| `--endpoint` | 端點是指 web 服務進入點的 URL。在您提出請求的區域中 AWS Data Pipeline 的服務端點。選用。一般而言，指定區域便已足夠，您不需要設定端點。如需 AWS Data Pipeline 區域和端點的清單，請參閱《》中的 [AWS Data Pipeline區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#datapipeline_region)*AWS 一般參考*。 | 
| `--workerGroup` | Task Runner 擷取工作之工作者群組的名稱。必要.當 Task Runner 輪詢 Web 服務時，它會使用您提供的登入資料和 的值`workerGroup`來選取要擷取哪些 （如果有的話） 任務。您可以使用對您有意義的任何名稱；唯一的要求是 字串必須與任務執行器及其對應的管道活動相符。工作者群組名稱會與區域繫結。即使其他區域中有相同的工作者群組名稱，任務執行器仍會從 中指定的區域取得任務`--region`。 | 
| `--taskrunnerId` | 報告進度時要使用的任務執行器 ID。選用。 | 
| `--output` | 日誌輸出檔案的 Task Runner 目錄。選用。日誌檔案會存放在本機目錄中，直到推送到 Amazon S3 為止。此選項會覆寫預設目錄。 | 
| `--region` | 要使用的 區域。選擇性，但建議您一律設定區域。如果您未指定區域，任務執行器會從預設服務區域 擷取任務`us-east-1`。其他支援的區域包含：`eu-west-1`、`ap-northeast-1`、`ap-southeast-2`、`us-west-2`。 | 
| `--logUri` | Task Runner 每小時將日誌檔案備份到 的 Amazon S3 目的地路徑。當任務執行器終止時，本機目錄中的作用中日誌會推送到 Amazon S3 目的地資料夾。 | 
| --proxyHost | Task Runner 用戶端用來連線至 AWS 服務的代理主機。 | 
| --proxyPort | Task Runner 用戶端用來連線至 AWS 服務的代理主機連接埠。 | 
| --proxyUsername | 代理的使用者名稱。 | 
| --proxyPassword | 代理的密碼。 | 
| --proxyDomain | NTLM 代理的 Windows 網域名稱。 | 
| --proxyWorkstation | NTLM 代理的 Windows 工作站名稱。 | 

# 搭配代理使用 Task Runner
<a name="dp-taskrunner-proxy"></a>

若您使用代理主機，您可以在呼叫 Task Runner 時指定其[組態](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-taskrunner-config-options.html)，或是設定環境變數 HTTPS\$1PROXY。搭配 Task Runner 使用的環境變數接受與用於 [AWS 命令列界面](https://docs.aws.amazon.com/cli/latest/userguide/cli-http-proxy.html)相同的組態。

# 任務執行器和自訂 AMIs
<a name="dp-custom-ami"></a>

當您為管道指定`Ec2Resource`物件時， 會使用為您安裝和設定任務執行器的 AMI，為您 AWS Data Pipeline 建立 EC2 執行個體。此案例中需要與 PV 相容的執行個體類型。或者，您可以使用任務執行器建立自訂 AMI，然後使用 `Ec2Resource` 物件`imageId`的 欄位指定此 AMI 的 ID。如需詳細資訊，請參閱[Ec2Resource](dp-object-ec2resource.md)。

自訂 AMI 必須滿足下列要求， AWS Data Pipeline 才能成功將其用於任務執行器：
+ 在執行執行個體相同的區域內建立 AMI。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[建立您自己的 AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami.html)。
+ 確認您要使用的執行個體類型支援 AMI 的虛擬化類型。例如，I2 和 G2 執行個體類型需要 HVM AMI，T1、C1、M1 及 M2 執行個體類型則需要 PV AMI。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的 [Linux AMI 虛擬化類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html)。
+ 安裝以下軟體：
  + Linux
  + Bash
  + wget
  + unzip
  + Java 1.6 或 1.8
  + cloud-init
+ 建立和設定名為 的使用者`ec2-user`。