发布于: Jun 20, 2022

许多组织已经在利用云端数据存储的可扩展性和成本节约来对其本地数据中心扩展,以满足其业务发展过程中数据量不断增加的需求。Amazon Web Services 的 EC2S3 等服务现在无处不在,被基础架构团队广泛的应用在各种规模的项目。 同时,数据分析工作负载也越来越多地迁移到云上。 Amazon EMR 是一个托管集群平台,可简化在 Amazon Web Services 上运行大数据框架(如 Apache Hadoop 和 Apache Spark)以处理和分析海量数据的操作。借助这些框架和相关的开源项目 (如 Apache Hive 和 Apache Pig)。您可以处理用于分析目的的数据和商业智能工作负载。此外,您可以使用  Amazon EMR 转换大量数据和将大量数据移入和移出其他 如 S3 的 Amazon Web Services 数据存储。在本文中,我们将从架构设计的角度来分享由于 HDFS 和 S3 的不同特点带来的挑战,以及如何在EMR中利用 Alluxio 来实现基于对象存储的智能分层大数据存储架构。

集群 (Cluster)是 Amazon EMR 的核心概念。集群是 EC2 实例的集合。集群中的每个实例称作节点。集群中的每个节点都有一个角色,包括主节点、核心节点和任务节点。Amazon EMR 还在每个节点类型上安装不同的应用组件(例如 Spark,Presto 和 Hive 等计算服务以及 HDFS 本地分布式存储服务),在分布式应用中为每个节点赋予角色。
关于 Amazon EMR 的存储架构,大多数工作负载通常使用 HDFS 来缓存由任务流程步骤产生的中间结果,并使用 EMRFS 保存最终计算结果。

文件系统 特性及应用方式
HDFS HDFS 是适用于 Hadoop 的一种可扩展的分布式便携文件系统。HDFS 的一项优势是管理集群的 Hadoop 集群节点与管理单一步骤的 Hadoop 集群节点之间的数据感知。通过主节点和核心节点使用 HDFS。优势是快;劣势是它是短暂存储,会在集群终止时回收。它最适合用于缓存由中间任务流程步骤产生的结果。
EMRFS EMRFS Hadoop 文件系统的一种实现方式,用于从 Amazon EMR 读取常规文件并将其直接写入到 Amazon S3。通过 EMRFS 可以方便地将持久性数据存储在 Amazon S3 中以便用于 Hadoop,同时它还提供诸如 Amazon S3 服务器端加密、先写后读一致性和列表一致性等功能。
1)使用 HDFS 作为 Amazon Web Services EMR 数据存储
当计算框架使用 HDFS 作为 Amazon Web Services EMR 数据存储时,数据将存储在每个计算实例中。虽然 HDFS 可用于缓存 MapReduce 和 Spark 等工作负载的中间结果,但当群集终止时,存储卷往往会被收回,所以需要在不同的 EMR 群集运行中保留数据,一个解决方案是从 HDFS 将数据复制到 S3(通常使用 Hadoop 的 distCp 或 Amazon Web Services 扩展 S3DistCp)。另外,虽然 HDFS 的工作负载 I/O 具有低延迟,但是在数据管道的每个关键阶段后将结果集复制到持久存储(如 S3)时,需要考虑到数据复制所需要的时间开销。
2)使用 EMRFS 在 Amazon Web Services EMR 中存储数据
S3 已经成为各种工作负载中非常受欢迎的对象存储。它提供可扩展性、弹性、低廉的成本和简单的 API。EMR 文件系统 (EMRFS) 是 一种 HDFS 的实现,所有 Amazon EMR 集群将其用于直接从 Amazon EMR 读取常规文件并将其写入 Amazon S3。EMRFS 使您能够方便地将持久性数据存储在 Amazon S3 中以便用于 Hadoop,同时它还提供了一致视图和数据加密等功能。通过一致视图可以为 Amazon S3 中对象的列表和先写后读 (对于新放置请求) 提供一致性检查。数据加密可让您对由 EMRFS 写入 Amazon S3 的对象进行加密,并且还允许 EMRFS 处理 Amazon S3 中的加密对象。
与直接在 HDFS 上存储数据相比, 由于数据不是本地缓存,所以需要读取的每个数据必须通过 EMRFS 从 S3 获取。另外,大多数 Hadoop 应用程序都依赖于强一致的存储系统。EMRFS 需要通过缓存 到Amazon Web Services DynamoDB 中的对象元数据来部分解决强一致性问题。但元数据仍仅当对象在 Amazon EMR 作业过程中由 EMRFS 写入或对象使用 EMRFS CLI 同步或导入到 EMRFS 元数据时,元数据才会添加到 EMRFS。

相关文章