Amazon EMR 上的 Apache Hadoop

为什么选择 EMR 上的 Apache Hadoop?

Apache™ Hadoop® 是一个开源软件项目,可用于高效地处理大数据集。利用 Hadoop,您可以将商用硬件组成集群以便并行分析海量数据集,而不必使用一台大型计算机处理和存储数据。

Hadoop 生态系统中具有大量应用程序和执行引擎,提供了多种可满足您的分析工作负载需求的工具。 借助 Amazon EMR,您可以轻松创建和管理由 Amazon EC2 实例组成的配置完整的弹性集群,这些实例运行 Hadoop 及 Hadoop 生态系统中的其他应用程序。

Hadoop 生态系统中的应用程序和框架

Hadoop 通常是指实际的 Apache Hadoop 项目,其中包括 MapReduce(执行框架)、YARN(资源管理器)和 HDFS(分布式存储)。您也可以安装新一代框架 Apache Tez,该框架可用作执行引擎来代替 Hadoop MapReduce。Amazon EMR 还包括 EMRFS,这是一种连接器,允许 Hadoop 将 Amazon S3 作为存储层使用。

此外,Hadoop 生态系统中还具有其他应用程序和框架,其中包括可实现低延迟查询的工具、用于执行交互式查询的 GUI、各种接口(如 SQL),以及分布式 NoSQL 数据库。Hadoop 生态系统包含许多开源工具,这些工具专门用于在 Hadoop 核心组件上构建附加功能,您可以使用 Amazon EMR 在您的集群上轻松安装和配置各种工具,如 Hive、Pig、Hue、Ganglia、Oozie 和 HBase。除了运行 Amazon EMR 上的 Hadoop 之外,您还可以运行其他框架,如用于执行内存中处理的 Apache Spark 或适用于交互式 SQL 的 Presto

Hadoop:基本组件

Amazon EMR 以编程方式跨集群节点安装和配置 Hadoop 项目中的应用程序,其中包括 Hadoop MapReduce、YARN、HDFS 和 Apache Tez

Hadoop 生态系统中的 Hadoop MapReduce 和 Tez 执行引擎通过框架来处理工作负载,这些框架可将作业细分为更小的工作片段,使工作能够在 Amazon EMR 集群中跨节点分配。由于集群中的任何给定虚拟机随时都有可能会发生故障,因此它们本身设计有容错功能。如果运行任务的服务器发生故障,Hadoop 会在另一台虚拟机上重新运行该任务,直至完成。

您可以采用 Java 语言写入 MapReduce 和 Tez 计划,使用 Hadoop Streaming 以并行方式执行自定义脚本,利用 Hive 和 Pig 在 MapReduce 和 Tezfor 上实现更高水平的抽象,或使用其他工具与 Hadoop 进行交互。

首先来看一下 Hadoop 2,其资源由 Yet Another Resource Negotiator (YARN) 管理。YARN 可跟踪集群中的所有资源,并确保动态分配这些资源以便完成所处理作业中的任务。YARN 能够管理 Hadoop MapReduce 和 Tez 工作负载以及其他分布式框架 (如 Apache Spark)。

通过使用 Amazon EMR 集群上的 EMR 文件系统 (EMRFS),您可以将 Amazon S3 用作 Hadoop 中的数据层。Amazon S3 高度可扩展、成本低廉且持久耐用,是适合用于执行大数据处理的优良数据存储。通过将数据存储在 Amazon S3 中,您可以将计算层与存储层分离,从而可以根据工作负载所需的 CPU 和内存量调整您的 Amazon EMR 集群的大小,而不必为了最大限度地增加集群存储空间而在集群中部署额外的节点。此外,您可以在数据仍旧保留在 Amazon S3 中的情况下终止处于空闲状态的 Amazon EMR 集群以节省成本。

EMRFS 针对 Hadoop 进行了优化,可直接以并行方式对 Amazon S3 执行高性能读写操作,并且可以处理使用 Amazon S3 服务器端和客户端加密功能进行加密的对象。利用 EMRFS,可以将 Amazon S3 作为数据湖使用,并且 Amazon EMR 中的 Hadoop 可以作为弹性查询层使用。

Hadoop 还包括分布式存储系统,即 Hadoop 分布式文件系统 (HDFS),该系统能够将数据以大型块的形式存储在集群中的各个本地磁盘上。HDFS 具有一个可以配置的复制系数(默认值是 3 倍),因而提高了可用性和耐用性。HDFS 可以监控复制并在节点发生故障及添加新节点时平衡各个节点上的数据。

