本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
有关如何将文件上传到 Amazon S3 的说明,请参阅《Amazon Simple Storage Service 用户指南》中的向存储桶添加对象。有关将亚马逊 S3 与 Hadoop 配合使用的更多信息,请参阅 http://wiki.apache。 org/hadoop/AmazonS
创建和配置 Amazon S3 存储桶
Amazon EMR 适用于 Java 的 AWS SDK 与 Amazon S3 一起使用来存储输入数据、日志文件和输出数据。Amazon S3 将这些存储位置称为存储桶。存储桶具有某些限制以符合 Amazon S3 和 DNS 要求。有关更多信息,请参阅 《Amazon Simple Storage Service 用户指南》中的存储桶限制。
本节向您展示如何使用 Amazon S3 AWS Management Console 创建和设置亚马逊 S3 存储桶的权限。您还可以使用 Amazon S3 API 或 AWS CLI为 Amazon S3 存储桶创建和设置权限。您还可以将 curl 与修改一起使用来传递 Amazon S3 的相应身份验证参数。
请参阅以下资源:
-
要使用控制台创建存储桶,请参阅《Amazon S3 用户指南》https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html中的创建存储桶。
-
要使用创建和使用存储桶 AWS CLI,请参阅 A mazon S3 用户指南 AWS Command Line Interface中的使用高级别 S3 命令。
-
要使用 SDK 创建存储桶,请参阅《Amazon Simple Storage Service 用户指南》中的创建存储桶的示例。
-
要通过 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 支持通过适用于 Java 的 S AWS DK 进行亚马逊 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 优化的提交程序也处于禁用状态,则此值还可以控制数据文件的大小上限,相应数据文件可能会增大,直到 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 分钟的固定延迟。 |
禁用分段上传
使用控制台禁用分段上传
-
EC2在左侧导航窗格的 EMR on 下,选择集群,然后选择创建集群。
-
在 Software Settings(软件设置)下,输入下面的配置:
classification=core-site,properties=[fs.s3n.multipart.uploads.enabled=false]
。 -
选择适用于集群的任何其他选项。
-
要启动集群,选择 Create cluster(创建集群)。
最佳实践
以下是将 Amazon S3 存储桶与 EMR 集群结合使用的建议。
启用版本控制
版本控制是针对 Amazon S3 存储桶的建议的配置。一旦启用版本控制,则可确保即使数据被意外删除或覆盖,也可恢复数据。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用版本控制。
清理失败的分段上载
默认情况下,EMR 集群组件使用通过 Java AWS 开发工具包和 Amazon S3 进行分段上传 APIs ,将日志文件和输出数据写入亚马逊 S3。有关使用 Amazon EMR 更改与此配置相关的属性的信息,请参阅为 Amazon S3 配置分段上载。有时,上载大型文件会生成未完成的 Amazon S3 分段上载。在分段上载无法成功完成时,进行中的分段上载将继续占用存储桶并会产生存储费用。我们建议采用下列选项,以避免文件存储过多:
-
对于与 Amazon EMR 结合使用的存储桶,启用 Amazon S3 中的生命周期配置,以在上载启动日期三天后删除仍未完成的分段上载。利用生命周期配置规则,您可以创建控制对象的存储类和生命周期。有关更多信息,请参阅对象生命周期管理和使用存储桶生命周期策略中止未完成的分段上载。
-
通过将
fs.s3.multipart.clean.enabled
设置为true
并调整其它清理参数来启用 Amazon EMR 的分段清理功能。此功能可用于正常运行时间有限的高容量、大规模集群。在这种情况下,生命周期配置规则的DaysAfterIntitiation
参数可能太长,即使设置为最小参数,也会导致 Amazon S3 存储中迅猛增加。Amazon EMR 的分段清理功能有便于实现更精确的控制。有关更多信息,请参阅为 Amazon S3 配置分段上载。
管理版本标记
我们建议您在 Amazon S3 中启用生命周期配置规则,以删除您与 Amazon EMR 结合使用的启用了版本控制的存储桶的过期对象删除标记。删除受版本控制的存储桶中的对象时将创建删除标记。如果对象的所有早期版本随后过期,则存储桶中将保留过期的对象删除标记。虽然您无需为删除标记付费,但删除过期的标记可提高 LIST 请求的性能。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的在启用了版本控制的存储桶中进行生命周期配置。
性能最佳实践
根据您的工作负载,对 EMR 集群及其上应用程序的特定类型使用会导致对存储桶的大量请求。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的请求率和性能注意事项。