将数据上载到 Amazon S3 - Amazon EMR

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

将数据上载到 Amazon S3

有关如何将文件上传到 Amazon S3 的说明,请参阅《Amazon Simple Storage Service 用户指南》中的向存储桶添加对象。有关将 Amazon S3 与 Hadoop 结合使用的更多信息,请参阅 http://wiki.apache.org/hadoop/AmazonS3

创建和配置 Amazon S3 存储桶

Amazon AWS SDK for Java 与 Amazon S3 一起EMR使用来存储输入数据、日志文件和输出数据。Amazon S3 将这些存储位置称为存储桶。为了符合 Amazon S3 和DNS要求,存储桶有一定的限制和限制。有关更多信息,请参阅 《Amazon Simple Storage Service 用户指南》中的存储桶限制

本节向您展示如何使用 Amazon S3 AWS Management Console 创建和设置亚马逊 S3 存储桶的权限。您也可以使用 Amazon S3 API 或为 Amazon S3 存储桶创建和设置权限 AWS CLI。您还可以将 curl 与修改一起使用来传递 Amazon S3 的相应身份验证参数。

请参阅以下资源:

注意

如果您为存储桶启用日志记录,则仅启用存储桶访问日志,而不启用 Amazon EMR 集群日志。

在存储桶创建期间或创建后,您可以根据应用程序设置适当权限来访问存储桶。一般情况下,您可以给自己(所有者)授予读取和写入权限,并给已验证用户授予读取访问权限。

在创建集群之前,所需的 Amazon S3 存储桶必须存在。您必须将集群中引用的所有必要的脚本或数据上载至 Amazon S3。下表介绍了示例数据、脚本和日志文件位置。

为 Amazon S3 配置分段上载

亚马逊EMR支持通过 AWS SDK适用于 Java 的 Amazon S3 分段上传。分段上载可让您将单独对象作为一组片段上载。您可以独立上载以及按任意顺序上载这些对象分段。如果任意分段传输失败,可以重新传输该分段且不会影响其它分段。上载完所有的对象分段后,Amazon S3 将汇集这些分段并创建对象。

有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的 分段上传概述

此外,Amazon还EMR提供一些属性,使您可以更精确地控制失败的分段上传段的清理工作。

下表描述了分段上传的 Amazon EMR 配置属性。您可以使用 core-site 配置分类配置这些属性。有关更多信息,请参阅 Amazon EMR 发行指南中的配置应用程序

配置参数名称 默认值 描述
fs.s3n.multipart.uploads.enabled true 布尔值类型,指示是否要启用分段上载。启用EMRFS一致视图后,默认情况下会启用分段上传,而将此值设置false为将被忽略。
fs.s3n.multipart.uploads.split.size 134217728

指定启用分段上传后,EMRFS开始新的分段上传之前的最大分段大小(以字节为单位)。最小值为 5242880 (5 MB)。如果指定了较小值,则使用 5242880。最大值为 5368709120 (5 GB)。如果指定了较大值,则使用 5368709120

如果禁用了EMRFS客户端加密,同时也禁用了 Amazon S3 Optimited Committer,则此值还会控制数据文件在EMRFS使用分段上传而不是PutObject请求上传文件之前可以增长的最大大小。有关更多信息,请参阅

fs.s3n.ssl.enabled true 布尔值类型,指示使用 http 还是 https。
fs.s3.buckets.create.enabled false 布尔值类型,指示是否应在存储桶不存在时创建存储桶。设置为 false 会导致 CreateBucket 操作出现异常。
fs.s3.multipart.clean.enabled false 布尔值类型,指示是否要启用后台定期清理未完成的分段上载。
fs.s3.multipart.clean.age.threshold 604800 long 类型,用于指定分段上载的最小有效期(以秒为单位),然后考虑对其进行清理。默认有效期为一周。
fs.s3.multipart.clean.jitter.max 10000 整数类型,指定在安排下一轮清理之前最大随机抖动的延迟(以秒为单位)增至 15 分钟的固定延迟。

禁用分段上传

Console
使用控制台禁用分段上传
  1. 登录 AWS Management Console,然后通过 https://console.aws.amazon.com/em r 打开亚马逊EMR控制台。

  2. EC2在左侧导航窗格的开下EMR,选择集群,然后选择创建集群

  3. Software Settings(软件设置)下,输入下面的配置:classification=core-site,properties=[fs.s3n.multipart.uploads.enabled=false]

  4. 选择适用于集群的任何其他选项。

  5. 要启动集群,选择 Create cluster(创建集群)。

CLI
要禁用分段上传,请使用 AWS CLI

此过程介绍如何使用 AWS CLI禁用分段上载。要禁用分段上载,请键入带 create-cluster 参数的 --bootstrap-actions 命令。

  1. 使用以下内容创建一个文件 (myConfig.json),并将其保存到您在其中运行该命令的同一目录中:

    [ { "Classification": "core-site", "Properties": { "fs.s3n.multipart.uploads.enabled": "false" } } ]
  2. 键入以下命令并替换 myKey 用你的 EC2 key pair 的名字。

    注意

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

    aws emr create-cluster --name "Test cluster" \ --release-label emr-7.2.0 --applications Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --configurations file://myConfig.json
API
要禁用分段上传,请使用 API

最佳实践

以下是将 Amazon S3 存储桶用于EMR集群的建议。

启用版本控制

版本控制是针对 Amazon S3 存储桶的建议的配置。一旦启用版本控制,则可确保即使数据被意外删除或覆盖,也可恢复数据。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用版本控制

清理失败的分段上载

EMR默认情况下,集群组件使用通过 for Java 和 Amazon S3 的分段上传,APIs将日志文件和输出数据写入 Amazon S3。 AWS SDK有关使用 Amazon 更改与此配置相关的属性的信息EMR,请参阅为 Amazon S3 配置分段上载。有时,上载大型文件会生成未完成的 Amazon S3 分段上载。在分段上载无法成功完成时,进行中的分段上载将继续占用存储桶并会产生存储费用。我们建议采用下列选项,以避免文件存储过多:

  • 对于您在 Amazon 中使用的存储桶EMR,请使用 Amazon S3 中的生命周期配置规则,在上传开始日期三天后移除未完成的分段上传。利用生命周期配置规则,您可以创建控制对象的存储类和生命周期。有关更多信息,请参阅对象生命周期管理使用存储桶生命周期策略中止未完成的分段上载

  • 通过设置true和调整其他清理参数,启用 Amazon EMR fs.s3.multipart.clean.enabled 的多部分清理功能。此功能可用于正常运行时间有限的高容量、大规模集群。在这种情况下,生命周期配置规则的 DaysAfterIntitiation 参数可能太长,即使设置为最小参数,也会导致 Amazon S3 存储中迅猛增加。Amazon EMR 的多部分清理允许更精确的控制。有关更多信息,请参阅 为 Amazon S3 配置分段上载

管理版本标记

我们建议您在 Amazon S3 中启用生命周期配置规则,以移除与 Amazon 一起使用的版本控制存储桶的过期对象删除标记。EMR删除受版本控制的存储桶中的对象时将创建删除标记。如果对象的所有早期版本随后过期,则存储桶中将保留过期的对象删除标记。虽然您无需为删除标记付费,但移除过期标记可以提高LIST请求的性能。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的在启用了版本控制的存储桶中进行生命周期配置

性能最佳实践

根据您的工作负载,这些EMR集群和这些集群上的应用程序的特定使用类型可能会导致对存储桶的请求数量过多。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的请求率和性能注意事项