本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon EMR 和 Hadoop 提供了各种文件系统,供您在处理集群步骤时使用。通过用于访问数据的 URI 前缀,您可以指定要使用的文件系统类型。例如,s3://amzn-s3-demo-bucket1/path
会引用使用 EMRFS 的 Amazon S3 存储桶。下表列出了可用的文件系统以及关于最适合用途的建议。
Amazon EMR 和 Hadoop 处理集群时通常会使用两个或多个以下文件系统。HDFS 和 EMRFS 是与 Amazon EMR 配合使用的两种主要文件系统。
重要
从亚马逊 EMR 版本 5.22.0 开始,亚马逊 EMR 仅 AWS 使用签名版本 4 来验证向亚马逊 S3 发出的请求。早期的 Amazon EMR 版本在某些情况下使用 AWS 签名版本 2,除非发行说明中注明仅使用签名版本 4。有关更多信息,请参阅《亚马逊简单存储服务开发者AWS 指南》中的对请求进行身份验证(AWS 签名版本 4)和对请求进行身份验证(签名版本 2)。
文件系统 | Prefix | 描述 |
---|---|---|
HDFS | hdfs:// (或无前缀) |
HDFS 是适用于 Hadoop 的一种可扩展的分布式便携文件系统。HDFS 的一项优势是管理集群的 Hadoop 集群节点与管理单一步骤的 Hadoop 集群节点之间的数据感知。有关更多信息,请参阅 Hadoop 文档 通过主节点和核心节点使用 HDFS。优势是快;劣势是它是短暂存储,会在集群终止时回收。它最适合用于缓存由中间任务流程步骤产生的结果。 |
EMRFS | s3:// |
EMRFS 是 Hadoop 文件系统的一种实现方式,用于从 Amazon EMR 读取常规文件并将其直接写入到 Amazon S3。EMRFS 提供了将永久数据存储在 Amazon S3 中以便与 Hadoop 配合使用的便利,同时还提供 Amazon S3 服务器端加密、read-after-write 一致性和列表一致性等功能。 注意之前,Amazon EMR 使用 |
本地文件系统 |
本地文件系统指的是本地连接的磁盘。创建 Hadoop 集群时,每个节点都是从一个 EC2 实例创建的,该实例带有预先配置的预连接磁盘存储块,称为实例存储。实例存储卷上的数据仅在其 EC2 实例生命周期内保留。实例存储卷适合于存储不断变化的临时数据(如缓冲区、缓存、Scratch 数据和其他临时内容)。有关更多信息,请参阅 Amazon EC2 实例存储。 HDFS 使用本地文件系统,但 Python 也从本地文件系统运行,您可以选择在实例存储卷上存储其他应用程序文件。 |
|
(早期)Amazon S3 数据块文件系统 | s3bfs:// |
Amazon S3 数据块文件系统是一种早期文件存储系统。我们强烈反对使用此系统。 重要我们不推荐使用此文件系统,因为它可能触发竞争条件,此条件可能会导致集群故障。但是,早期应用程序可能会需要它。 |
访问文件系统
通过用于访问数据的统一资源标识符 (URI) 前缀,您可以指定要使用的文件系统。以下步骤介绍了如何引用几种不同类型的文件系统。
访问本地 HDFS
-
在 URI 中指定
hdfs:///
前缀。Amazon EMR 会将未在 URI 中指定前缀的路径解析为本地 HDFS。例如,以下两项都 URIs 将解析到 HDFS 中的相同位置。hdfs:///
path-to-data
/path-to-data
访问远程 HDFS
-
将主节点 IP 地址包含在 URI 内,如以下示例所示。
hdfs://
master-ip-address
/path-to-data
master-ip-address
/path-to-data
访问 Amazon S3
-
使用
s3://
前缀。s3://
bucket-name
/path-to-file-in-bucket
访问 Amazon S3 数据块文件系统
-
仅用于需要 Amazon S3 数据块文件系统的旧版应用程序。要使用此文件系统访问或存储数据,请在 URI 中使用
s3bfs://
前缀。Amazon S3 数据块文件系统是一种旧版文件系统,用于支持向 Amazon S3 上载大于 5GB 的文件。借助 Amazon EMR 通过 AWS Java SDK 提供的分段上传功能,您可以将大小不超过 5 TB 的文件上传到 Amazon S3 原生文件系统,Amazon S3 块文件系统已被弃用。
警告
因为此早期文件系统可能创建会导致文件系统损坏的竞争条件,所以您应当避免使用此形式,而改用 EMRFS。
s3bfs://
bucket-name
/path-to-file-in-bucket