Amazon EMR 的早期 AMI 版本的 S3DistCp 实用程序差异 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon EMR 的早期 AMI 版本的 S3DistCp 实用程序差异

Amazon EMR 支持DistCp 的 S3 版本

Amazon EMR AMI 发行DistCp 版中支持以下 S3 版本。1.0.7 之后的 S3DistCp 版本可以直接在集群上找到。使用 /home/hadoop/lib 中的 JAR 以获得最新功能。

版本 描述 发行日期
1.0.8 添加 --appendToLastFile--requirePreviousManifest--storageClass 选项。 2014 年 1 月 3 日
1.0.7 添加了 --s3ServerSideEncryption 选项。 2013 年 5 月 2 日
1.0.6 添加了 --s3Endpoint 选项。 2012 年 8 月 6 日
1.0.5 提高了指定要运行哪个版本的 S3DistCp 的能力。 2012 年 6 月 27 日
1.0.4 改进了 --deleteOnSuccess 选项。 2012 年 6 月 19 日
1.0.3 添加了对于 --numberFiles--startingIndex 选项的支持。 2012 年 6 月 12 日
1.0.2 使用组时改进了文件命名。 2012 年 6 月 6 日
1.0.1 S3 的初始版本DistCp。 2012 年 1 月 19 日

向集群添加 S3DistCp 复制步骤

要向正在运行的集群添加 S3DistCp 复制步骤,请键入以下命令,将 j-3GYXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

注意

为了便于读取,包含 Linux 行继续符 (\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号 (^)。

aws emr add-steps --cluster-id j-3GYXXXXXX9IOK \ --steps Type=CUSTOM_JAR,Name="S3DistCp step",Jar=/home/hadoop/lib/emr-s3distcp-1.0.jar,\ Args=["--s3Endpoint,s3-eu-west-1.amazonaws.com",\ "--src,s3://mybucket/logs/j-3GYXXXXXX9IOJ/node/",\ "--dest,hdfs:///output",\ "--srcPattern,.*[a-zA-Z,]+"]
例 将 Amazon CloudFront 日志加载到 HDFS

此示例通过向正在运行的集群添加步骤将 Amazon CloudFront 日志加载到 HDFS 中。在此过程中,压缩格式由 Gzip( CloudFront 默认格式)更改为 LZO。这很有用,因为使用 LZO 压缩的数据在解压缩时能拆分成多个映射,所以,与 Gzip 格式不同,您不必等到压缩完成。当您使用 Amazon EMR 分析数据时,这可以提供更好的性能。此示例还通过以下方式提高性能:使用在 --groupBy 选项中指定的正则表达式,将给定小时内的所有日志组合成为单个文件。Amazon EMR 集群处理几个大型 LZO 压缩文件的效率比处理许多小型 Gzip 压缩文件的效率更高。要拆分 LZO 文件,您必须为这些文件编制索引并使用 hadoop-lzo 第三方库。

要将 Amazon CloudFront 日志加载到 HDFS 中,请键入以下命令,将 j-3GYXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

注意

为了便于读取,包含 Linux 行继续符 (\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号 (^)。

aws emr add-steps --cluster-id j-3GYXXXXXX9IOK \ --steps Type=CUSTOM_JAR,Name="S3DistCp step",Jar=/home/hadoop/lib/emr-s3distcp-1.0.jar,\ Args=["--src,s3://mybucket/cf","--dest,hdfs:///local",\ "--groupBy,.*XABCD12345678.([0-9]+-[0-9]+-[0-9]+-[0-9]+).*",\ "--targetSize,128", "--outputCodec,lzo","--deleteOnSuccess"]

考虑上述示例在以下 CloudFront 日志文件上运行的情况。

s3://DOC-EXAMPLE-BUCKET1/cf/XABCD12345678.2012-02-23-01.HLUS3JKx.gz s3://DOC-EXAMPLE-BUCKET1/cf/XABCD12345678.2012-02-23-01.I9CNAZrg.gz s3://DOC-EXAMPLE-BUCKET1/cf/XABCD12345678.2012-02-23-02.YRRwERSA.gz s3://DOC-EXAMPLE-BUCKET1/cf/XABCD12345678.2012-02-23-02.dshVLXFE.gz s3://DOC-EXAMPLE-BUCKET1/cf/XABCD12345678.2012-02-23-02.LpLfuShd.gz

S3 将文件DistCp 复制、连接和压缩为以下两个文件,其中文件名由正则表达式的匹配确定。

hdfs:///local/2012-02-23-01.lzo hdfs:///local/2012-02-23-02.lzo