易于使用
Amazon EMR 简化了大数据环境和应用程序的构建和操作。EMR 相关功能包括易于预置、托管扩展和重新配置集群,以及用于协作开发的 EMR Studio。
只需几分钟即可预置集群:您可以在几分钟内启动 EMR 集群。您不必担心基础设施预置、集群设置、配置或优化。EMR 负责处理这些任务,而您的团队则可以集中精力开发别具一格的大数据应用程序。
轻松扩展资源以满足业务需求:您可以使用 EMR 托管扩展策略轻松设置扩展和缩减,使 EMR 集群自动管理计算资源,以满足您的使用需求和性能需求。这样可提高集群利用率并节约成本。
EMR Studio 是一个集成开发环境 (IDE),使数据科学家和数据工程师能够轻松地开发、可视化和调试用 R、Python、Scala 和 PySpark 编写的数据工程和数据科学应用程序。EMR Studio 提供完全托管的 Jupyter 笔记本,以及 Spark UI 和 YARN Timeline Service 等工具,可简化调试。
一键式高可用性:只需单击一下,即可轻松地为 YARN、HDFS、Apache Spark、Apache HBase 和 Apache Hive 等多主机应用程序配置高可用性。在 EMR 中启用多主机支持后,EMR 会配置这些应用程序以实现高可用性,并且在出现故障时,自动将故障转移到备用主机,这样您的集群就不会中断,并且会将主机节点置放在不同的机架中以降低同时出现故障的风险。监控主机以检测故障,当检测到问题时,自动预置新主机并将其添加到集群中。
EMR 托管扩展:自动调整集群大小,以尽可能低的成本获得最佳性能。通过 EMR 托管扩展,可以为集群指定最小和最大计算限制,Amazon EMR 会自动调整其大小,以实现最佳性能和资源利用率。EMR 托管扩展针对与集群上运行的工作负载相关的关键指标连续进行采样。
轻松重新配置正在运行的集群:您现在可以修改在 EMR 集群上运行的应用程序的配置,包括 Apache Hadoop、Apache Spark、Apache Hive 和 Hue,而无需重新启动集群。EMR 应用程序重新配置功能让您可以即时修改应用程序,而无需关闭或重新创建集群。Amazon EMR 将应用您的新配置,并正常重启重新配置的应用程序。您可以通过控制台、软件开发工具包或 CLI 应用配置。
弹性
Amazon EMR 使您能够快速、轻松地预配置所需的容量,以及自动或手动添加和移除容量。在处理要求不确定或者不能预料的情况下,这将非常有用。例如,如果您大多数的处理发生在夜间,那么,您白天可能需要 100 个实例,而夜间则可能需要 500 个实例。另一种情况是,您可能在短期内需要巨大的容量。借助 Amazon EMR,您可以快速预置数百或者数千个实例,自动扩展以满足计算要求,并在作业完成后关闭集群(避免为空闲容量付费)。
添加或移除容量有两个主要选项:
部署多个集群:如果您需要增加容量,可以轻松地启动新的集群,并在不再需要时予以终止。集群的使用数量没有限制。在拥有多个用户或者应用程序的情况下,需要使用多个集群。例如,可以将您的输入数据存储在 Amazon S3 中,并为需要处理该数据的每个应用程序启动一个集群。可以针对 CPU 优化一个集群,并针对存储优化另一个集群等等。
调整运行集群的大小:借助 Amazon EMR,您可以轻松地使用 EMR 托管扩展、自动扩展或手动调整运行集群。您可能需要向外扩展集群以临时提升其处理能力,或者在集群中扩展以在具有空闲容量时节约成本。例如,一些客户在出现批处理时会给集群添加数以百计的实例,并在处理完成时移除这些额外添加的实例。向集群添加实例时,只要预配置的容量可用,EMR 现在便可对其加以利用。向内扩展时,EMR 将主动选择空闲节点以减少对正在运行的任务的影响。
成本低廉
Amazon EMR 旨在降低处理大量数据的成本。其中一些功能有助于降低成本,包括较低的每秒单价、Amazon EC2 Spot 实例集成、Amazon EC2 预留实例集成、弹性和 Amazon S3 集成。
较低的每秒单价:Amazon EMR 按每秒定价,同时设有一分钟最低费用。小型实例的每实例小时起价为 0.015 USD(每年 131.40 USD)。请参阅定价部分了解更多详情。
Amazon EC2 Spot 集成:Amazon EC2 Spot 实例价格会随着实例的供需而浮动,但您支付的价格不会超过您所指定的最高价格。Amazon EMR 可让您轻松使用 Spot 实例,所以可以同时节省您的时间和资金。Amazon EMR 集群包括运行 HDFS 的“核心节点”和不运行 HDFS 的“任务节点”;任务节点非常适合 Spot 实例,因为 Spot 价格上涨的话,您就会失去这些实例,但不会丢失 HDFS 中存储的数据。(了解更多关于核心节点和任务节点的信息)。结合实例队列、Spot 实例的分配策略、EMR 托管扩展和更多多样化的选项,您可以优化 EMR 的弹性和成本。要了解更多信息,请阅读我们的博客。
Amazon S3 集成:借助 EMR 文件系统 (EMRFS), EMR 集群将 Amazon S3 高效安全地用作 Hadoop 的对象存储。您可以将数据存储在 Amazon S3 中并使用多个 Amazon EMR 集群处理同一个数据集。每个集群都可以针对特定的工作负荷进行优化,这要比单个集群为多个要求不同的工作负荷提供服务要高效得多。例如,您可以针对 I/O 优化一个集群,并针对 CPU 优化另一个集群,每个集群都处理 Amazon S3 中同样的数据集。另外,将输入与输出数据存储在 Amazon S3 中,还可以在不再需要的时候关闭集群。
EMRFS 在 Amazon S3 读写方面拥有极高性能,支持使用 AWS Key Management Service (KMS) 或客户管理的密钥进行 S3 服务器端或 S3 客户端加密,同时提供可选的一致性视图,用于检查元数据中所追踪对象的列表和写后读一致性。此外,Amazon EMR 集群可支持使用 EMRFS 和 HDFS,因此,您不必在集群上的存储和 Amazon S3 之间作选择。
AWS Glue 数据目录集成:您可以将 AWS Glue 数据目录作为托管元数据存储库使用,以存储 Apache Spark 和 Apache Hive 的外部表元数据。此外,它还可提供自动架构发现和架构版本历史记录,让您可以轻松地在集群外的 Amazon S3 上保留外部表的元数据。
灵活的数据存储
借助 Amazon EMR,您可以利用多种数据存储,包括 Amazon S3、Hadoop 分布式文件系统 (HDFS) 和 Amazon DynamoDB。
Amazon S3:Amazon S3 是具有高度持久性、可扩展性、安全性、快速且物美价廉的存储服务。借助 EMR 文件系统 (EMRFS),Amazon EMR 可以将 Amazon S3 安全高效地用作 Hadoop 的对象存储。Amazon EMR 对 Hadoop 进行了大量的改进,因此您可以无缝地处理 Amazon S3 中存储的大量数据。而且,EMRFS 还可以提供一致的视图,用于检查 Amazon S3 中对象的列表和写后读一致性。EMRFS 支持 S3 服务器端或 S3 客户端加密,以处理加密的 Amazon S3 对象,您可以使用 AWS Key Management Service (KMS) 或自定义的密钥供应商。
在启动集群时,Amazon EMR 会从 Amazon S3 向集群中的每个实例流式传输各种数据,并立即进行处理。将数据存储在 Amazon S3 中并使用 Amazon EMR 进行处理的一个优点是:您可以使用多个集群处理相同的数据。例如,您可能有一个针对内存进行优化的 Hive 开发集群和一个针对 CPU 进行优化的 Pig 生产集群,两个集群都使用同一个输入数据集。
Hadoop 分布式文件系统 (HDFS):HDFS 是一种 Hadoop 文件系统。Amazon EMR 的当前拓扑将其实例分为以下 3 个逻辑实例组:主组,可运行 YARN 资源管理器和 HDFS 名称节点服务;核心组,可运行 HDFS DataNode Daemon 和 YARN 节点管理器服务;以及任务组,可运行 YARN 节点管理器服务。Amazon EMR 将 HDFS 安装在与核心组中的实例相关联的存储上。
每个 EC2 实例都附带固定的存储量(称为“实例存储”)。您还可以向实例添加 Amazon EBS 卷,以在实例上自定义存储。Amazon EMR 允许您添加通用型 (SSD)、预配置 (SSD) 和磁性卷类型。添加到 EMR 集群的 EBS 卷在集群关闭后不会保留数据。您终止集群后,EMR 将自动清除卷。
您也可以使用 Amazon EMR 安全配置启用完整的 HDFS 加密,或者使用 Hadoop 密钥管理服务器手动创建 HDFS 加密区。 在将 AWS KMS 指定为密钥提供程序时,可以使用安全性配置选项来加密 EBS 根设备和存储卷。有关更多信息,请参见本地磁盘加密。
Amazon DynamoDB:Amazon DynamoDB 是一种完全托管的快速 NoSQL 数据库服务。Amazon EMR 与 Amazon DynamoDB 直接集成,因此您可以迅速而高效地处理 Amazon DynamoDB 中存储的数据,并在 Amazon EMR 中的 Amazon DynamoDB、Amazon S3 和 HDFS 间传输数据。
其他 AWS 数据存储:您还可以使用 Amazon Relational Database Service(一种可在云中轻松地设置、操作和扩展关系数据库的 Web 服务)、Amazon Glacier(一种成本极低的存储服务,为数据存档和备份提供安全和持久的存储)以及 Amazon Redshift(一种快速、完全托管的 PT 级数据仓库服务)。AWS Data Pipeline 是一种 Web 服务,帮助您可靠地处理数据并以规定的时间间隔在不同 AWS 计算与存储服务(包括 Amazon EMR)以及本地数据源之间移动数据。
选择您喜爱的开源应用程序
借助 Amazon EMR 上受版本控制的发布策略,您可以在 EMR 集群中轻松选择和使用最新的开源项目,包括 Apache Spark 和 Hadoop 生态系统中的应用程序。软件由 Amazon EMR 进行安装和配置,使您能够投入更多时间来提高数据价值,而不用操心基础设施和管理任务。
大数据工具
Amazon EMR 支持各种功能强大、经过验证的 Hadoop 工具,如 Apache Spark、Apache Hive、Presto 和 Apache HBase。数据科学家使用 EMR 运行深度学习和机器学习工具(如 TensorFlow、Apache MXNet),并且通过引导操作,可以添加特定于使用案例的工具和库。数据分析师使用 EMR Studio、Hue 和 EMR Notebooks 进行交互式开发、编写 Apache Spark 作业,并向 Apache Hive 和 Presto 提交 SQL 查询。数据工程师使用 EMR 进行数据管道开发和数据处理,并使用 Apache Hudi 来简化需要进行记录级别插入、更新和删除操作的增量数据管理和数据隐私使用案例。
数据处理和机器学习
Apache Spark 是 Hadoop 生态系统中的引擎,可以快速处理大量数据集。使用内存中的容错恢复分布式数据集 (RDD) 和有向无环图 (DAG) 来定义数据转换。Spark 还包括 Spark SQL、Spark Streaming、MLlib 和 GraphX。了解什么是 Spark,并详细了解 EMR 上的 Spark。
Apache Flink 是一种流式处理数据流引擎,可让您轻松对高吞吐量数据来源运行实时流处理。该引擎还支持无序事件的事件时间语义、只执行一次语义、回压控制及针对写入流式处理和批处理应用程序优化过的 API。了解什么是 Flink,并详细了解 EMR 上的 Flink。
TensorFlow 是一种用于机器智能和深度学习应用程序的开源符号数学库。TensorFlow 将多种机器学习和深度学习模型和算法捆绑在一起,可以为许多不同的使用案例训练和运行深度神经网络。了解有关 EMR 上的 TensorFlow 的更多信息。
记录级别 Amazon S3 数据管理
Apache Hudi 是一种开源数据管理框架,用于简化增量数据处理和数据管道开发工作。借助 Apache Hudi,您可以在 Amazon S3 中管理记录级别的数据,从而简化变更数据捕获 (CDC) 和流式数据摄入操作,为处理需要记录级别更新和删除的数据隐私使用案例提供了框架。了解有关 Amazon EMR 上的 Apache Hudi 的更多信息。
SQL
Apache Hive 是在 Hadoop 之上运行的一种开源数据仓库和分析软件包。Hive 由基于 SQL 的语言 Hive QL 操作,允许用户构建、汇总和查询数据。Hive QL 的功能超出标准 SQL,支持一流的 map/reduce 函数和 Json 与 Thrift 等复杂的由用户定义的可扩展数据类型。该功能能够处理复杂的非结构化数据源,如文本文档和日志文件。Hive 支持通过在 Java 中编写的用户定义函数使用用户扩展。Amazon EMR 对 Hive 进行了无数的改进,包括直接集成 Amazon DynamoDB 和 Amazon S3。例如,您可以使用 Amazon EMR 自动从 Amazon S3 载入表分区,并向 Amazon S3 中的表写入数据,而无需使用临时文件;您也可以访问 Amazon S3 中的资源,如适用于自定义 map/reduce 操作和其他库的脚本。了解什么是 Hive,并详细了解 EMR 上的 Hive。
Presto 是一种开源的分布式 SQL 查询引擎,针对低延迟的临时数据分析进行了优化。它支持 ANSI SQL 标准,包括复杂查询、聚合、连接和窗口函数。Presto 可处理来自多个数据源(包括 Hadoop 分布式文件系统 [HDFS] 和 Amazon S3)的数据。了解什么是 Presto,并详细了解 EMR 上的 Presto。
Apache Phoenix 具备 ACID 事务处理功能,可以实现对存储在 Apache HBase 中的数据的低延迟 SQL。您可以轻松创建二级索引以获取更多性能,并针对同一底层 HBase 表创建不同的视图。了解有关 EMR 上的 Phoenix 的更多信息。
NoSQL
Apache HBase 是一种仿效 Google BigTable 的开源、非关系型分布式数据库。它是 Apache 软件基金会 Hadoop 项目的一部分,基于 Hadoop 分布式文件系统 (HDFS) 运行,为 Hadoop 生态系统提供非关系数据库功能。HBase 为您提供了一种用列式压缩和存储方式来存储大量稀疏数据的高效容错方法。此外,HBase 会将数据缓存到内存中,因此可提供数据的快速查询。在连续写入操作方面对 HBase 进行了优化,批量插入、更新和删除等操作的效率很高。HBase 可与 Hadoop 无缝配合,从而共享其文件系统并用作 Hadoop 工作的直接输入和输出。HBase 还与 Apache Hive 集成,支持对 HBase 表进行类似 SQL 的查询、与基于 Hive 的表结合并支持 Java 数据库连接 (JDBC)。借助 EMR,您可以使用 S3 作为 HBase 的数据存储,从而缩减成本并降低操作复杂性。如果您使用 HDFS 作为数据存储,则可以将 HBase 备份至 S3,或者从以前创建的备份恢复 HBase。了解什么是 HBase,并详细了解 EMR 上的 HBase。
交互式分析
EMR Studio 是一个集成开发环境 (IDE),使数据科学家和数据工程师能够轻松地开发、可视化和调试用 R、Python、Scala 和 PySpark 编写的数据工程和数据科学应用程序。EMR Studio 提供完全托管的 Jupyter 笔记本,以及 Spark UI 和 YARN Timeline Service 等工具,可简化调试。
Hue 是面向 Hadoop 的开源用户界面,可以让您更轻松地运行和开发 Hive 查询、管理 HDFS 中的文件、运行和开发 Pig 脚本以及管理表。EMR 上的 Hue 还与 Amazon S3 进行了集成,因此您可以直接对 S3 进行查询,并在 HDFS 和 Amazon S3 之间轻松地传输文件。了解有关 Hue 和 EMR 的更多信息。
Jupyter Notebook 是一种开源 Web 应用程序,可用于创建和共享包含实时代码、方程式、可视化效果和叙述文本的文档。借助 JupyterHub,您可以托管单用户 Jupyter Notebook 服务器的多个实例。使用 JupyterHub 创建 EMR 集群时,EMR 会在集群的主节点上创建 Docker 容器。JupyterHub、Jupyter 所需的所有组件和 Sparkmagic 都在容器中运行。
Apache Zeppelin 是一种开源 GUI,可创建交互式和协作式笔记本,以便使用 Spark 进行数据浏览。您可以使用 Scala、Python、SQL(使用 Spark SQL)或 HiveQL 操作数据并快速可视化结果。Zeppelin 笔记本可在多名用户间共享,并可将可视化表示发布到外部控制面板。了解 EMR 上的 Zeppelin 的更多信息。
日程安排和工作流程
Apache Oozie 是一种适用于 Hadoop 的工作流程计划程序,您可在其中创建操作的有向无环图 (DAG)。此外,您还可以按操作或时间轻松触发 Hadoop 工作流程。了解有关 EMR 上的 Oozie 的更多信息。 AWS Step Functions 允许您向应用程序添加无服务器工作流程自动化功能。工作流程的步骤可在任何地方运行,包括在 AWS Lambda 函数中、在 Amazon Elastic Compute Cloud (EC2) 上或本地。了解有关 EMR 上的 Step Functions 的更多信息。
其他项目和工具
EMR 还支持各种其他常见的应用程序和工具,如 R、Apache Pig(数据处理和 ETL)、Apache Tez(复杂的 DAG 执行)、Apache MXNet(深度学习)、Ganglia(监控)、Apache Sqoop(关系数据库连接器)、HCatalog(表和存储管理)等。Amazon EMR 团队负责维护引导操作的开源存储库,该存储库可以用于安装其他软件,配置集群,或者作为示例向您自己的引导操作提供服务。
数据访问控制
默认情况下,Amazon EMR 应用程序流程在调用其他 AWS 服务时使用 EC2 实例配置文件。对于多租户集群,Amazon EMR 提供了三个选项来管理用户对 Amazon S3 数据的访问。
与 AWS Lake Formation 的集成允许您定义和管理 AWS Lake Formation 中的精细授权策略,以访问 AWS Glue 数据目录中的数据库、表和列。您可以对通过 Amazon EMR Notebooks 和 Apache Zeppelin 提交的用于交互式 EMR Spark 工作负载的作业实施授权策略,并将审核事件发送到 AWS CloudTrail。通过启用此集成,您还可以从与安全断言标记语言 (SAML) 2.0 兼容的企业身份验证系统中启用到 EMR Notebooks 或 Apache Zeppelin 的联合单点登录。
与 Apache Ranger 的本机集成允许您设置新的或现有的 Apache Ranger 服务器,以定义和管理精细授权策略,从而使用户可以通过 Hive Metastore 访问 Amazon S3 数据的数据库、表和列。 Apache Ranger 是一个开源工具,用于在 Hadoop 平台上启用、监视和管理全面的数据安全。
通过本机集成,您可以在 Apache Ranger Policy Admin 服务器上定义三种授权策略。您可以为 Hive 设置数据表、数据列和数据行级别的授权,为 Spark 设置数据表和数据列级别的授权,以及为 Amazon S3 设置前缀和对象级别的授权。Amazon EMR 会在集群上自动安装和配置相应的 Apache Ranger 插件。这些 Ranger 插件与 Policy Admin 服务器同步,以定义授权策略,实施数据访问控制,并将审核事件发送到 Amazon CloudWatch Logs。
Amazon EMR User Role Mapper 允许您利用 AWS IAM 权限来管理对 AWS 资源的访问。您可以在用户(或组)和自定义 IAM 角色之间创建映射。用户或组只能访问自定义 IAM 角色允许的数据。目前可通过 AWS 实验室使用该功能。
一致的混合体验
AWS Outposts 是一项完全托管的服务,可将 AWS 基础设施、AWS 服务、API 和工具扩展到几乎任何数据中心、共处空间或本地设施,以实现真正一致的混合体验。AWS Outposts 上的 Amazon EMR 让您可以通过用于 EMR 的同一 AWS 管理控制台、软件开发工具包 (SDK) 和命令行界面 (CLI) 在您的数据中心中部署与管理 EMR 集群。
其他功能
为您的集群选择正确的实例:您可以根据应用程序的要求,选择要在集群中预置的 EC2 实例类型(标准型、内存增强型、CPU 增强型、高 I/O 型等)。您拥有每个实例的根访问权限,可完全自定义集群,以适合您的要求。了解有关支持的 Amazon EC2 实例类型的更多信息。对于基于 Graviton2 的实例上的 Spark 工作负载,Amazon EMR 现在可实现高达 30% 的成本降幅和 15% 的性能增幅。通过我们的博客了解更多信息。
调试应用程序:在集群上启用调试时,Amazon EMR 会将日志文件存档到 Amazon S3,然后制作这些文件的索引。随后,您可以使用控制台中的图形界面直观地浏览日志并查看任务历史记录。了解有关调试 Amazon EMR 任务的更多信息。
监控您的集群:您可以使用 Amazon CloudWatch 监控自定义的 Amazon EMR 指标,如制作运行的 map 和 reduce 任务的平均数量。您还可以在这些指标上设置警报。了解有关监控 Amazon EMR 集群的更多信息。
响应事件:您可以使用 Amazon CloudWatch Events 中的 Amazon EMR 事件类型来响应 Amazon EMR 集群中的状态更改。通过使用可以快速设置的简单规则,您可以匹配各种事件并将其发送到 Amazon SNS 主题、AWS Lambda 函数和 Amazon SQS 队列等不同目标位置。了解有关 Amazon EMR 集群事件的更多信息。
计划重复发生的工作流程:您可以使用 AWS Data Pipeline 计划各种重复发生、涉及 Amazon EMR 的工作流程。AWS Data Pipeline 是一种 Web 服务,帮助您可靠地处理数据并以指定的间隔在不同 AWS 计算与存储服务以及内部数据源之间移动数据。了解有关 Amazon EMR 和 AWS Data Pipeline 的更多信息。
深度学习:使用 Apache MXNet 等常见的深度学习框架来定义、训练和部署深度神经网络。您可以在具有 GPU 实例的 Amazon EMR 集群上使用这些框架。了解有关 Amazon EMR 上的 MXNet 的更多信息。
控制集群的网络访问:您可以在 Amazon Virtual Private Cloud (VPC) 中启动集群,这是 AWS 云的逻辑隔离部分。您可以完全掌控您的虚拟联网环境,包括选择自己的 IP 地址范围、创建子网以及配置路由表和网络网关。了解有关 Amazon EMR 和 Amazon VPC 的更多信息。
管理用户、权限和加密:您可以使用 AWS Identity and Access Management (IAM) 工具(如“IAM 用户和角色”)控制访问和权限。例如,您可以为某些用户提供集群的读取权限,但不提供写入权限。另外,您还可以使用 Amazon EMR 安全配置设置各种静态加密和正在传输的加密选项,其中包括 Amazon S3 加密支持和 Kerberos 身份验证。了解有关集群的访问控制和 Amazon EMR 加密选项的更多信息。
安装其他软件:您可以使用引导操作或运行 Amazon Linux 的自定义 Amazon 系统映像 (AMI) 在您的集群上安装其他软件。引导操作指的是 Amazon EMR 启动集群时在集群节点上运行的脚本。它们在 Hadoop 启动和节点开始处理数据之前运行。此外,您还可以预加载和使用自定义 Amazon Linux AMI 上的软件。了解有关 Amazon EMR 引导操作和自定义 Amazon Linux AMI的更多信息。
高效复制数据:您可以迅速地将大量数据从 Amazon S3 移到 HDFS,从 HDFS 移到 Amazon S3,并使用 Amazon EMR 的 S3DistCp 在 Amazon S3 存储段之间进行移动。S3DistCp 是开放源工具 Distcp 的扩展应用,它可使用 MapReduce 高效移动大量数据。了解有关 S3DistCp 的更多信息。
自定义 JAR:写入 Java 程序、针对您希望使用的 Hadoop 版本进行编译并上载到 Amazon S3。然后,您就可以使用 Hadoop JobClient 界面将 Hadoop 任务提交到集群。了解有关使用 Amazon EMR 自定义 JAR 处理的更多信息。
了解有关 Amazon EMR 定价的更多信息