

AWS Data Pipeline 不再向新客户提供。的现有客户 AWS Data Pipeline 可以继续照常使用该服务。[了解详情](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用任务运行程序在现有资源上执行工作
<a name="dp-how-task-runner-user-managed"></a>

您可以在自己管理的计算资源（如 Amazon EC2 实例、物理服务器或工作站）上安装任务运行程序。Task Runner 可以安装在任何兼容的硬件或操作系统上的任何地方，前提是它可以与 AWS Data Pipeline Web 服务通信。

例如，当您想要使用 AWS Data Pipeline 处理存储在组织防火墙内的数据时，这种方法可能很有用。通过在本地网络的服务器上安装 Task Runner，您可以安全地访问本地数据库，然后轮 AWS Data Pipeline 询下一个要运行的任务。当 AWS Data Pipeline 结束处理或删除管道时，Task Runner 实例将在您的计算资源上继续运行，直到您手动将其关闭。管道执行完成后，任务运行程序日志将保留。

要在您管理的资源上使用任务运行程序，您必须先下载任务运行程序，然后使用此部分中的过程将它安装到您的计算资源上。

**注意**  
 您只能在 Linux、UNIX 或 macOS 上安装任务运行程序。Windows 操作系统不支持任务运行程序。  
要使用任务运行程序 2.0，所需的最低 Java 版本为 1.7。

要将安装的任务运行程序连接到它将处理的管道活动，请将 `workerGroup` 字段添加到该对象，并将任务运行程序配置为轮询此工作线程组值。在运行任务运行程序 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_cn/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>

此部分介绍如何安装和配置任务运行程序及其先决条件。安装是一个简单的手动过程。

**安装任务运行程序**

1. 任务运行程序需要 Java 版本 1.6 或 1.8。要确定是否已安装 Java 以及所运行的版本，请使用以下命令：

   ```
   java -version
   ```

    如果你的计算机上没有安装 Java 1.6 或 1.8，请从 [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 集群，请在集群的主节点上安装任务运行程序。

1. 使用 Task Runner 连接到 AWS Data Pipeline Web 服务以处理您的命令时，用户需要以编程方式访问有权创建或管理数据管道的角色。有关更多信息，请参阅 [授权以编程方式访问](dp-get-setup.md#dp-grant-programmatic-access)。

1. 任务运行器使用 HTTPS 连接到 AWS Data Pipeline Web 服务。如果您使用的是 AWS 资源，请确保在相应的路由表和子网 ACL 中启用了 HTTPS。如果您使用的是防火墙或代理，请确保端口 443 处于打开状态。

# （可选）授予任务运行程序对 Amazon RDS 的访问权限
<a name="dp-taskrunner-rdssecurity"></a>

Amazon RDS 允许您使用数据库安全组控制对您的数据库实例的访问。数据库安全组与防火墙的功能类似，用于控制对您的数据库实例的网络访问。默认情况下，将为您的数据库实例关闭网络访问。您必须修改数据库安全组以让任务运行程序访问您的 Amazon RDS 实例。任务运行程序从运行时所在的实例获取 Amazon RDS 访问权，因此，您添加到 Amazon RDS 实例的账户和安全组取决于您将任务运行程序安装到的位置。

**在 EC2-Classic 中授予对任务运行程序的访问权**

1. 打开 Amazon RDS 控制台。

1. 在导航窗格中，选择 **实例**，然后选择数据库实例。

1. 在**安全与网络**下面，选择安全组，将打开**安全组**页并选定该数据库安全组。选择数据库安全组的详细信息图标。

1. 在 **安全组详细信息** 下，创建带适当的 **连接类型** 和 **详细信息** 的规则。这些字段取决于任务运行程序运行的位置，如此处所述：
   + `Ec2Resource`
     + **Connection Type**：`EC2 Security Group`

       **详细信息**：*my-security-group-name*（您为 EC2 实例创建的安全组的名称）
   + `EmrResource`
     + **Connection Type**：`EC2 Security Group`

       **详细信息**: `ElasticMapReduce-master`
     + **Connection Type**：`EC2 Security Group`

       **详细信息**: `ElasticMapReduce-slave`
   + 您的本地环境 (本地)
     + **连接类型** `CIDR/IP`：

       **详细信息**：*my-ip-address*（您的计算机的 IP 地址或网络的 IP 地址范围，如果您的计算机位于防火墙后面）

1. 单击 Add（添加）。

**在 EC2-VPC 中授予对任务运行程序的访问权**

1. 打开 Amazon RDS 控制台。

1. 在导航窗格中，选择 **Instances (实例)**。

1. 选择数据库实例的详细信息图标。在**安全与网络**下，打开安全组的链接，这将使您转至 Amazon EC2 控制台。如果安全组使用旧控制台设计，请选择在控制台页面顶部显示的图标以切换到新控制台设计。

1. 在 **入站** 选项卡上，依次选择 **编辑** 和 **添加规则**。指定在启动数据库实例时使用的数据库端口。来源取决于任务运行程序运行的位置，如此处所述：
   + `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. 单击**保存**。

## 启动任务运行程序
<a name="dp-activate-task-runner"></a>

在设置为已将任务运行程序安装到的目录的新命令提示窗口中，使用以下命令启动任务运行程序。

```
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
```

任务运行程序应独立于登录 shell 运行。如果您使用终端应用程序来连接到您的计算机，则可能需要使用实用工具 (如 nohup 或 screen) 来防止任务运行程序应用程序在您注销时退出。有关命令行选项的更多信息，请参阅[任务运行程序配置选项](dp-taskrunner-config-options.md)。

## 验证任务运行程序日志记录
<a name="dp-verify-task-runner"></a>

验证任务运行程序是否正常工作的最简单方法是，检查它是否在写入日志文件。任务运行程序每小时将日志文件写入到安装任务运行程序的目录下的 `output/logs` 目录中。文件名为 `Task Runner.log.YYYY-MM-DD-HH`，其中 HH 的范围为 00 到 23 (用 UDT 表示)。为了节省存储空间，任何超过八小时的日志文件都使用压缩 GZip。