Jigar 向您演示如何将 Amazon S3 中的
大量数据复制到 EMR 集群
上的 HDFS 中

Jigar_SEA

我想将大量数据从 Amazon Simple Storage Service (Amazon S3) 复制到 Amazon EMR 集群。完成此操作的最佳方法是什么?

使用 S3DistCp 在 Amazon S3 和 Amazon EMR 集群之间复制数据。S3DistCp 默认安装在 Amazon EMR 集群上。要调用 S3DistCp,请在启动时或集群运行后,将其作为一个步骤添加到 Amazon EMR 集群之中。

要使用 AWS 命令行接口 (AWS CLI) 将 S3DistCp 步骤添加到正在运行的集群,请参阅 添加 S3DistCp 作为集群中的步骤。要使用控制台添加 S3DistCp 步骤:

1.    打开 Amazon EMR 控制台,然后选择 Clusters

2.    从列表中选择 Amazon EMR 集群,然后选择 Steps

3.    选择 Add step,然后选择以下选项:
对于 Step type,选择 Custom JAR
对于 Name,输入 S3DistCp 步骤的名称。
对于 JAR location,输入 command-runner.jar。有关更多信息,请参阅 Command Runner
对于 Arguments,输入与以下选项类似的选项:s3-dist-cp --src=s3://s3distcp-source/input-data --dest=hdfs://output-folder1
对于 Action on failure,选择 Continue

4.    选择 Add

5.    当 Status 更改为 Completed 时,运行与以下命令类似的命令,以验证文件已复制到集群:

$ hadoop fs -ls hdfs://output-folder1/

请注意:建议将小文件合并为几个大文件(使用 groupBy 选项),然后使用以下选项压缩大文件outputCodec 选项。

故障排除

要对 S3DistCp 进行故障排除,请查看步骤和任务日志。

步骤日志:

1.    打开 Amazon EMR 控制台,然后选择 Clusters

2.    从列表中选择 Amazon EMR 集群,然后选择 Steps

3.    在 Log files 列中,选择相应步骤日志:

  • controller:关于步骤处理的信息。如果在加载时步骤失败,您可以在此日志中找到堆栈跟踪。
  • syslog:描述 Hadoop 任务在该步骤中的执行情况。
  • stderr:Hadoop 处理该步骤时 Hadoop 的标准错误通道。
  • stdout:Hadoop 处理该步骤时 Hadoop 的标准输出通道。

如果无法在步骤日志中找到失败的根本原因,请查看 S3DistCp 任务日志:

1.    打开 Amazon EMR 控制台,然后选择 Clusters

2.    从列表中选择 Amazon EMR 集群,然后选择 Steps

3.    在 Log files 列中,选择 View jobs

4.    在 Actions 列中,选择 View tasks

5.    如果任务失败,选择 View attempts 查看任务日志。

常见错误

Reducer 任务因内存不足而失败:

如果在步骤的 stderr 日志中看到与以下错误消息类似的错误消息,则表示 S3DistCp 任务因内存不足而无法处理 Reducer 任务:

Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Container [pid=19135,containerID=container_1494287247949_0005_01_000003] is running beyond virtual memory limits. Current usage: 569.0 MB of 1.4 GB physical memory used; 3.0 GB of 3.0 GB virtual memory used. Killing container.

要解决此问题,请使用以下选项之一增加 Reducer 任务的内存资源:

S3 权限错误:

如果在步骤的 stderr 日志中看到与以下错误消息类似的错误消息,则表示 S3DistCp 因权限问题而无法访问 S3:

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: REQUEST_ID

要解决此问题,请参阅 权限错误


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2018 年 9 月 27 日