使用存储和文件系统 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用存储和文件系统

Amazon EMR 和 Hadoop 提供了各种文件系统,供您在处理集群步骤时使用。通过用于访问数据的 URI 前缀,您可以指定要使用的文件系统类型。例如,s3://DOC-EXAMPLE-BUCKET1/path 会引用使用 EMRFS 的 Amazon S3 存储桶。下表列出了可用的文件系统以及关于最适合用途的建议。

Amazon EMR 和 Hadoop 处理集群时通常会使用两个或多个以下文件系统。HDFS 和 EMRFS 是与 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。优势是快;劣势是它是短暂存储,会在集群终止时回收。它最适合用于缓存由中间任务流程步骤产生的结果。

EMRFS s3://

EMRFS 是 Hadoop 文件系统的一种实现方式,用于从 Amazon EMR 读取常规文件并将其直接写入到 Amazon S3。通过 EMRFS 可以方便地将持久性数据存储在 Amazon S3 中,以便用于 Hadoop,同时它还提供诸如 Amazon S3 服务器端加密、先写后读一致性和列表一致性等功能。

注意

之前,Amazon EMR 使用 s3ns3a 文件系统。尽管这两种文件系统仍然有效,不过我们建议您使用 s3 URI 方案以获得最佳性能、安全性和可靠性。

本地文件系统

本地文件系统指的是本地连接的磁盘。创建 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-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 通过 Amazon Java SDK 提供的分段上载功能,您可以上载最大为 5TB 的文件到 Amazon S3 本机文件系统,而 Amazon S3 数据块文件系统已被弃用。

    警告

    因为此早期文件系统可能创建会导致文件系统损坏的竞争条件,所以您应当避免使用此形式,而改用 EMRFS。

    s3bfs://bucket-name/path-to-file-in-bucket