HDFS 自动随 Hadoop 一起安装在您的 Amazon EMR 集群上,您可以搭配使用 HDFS 和 Amazon S3 来存储输入和输出数据。您可以使用 Amazon EMR 安全配置轻松加密 HDFS。此外,Amazon EMR 可将 Hadoop 配置为使用 HDFS 和本地磁盘来存储在 Hadoop MapReduce 任务执行期间创建的中间数据,即使您的输入数据存储在 Amazon S3 中也是如此。

在 Amazon EMR 上使用 Hadoop 的优势

您可以动态地快速初始化新的 Hadoop 集群,也可以向现有的 Amazon EMR 集群中添加服务器,从而大幅缩短向用户和数据专家提供资源所花费的时间。在 AWS 平台上使用 Hadoop,通过降低为实验和开发分配资源所需的成本和时间,大幅提高您的组织敏捷性。

Hadoop 配置、联网、服务器安装、安全配置和持续的管理维护将会是复杂而艰巨的任务。作为托管服务,Amazon EMR 可以满足您的 Hadoop 基础设施的需求,因此您可以将精力放在核心业务上。

您可以轻松地将您的 Hadoop 环境与其他服务集成,例如 Amazon S3Amazon KinesisAmazon RedshiftAmazon DynamoDB,从而在 AWS 平台上跨各种不同的服务执行数据移动、工作流程和分析。此外,您还可以将 AWS Glue Data Catalog 用作适用于 Apache Hive 和 Apache Spark 的托管元数据存储库。

许多 Hadoop 任务都难以执行。例如,ETL 任务可以每小时、每天或每月运行一次,而金融企业的建模任务或基因排序可能一年仅执行几次。通过在 Amazon EMR 上使用 Hadoop,您可以轻松地启动这些工作负载集群,保存结果,并在不再需要 Hadoop 资源时将其关闭,以避免产生不必要的基础设施成本。 EMR 6.x 支持 Hadoop 3,它允许 YARN NodeManager 直接在 EMR 集群主机上或 Docker 容器内启动容器。要了解更多信息,请参阅我们的文档。

通过在 Amazon EMR 上使用 Hadoop,您可以灵活地在任意 AWS 区域中任意数量的可用区中启动集群。只需几分钟,您便可以在其他可用区中启动集群,轻松解决某一区域或可用区内的潜在问题或威胁。

在部署 Hadoop 环境之前规划容量通常会导致代价高昂的资源闲置或资源限制。借助 Amazon EMR,您可在几分钟内创建具备所需容量的集群,以及使用 EMR Managed Scaling 动态扩展和缩减节点。

Hadoop 与大数据有何关联?

Hadoop 高度可扩展,因而通常用于处理大数据工作负载。为了提升 Hadoop 集群的处理能力,可添加更多具备所需 CPU 和内存资源的服务器来满足您的需求。

Hadoop 具备出色的耐用性和可用性级别,同时仍能并行处理计算分析工作负载。处理能力高度可用、持久耐用且具备出色的可扩展性,这让 Hadoop 成为了适合用于处理大数据工作负载的绝佳方案。您可以使用 Amazon EMR 在几分钟内创建和配置一个运行 Hadoop 的 Amazon EC2 实例集群,然后开始从数据中获取价值。

使用案例

Apache 和 Hadoop 是 Apache Software Foundation 的商标。

Hadoop 可用于分析点击流数据,以便细分用户并了解用户的偏好。广告客户还可以分析点击流和广告曝光量日志,从而提供更有效的广告。

了解 Razorfish 如何使用 Amazon EMR 上的 Hadoop 进行点击流分析

Hadoop 可用于处理 Web 和移动应用程序生成的日志。Hadoop 可帮助您将数 PB 的非结构化或半结构化数据转变为与应用程序或用户有关的有用洞察信息。

了解 Yelp 如何使用 Amazon EMR 上的 Hadoop 提升主要网站功能

 

利用 Hadoop 生态系统应用程序(如 Hive),用户可以通过 SQL 界面使用 Hadoop MapReduce,从而实现大规模分析、分布式和容错数据仓储。使用 Hadoop 存储您的数据,并允许您的用户发送含任何大小的数据的查询。

观看 Netflix 如何使用 Amazon EMR 上的 Hadoop 运行 PB 级数据仓库

Hadoop 可快速高效地处理大量基因数据及其他大型科学数据集。AWS 已将 1000 个基因组项目数据免费提供给社区。

详细了解基于 AWS 的基因组学

 

Hadoop 高度可扩展且成本低廉,非常适合用于处理常见的 ETL 工作负载,例如,执行大数据集收集、排序、连接和聚合操作,以方便下游系统使用。

了解 Euclid 如何使用 Amazon EMR 上的 Hadoop 进行 ETL 和数据聚合