使用 Amazon EMR 处理存储和文件系统
Amazon EMR 和 Hadoop 提供了各种文件系统,供您在处理集群步骤时使用。通过用于访问数据的 URI 前缀,您可以指定要使用的文件系统类型。例如,s3://amzn-s3-demo-bucket1/path 指向一个使用 S3A 的 Amazon S3 存储桶(自 EMR-7.10.0 版本起)。下表列出了可用的文件系统以及关于最适合用途的建议。
Amazon EMR 和 Hadoop 处理集群时通常会使用两个或多个以下文件系统。HDFS 和 S3A 是与 Amazon EMR 配合使用的两种主要文件系统。
重要
从 Amazon EMR 发行版 5.22.0 开始,Amazon EMR 专门使用 Amazon 签名版本 4 来对 Amazon S3 的请求进行身份验证。除非发布说明指出需专门使用签名版本 4,否则早期 Amazon EMR 发行版在某些情况下使用 Amazon 签名版本 2。有关更多信息,请参阅《Amazon Simple Storage Service 开发人员指南》中的对请求进行身份验证(Amazon签名版本 4)和对请求进行身份验证(Amazon签名版本 2)。
| 文件系统 | Prefix | 描述 |
|---|---|---|
| HDFS | hdfs:// (或无前缀) |
HDFS 是适用于 Hadoop 的一种可扩展的分布式便携文件系统。HDFS 的一项优势是管理集群的 Hadoop 集群节点与管理单一步骤的 Hadoop 集群节点之间的数据感知。有关更多信息,请参阅 Hadoop 文档 通过主节点和核心节点使用 HDFS。优势是快;劣势是它是短暂存储,会在集群终止时回收。它最适合用于缓存由中间任务流程步骤产生的结果。 |
| S3A | s3://, s3a://, s3n:// |
Hadoop S3A 文件系统是一个开源 S3 连接器,它使 Apache Hadoop 及其生态系统能够直接与 Amazon S3 存储进行交互。它允许用户使用与 Hadoop 兼容的文件操作在 S3 存储桶中读取和写入数据,从而在 Hadoop 应用程序和云存储之间实现无缝集成。 注意在 EMR-7.10.0 之前,Amazon EMR 将 EMRFS 用于 s3:// 和 s3n:// 方案。 |
| 本地文件系统 |
本地文件系统指的是本地连接的磁盘。创建 Hadoop 集群时,会从 EC2 实例上创建各个节点,这些节点附带了预先配置的数据块,这些数据块属于称为实例存储 的预先附加的磁盘存储。实例存储卷上的数据仅在 EC2 实例的生命周期内保留。实例存储卷适合于存储不断变化的临时数据(如缓冲区、缓存、Scratch 数据和其他临时内容)。有关更多信息,请参阅 Amazon EC2 实例存储。 HDFS 使用本地文件系统,但 Python 也从本地文件系统运行,您可以选择在实例存储卷上存储其他应用程序文件。 |
|
| (早期)Amazon S3 数据块文件系统 | s3bfs:// |
Amazon S3 数据块文件系统是一种早期文件存储系统。我们强烈反对使用此系统。 重要我们不推荐使用此文件系统,因为它可能触发竞争条件,此条件可能会导致集群故障。但是,早期应用程序可能会需要它。 |
访问文件系统
通过用于访问数据的统一资源标识符 (URI) 前缀,您可以指定要使用的文件系统。以下步骤介绍了如何引用几种不同类型的文件系统。
访问本地 HDFS
-
在 URI 中指定
hdfs:///前缀。Amazon EMR 会将未在 URI 中指定前缀的路径解析为本地 HDFS。例如,以下两个 URI 都会解析至 HDFS 中的相同位置。hdfs:///path-to-data/path-to-data
访问远程 HDFS
-
将主节点 IP 地址包含在 URI 内,如以下示例所示。
hdfs://master-ip-address/path-to-datamaster-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 上传大于 5 GB 的文件。借助 Amazon EMR 通过 Amazon Java SDK 提供的分段上传功能,您可以将大文件上传到 Amazon S3 本机文件系统,而 Amazon S3 数据块文件系统已被弃用。有关 EMR 分段上传的更多信息,请参阅为 Amazon S3 配置分段上传。有关 S3 对象大小和部分大小限制的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的 Amazon S3 分段上传限制。
警告
因为此早期文件系统可能创建会导致文件系统损坏的竞争条件,所以您应当避免使用此形式,而改用 EMRFS。
s3bfs://bucket-name/path-to-file-in-bucket