本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将数据上载到 Amazon S3
有关如何将文件上传到 Amazon S3 的说明,请参阅《Amazon Simple Storage Service 用户指南》中的向存储桶添加对象。有关将亚马逊 S3 与 Hadoop 配合使用的更多信息,请参阅 http://wiki.apache。 org/hadoop/AmazonS
创建和配置 Amazon S3 存储桶
Amazon Amazon SDK for Java 与 Amazon S3 一起EMR使用来存储输入数据、日志文件和输出数据。Amazon S3 将这些存储位置称为存储桶。为了符合 Amazon S3 和DNS要求,存储桶有一定的限制和限制。有关更多信息,请参阅 《Amazon Simple Storage Service 用户指南》中的存储桶限制。
本节向您展示如何使用 Amazon S3 Amazon Web Services Management Console 创建和设置亚马逊 S3 存储桶的权限。您也可以使用 Amazon S3 API 或为 Amazon S3 存储桶创建和设置权限 Amazon CLI。您还可以将 curl 与修改一起使用来传递 Amazon S3 的相应身份验证参数。
请参阅以下资源:
-
要使用控制台创建存储桶,请参阅《Amazon S3 用户指南》https://docs.amazonaws.cn/AmazonS3/latest/userguide/create-bucket.html中的创建存储桶。
-
要使用创建和使用存储桶 Amazon CLI,请参阅 A mazon S3 用户指南 Amazon Command Line Interface中的使用高级别 S3 命令。
-
要使用创建存储桶SDK,请参阅《亚马逊简单存储服务用户指南》中的创建存储桶示例。
-
要通过 curl 使用存储桶,请参阅 curl 的 Amazon S3 身份验证工具
。 -
有关指定特定于区域的存储桶的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的访问存储桶。
-
要使用 Amazon S3 访问点处理存储桶,请参阅《Amazon S3 用户指南》中的为接入点使用存储桶式别名。您可以轻松地将 Amazon S3 接入点与 Amazon S3 访问点别名一起使用,而不使用 Amazon S3 存储桶名称。您可以将 Amazon S3 接入点别名用于现有应用程序和新的应用程序,包括 Spark、Hive、Presto 等其他应用程序。
注意
如果您为存储桶启用日志记录,则仅启用存储桶访问日志,而不启用 Amazon EMR 集群日志。
在存储桶创建期间或创建后,您可以根据应用程序设置适当权限来访问存储桶。一般情况下,您可以给自己(所有者)授予读取和写入权限,并给已验证用户授予读取访问权限。
在创建集群之前,所需的 Amazon S3 存储桶必须存在。您必须将集群中引用的所有必要的脚本或数据上载至 Amazon S3。下表介绍了示例数据、脚本和日志文件位置。
为 Amazon S3 配置分段上载
亚马逊EMR支持通过 Amazon 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开始新的分段上传之前的最大分段大小(以字节为单位)。最小值为 如果禁用了EMRFS客户端加密,同时也禁用了 Amazon S3 Optimited Committer,则此值还会控制数据文件在EMRFS使用分段上传而不是 |
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 分钟的固定延迟。 |
禁用分段上传
最佳实践
以下是将 Amazon S3 存储桶用于EMR集群的建议。
启用版本控制
版本控制是针对 Amazon S3 存储桶的建议的配置。一旦启用版本控制,则可确保即使数据被意外删除或覆盖,也可恢复数据。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用版本控制。
清理失败的分段上载
EMR默认情况下,集群组件使用通过 for Java 和 Amazon S3 的分段上传,APIs将日志文件和输出数据写入 Amazon S3。 Amazon SDK有关使用 Amazon 更改与此配置相关的属性的信息EMR,请参阅为 Amazon S3 配置分段上载。有时,上载大型文件会生成未完成的 Amazon S3 分段上载。在分段上载无法成功完成时,进行中的分段上载将继续占用存储桶并会产生存储费用。我们建议采用下列选项,以避免文件存储过多:
-
对于您在 Amazon 中使用的存储桶EMR,请使用 Amazon S3 中的生命周期配置规则,在上传开始日期三天后移除未完成的分段上传。利用生命周期配置规则,您可以创建控制对象的存储类和生命周期。有关更多信息,请参阅对象生命周期管理和使用存储桶生命周期策略中止未完成的分段上载。
-
通过设置
true
和调整其他清理参数,启用 Amazon EMRfs.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 用户指南》中的请求率和性能注意事项。