

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

# 使用 HDFS 集群配置 AWS DataSync 传输
<a name="create-hdfs-location"></a>

使用 AWS DataSync，您可以使用基本模式任务在 Hadoop 分布式文件系统 (HDFS) 集群和以下 AWS 存储服务之一之间传输数据：
+ [Amazon S3](create-s3-location.md)
+ [Amazon EFS](create-efs-location.md)
+ [ FSx 适用于 Windows 文件服务器的亚马逊](create-fsx-location.md)
+ [亚马逊 f FSx or Lustre](create-lustre-location.md)
+ [ FSx 适用于 OpenZFS 的亚马逊](create-openzfs-location.md)
+ [ FSx 适用于 NetApp ONTAP 的亚马逊](create-ontap-location.md)

要设置此类传输，您需要为 HDFS 集群创建一个[位置](how-datasync-transfer-works.md#sync-locations)。您可以将此位置用作传输源或传输目标位置。

## 提供 DataSync 对 HDFS 集群的访问权限
<a name="accessing-hdfs"></a>

要连接到 HDFS 集群，请 DataSync 使用尽可能靠近 HDFS 集群[部署的基本模式代理代理](deploy-agents.md)。该 DataSync代理充当 HDFS 客户端，与集群 DataNodes 中的 NameNodes 和进行通信。

启动传输任务时，会 DataSync NameNode 查询群集上文件和文件夹的位置。如果您将 HDFS 位置配置为源位置，则会从集群 DataNodes 中 DataSync 读取文件和文件夹数据，并将这些数据复制到目标。如果您将 HDFS 位置配置为目标位置，则 DataSync 会将文件和文件夹从源位置写入集群 DataNodes 中。

### 身份验证
<a name="accessing-hdfs-authentication"></a>

连接到 HDFS 集群时， DataSync 支持简单身份验证或 Kerberos 身份验证。要使用简单身份验证，请提供对 HDFS 集群具有读写权限的用户的用户名。要使用 Kerberos 身份验证，请提供 Kerberos 配置文件、Kerberos 密钥表（密钥表）文件和 Kerberos 主体名称。Kerberos 主体的凭证必须位于提供的密钥表文件中。

### 加密
<a name="accessing-hdfs-encryption"></a>

使用 Kerberos 身份验证时， DataSync 支持在 DataSync 代理和 HDFS 集群之间传输的数据时对其进行加密。使用 HDFS 集群上的保护质量 (QOP) 配置设置，并在创建 HDFS 位置时指定 QOP 设置，从而加密数据。QOP 配置包括数据传输保护和远程过程调用 (RPC) 保护设置。

**DataSync 支持以下 Kerberos 加密类型：**
+ `des-cbc-crc`
+ `des-cbc-md4`
+ `des-cbc-md5`
+ `des3-cbc-sha1`
+ `arcfour-hmac`
+ `arcfour-hmac-exp`
+ `aes128-cts-hmac-sha1-96`
+ `aes256-cts-hmac-sha1-96`
+ `aes128-cts-hmac-sha256-128`
+ `aes256-cts-hmac-sha384-192`
+ `camellia128-cts-cmac`
+ `camellia256-cts-cmac`

您还可以使用透明数据加密 (TDE) 将 HDFS 集群配置为静态加密。使用简单身份验证时，对启用 TDE 的集群进行 DataSync 读取和写入。如果您使用将数据复制 DataSync 到启用 TDE 的集群，请先在 HDFS 集群上配置加密区域。 DataSync 不创建加密区域。

## 不支持的 HDFS 功能
<a name="hdfs-unsupported-features"></a>

目前不支持以下 HDFS 功能： DataSync
+ 使用 Kerberos 身份验证时的透明数据加密 (TDE)
+ 配置多个 NameNodes
+ 通过 HTTPS 的 Hadoop HDFS (httpFS)
+ POSIX 访问控制列表 () ACLs
+ HDFS 扩展属性 (xattrs)
+ 使用 Apache 的 HDFS 集群 HBase

## 创建您的 HDFS 传输位置
<a name="create-hdfs-location-how-to"></a>

您可以使用您的位置作为 DataSync转账的来源或目的地。

**开始之前**：通过执行以下操作验证代理与 Hadoop 集群之间的网络连接：
+ 测试对 [本地、自我管理和其他云存储的网络要求](datasync-network.md#on-premises-network-requirements) 中列出的 TCP 端口的访问权限。
+ 测试本地代理与 Hadoop 集群之间的访问权限。有关说明，请参阅[验证代理与存储系统的连接](test-agent-connections.md#self-managed-storage-connectivity)。

### 使用控制 DataSync 台
<a name="create-hdfs-location-how-to-console"></a>

1. 打开 AWS DataSync 控制台，网址为[https://console.aws.amazon.com/datasync/](https://console.aws.amazon.com/datasync/)。

1. 在左侧导航窗格中，展开**数据传输**，然后选择 **位置**和 **创建位置**。

1. 对于 **位置类型**，选择 **Hadoop Distributed File System (HDFS)**。

   您可在稍后将此位置配置为源或目标。

1. 对于**代理**，请选择可以连接到 HDFS 集群的代理。

   可以选择多个代理。有关更多信息，请参阅 [使用多个 DataSync 代理](do-i-need-datasync-agent.md#multiple-agents)。

1. 对于 **NameNode**，请提供 HDFS 群集的主 NameNode群集的域名或 IP 地址。

1. 在 **“文件夹**” 中，输入 HDFS 集群上 DataSync 要用于数据传输的文件夹。

   如果您的 HDFS 位置是源，请将此文件夹中的文件 DataSync 复制到目标。如果您的位置是目的地，则 DataSync会将文件写入此文件夹。

1. 要设置 **区块大小**或 **复制因子**，请选择 **其他设置**。

   默认块大小为 128MiB。您提供的块大小必须是 512 字节的倍数。

   传输到 HDFS 集群 DataNodes 时，默认重复因子为三。

1. 在 **安全**部分中，选择 HDFS 群集上使用的 **身份验证类型**。
   + **简单** - 对于 **用户**，在 HDFS 集群上指定具有以下权限的用户名（取决于您的用例）：
     + 如果您计划将此位置用作源位置，请指定仅具有读取权限的用户。
     + 如果您计划将此位置用作目标位置，请指定具有读写权限的用户。

     您可以选择为 HDFS 集群的密钥管理服务器（KMS）指定 URI。
   + **Kerberos** – 指定有权访问您的 HDFS 集群的 Kerberos **主体**。接下来，提供包含所提供的 Kerberos 主体的**KeyTab文件**。然后，提供 **Kerberos 配置文件**。最后，在 **RPC 保护**和 **数据传输保护**下拉列表中指定传输中加密保护的类型。

1. 或者，选择 **添加标签**来标记您的 HDFS 位置。

   *标签* 是帮助您管理、筛选和搜索位置的键值对。我们建议至少为您的位置创建一个名称标签。

1. 选择**创建位置**。

### 使用 AWS CLI
<a name="create-location-hdfs-cli"></a>

1. 复制以下 `create-location-hdfs` 命令。

   ```
   aws datasync create-location-hdfs --name-nodes [{"Hostname":"host1", "Port": 8020}] \
       --authentication-type "SIMPLE|KERBEROS" \
       --agent-arns [arn:aws:datasync:us-east-1:123456789012:agent/agent-01234567890example] \
       --subdirectory "/path/to/my/data"
   ```

1. 在`--name-nodes`参数中，指定 HDFS 集群的主集群的主机名或 IP 地址 NameNode 以及 NameNode 正在监听的 TCP 端口。

1. 对于 `--authentication-type` 参数，指定连接 Hadoop 集群时使用的身份验证类型。您可以指定 `SIMPLE` 或 `KERBEROS`。

   如果您采用 `SIMPLE` 身份验证，请使用 `--simple-user` 参数指定用户的用户名。如果您采用 `KERBEROS` 身份验证，请使用 `--kerberos-principal`、`--kerberos-keytab` 和`--kerberos-krb5-conf` 参数。有关更多信息，请参阅 [create-location-hdfs](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/datasync/create-location-hdfs.html)。

1. 对于`--agent-arns`参数，请指定可以连接到您的 HDFS DataSync 集群的代理的 ARN。

   可以选择多个代理。有关更多信息，请参阅 [使用多个 DataSync 代理](do-i-need-datasync-agent.md#multiple-agents)。

1. （可选）在`--subdirectory`参数中，在 HDFS 集群上指定 DataSync 要用于数据传输的文件夹。

   如果您的 HDFS 位置是源，请将此文件夹中的文件 DataSync 复制到目标。如果您的位置是目的地，则 DataSync会将文件写入此文件夹。

1. 运行 `create-location-hdfs` 命令。

   如果命令成功，您将收到一条响应，显示您创建位置的 ARN。例如：

   ```
   {
       "arn:aws:datasync:us-east-1:123456789012:location/loc-01234567890example"
   }
   ```