使用存储和文件系统 - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用存储和文件系统

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

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 文件系统的实现,用于EMR直接从亚马逊读取和写入常规文件到 Amazon S3。EMRFS提供了在 Amazon S3 中存储永久性数据以供 Hadoop 使用的便利,同时还提供 Amazon S3 服务器端加密、read-after-write 一致性和列表一致性等功能。

注意

以前,Amazon EMR 使用s3ns3a文件系统。虽然两者仍然有效,但我们建议您使用该s3URI方案以获得最佳性能、安全性和可靠性。

本地文件系统

本地文件系统指的是本地连接的磁盘。创建 Hadoop 集群时,每个节点都是从一个EC2实例创建的,该实例带有预先配置的预连接磁盘存储块,称为实例存储。实例存储卷上的数据仅在其EC2实例生命周期内保留。实例存储卷适合于存储不断变化的临时数据(如缓冲区、缓存、Scratch 数据和其他临时内容)。有关更多信息,请参阅 Amazon EC2 实例存储

使用本地文件系统HDFS,但是 Python 也从本地文件系统运行,您可以选择在实例存储卷上存储其他应用程序文件。

(早期)Amazon S3 数据块文件系统 s3bfs://

Amazon S3 数据块文件系统是一种早期文件存储系统。我们强烈反对使用此系统。

重要

我们不推荐使用此文件系统,因为它可能触发竞争条件,此条件可能会导致集群故障。但是,早期应用程序可能会需要它。

访问文件系统

您可以通过用于访问数据的统一资源标识符 (URI) 的前缀来指定要使用的文件系统。以下步骤介绍了如何引用几种不同类型的文件系统。

访问本地 HDFS
  • 在中指定hdfs:///前缀URI。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 数据块文件系统的旧版应用程序。要使用此文件系统访问或存储数据,请使用中的s3bfs://前缀URI。

    Amazon S3 数据块文件系统是一种旧版文件系统,用于支持向 Amazon S3 上载大于 5GB 的文件。借助亚马逊通过 AWS Java EMR 提供的分段上传功能SDK,您可以将大小不超过 5 TB 的文件上传到 Amazon S3 原生文件系统,Amazon S3 块文件系统已被弃用。

    警告

    由于这种传统文件系统可能会造成竞争条件,从而损坏文件系统,因此应避免使用这种格式,而应EMRFS改用这种格式。

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