- 首页›
- 亚马逊云科技文档概述›
- Amazon EMR 文档
Amazon EMR 文档
可用性
在几分钟内预置集群
扩展资源以满足业务需求
您可以使用 EMR 托管式扩缩策略设置横向扩展与横向缩减,并让您的 EMR 集群能够自动管理计算资源,以满足您的使用和性能需求。这可以优化集群利用率。
EMR Studio 是一个集成式开发环境(IDE),它使数据科学家和数据工程师可以更轻松地开发、可视化并调试以 R、Python、Scala 和 PySpark 编写的数据工程和数据科学应用程序。EMR Studio 托管式 Jupyter Notebook 和工具(如 Spark UI 和 YARN 时间轴服务)来简化调试。
高可用性
EMR 托管式扩缩
重新配置正在运行的集群
弹性
Amazon EMR 让您可以视需要预置容量,并自动或手动添加和移除容量。如果您有可变或不可预测的处理要求,这一点很有用。例如,若需要在夜晚进行批量处理,您可能在白天时需要 100 个实例,而在夜晚时需要 500 个。或者,您可能在短时间内需要大量容量。借助 Amazon EMR,您可以预置实例,自动进行扩展以匹配计算需求,并且在任务完成时关闭您的集群。
添加或移除容量时有两种主要选项可供您选择:
- 部署多个集群:若需要更大容量,您可以启动新的集群,并在不需要时将其终止。对于您可以拥有的集群数量没有限制。如果有多个用户或应用程序,您可能想要使用多个集群。例如,您可以在 Amazon S3 中存储您的输入数据,并为每个需要处理数据的应用程序启动一个集群。第一个集群可针对 CPU 进行优化,第二个则针对存储进行优化,以此类推。
- 调整正在运行的集群的大小:EMR 托管式扩缩旨在自动扩展或以手动方式重新调整正在运行的集群的大小。您可能想要横向扩展某集群,临时提高该集群的处理能力,或者在有空闲容量时横向缩减集群以节约成本。例如,部分客户会在需要进行批量处理时添加数百个实例到他们的集群,并在处理完成时移除多余的实例。当添加实例到您的集群时,EMR 现在可以在预置的容量变得可用时立即开始加以利用。如果要横向缩减,EMR 将主动选择空闲的节点,以降低对正在运行的任务所造成的影响。
Amazon EC2 Spot 集成
Amazon S3 集成
EMR File System(EMRFS)允许 EMR 集群使用 Amazon S3 作为 Hadoop 的对象存储。您可以在 Amazon S3 中存储您的数据,并使用多个 Amazon EMR 集群来处理相同的数据集。每个集群都可以针对特定工作负载进行优化,这样做比由单个集群处理具有不同要求的多个工作负载更加高效。例如,您可能有一个经过输入/输出优化的集群,以及另一个经过 CPU 优化的集群,每个都在 Amazon S3 当中处理相同的数据集。此外,通过在 Amazon S3 当中存储您的输入和输出数据,您可以在不需要它们时关闭这些集群。
EMRFS 支持使用 Amazon Key Management Service(KMS)和客户托管式密钥进行 S3 服务器端或 S3 客户端加密,并且提供可选的一致视图,该视图会检查其元数据中所跟踪对象的列表和写后读一致性。另外,Amazon EMR 集群可以同时使用 EMRFS 和 HDFS,因此您无需在集群上存储和 Amazon S3 之间进行选择。
Amazon Glue Data Catalog 集成
灵活的数据存储
Amazon S3
Amazon S3 是一种高度持久、可扩展、安全、快速而且经济实惠的存储服务。使用 EMR 文件系统(EMRFS),Amazon EMR 可以高效、安全地使用 Amazon S3 作为 Hadoop 的对象存储。Amazon EMR 对 Hadoop 进行了许多改进,使您能够处理存储在 Amazon S3 中的大量数据。此外,EMRFS 还可以启用一致视图以检查 Amazon S3 中对象的列表和写后读一致性。EMRFS 支持 S3 服务器端或 S3 客户端加密以处理加密的 Amazon S3 对象,您可以使用 Amazon Key Management Service(KMS)或自定义密钥供应商。
当您启动集群时,Amazon EMR 会将数据从 Amazon S3 流式传输到集群中的每个实例,然后开始处理。将您的数据存储在 Amazon S3 中并使用 Amazon EMR 加以处理的好处之一是,您可以使用多个集群来处理相同的数据。例如,您可能有一个针对内存进行过优化的 Hive 开发集群和一个针对 CPU 进行过优化的 Pig 生产集群,两者都使用相同的输入数据集。
Hadoop Distributed File System(HDFS)
HDFS 是 Hadoop 文件系统。Amazon EMR 的当前拓扑将其实例分为 3 个逻辑实例组:主实例组,运行 YARN 资源管理器和 HDFS 名称节点服务;核心组,运行 HDFS DataNode 进程守护程序和 YARN 节点管理器服务;以及运行 YARN 节点管理器服务的任务组。Amazon EMR 会在与核心组中的实例关联的存储上安装 HDFS。
每个 EC2 实例都附带被称作“实例存储”的固定数量存储,并且和实例连接在一起。您还可以通过向实例添加 Amazon EBS 卷来自定义实例上的存储。Amazon EMR 允许您添加通用型(SSD)、预置型(SSD)和磁卷类型。向 EMR 集群添加 EBS 卷在集群被关闭后不会保留数据。一旦您终止集群,EMR 将对卷进行自动清理。
您还可以启用对采用 Amazon EMR 安全配置的 HDFS 进行完整加密,或使用 Hadoop 密钥管理服务器手动创建 HDFS 加密区域。在指定 Amazon KMS 作为您的密钥提供程序时,您可以使用安全配置选项来加密 EBS 根设备和存储卷。
Amazon DynamoDB
其他亚马逊云科技数据存储
使用您最喜欢的开源应用程序
大数据工具
数据处理和机器学习
Apache Spark 是 Hadoop 生态系统中用于处理大型数据集的引擎。它使用内存中具有容错能力的弹性分布式数据集(RDD)有向无环图(DAG)来定义数据转换。Spark 还包括 Spark SQL、Spark Streaming、MLlib 和 GraphX。
Apache Flink 是一种流式传输数据流引擎,使您可以在高吞吐量数据源上运行实时流处理。它支持乱序事件的事件时间语义、“正好一次”语义、背压控制和针对编写流式传输及批量应用程序进行过优化的 API。
TensorFlow 是一种适用于机器智能和深度学习应用程序的开源符号数学库。TensorFlow 将多种机器学习和深度学习模型及算法捆绑在一起,可以针对许多不同的应用场景训练和运行深度神经网络。
记录层级 Amazon S3 数据管理
SQL
Apache Hive 是在 Hadoop 之上运行的开源数据仓库和分析软件包。Hive 由 Hive QL 操作,后者是一种基于 SQL 的语言,允许用户构建、汇总和查询数据。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 操作和其他库的脚本。
Presto 是针对低延迟、临时数据分析进行过优化的开源分布式 SQL 查询引擎。它支持 ANSI SQL 标准,包括复杂的查询、聚合、联接和窗口函数等。 Presto 可以处理来自多个数据来源的数据,包括 Hadoop Distributed File System(HDFS)和 Amazon S3。
与存储于 Apache HBase 的数据相比,Apache Phoenix 使用 ACID 事务功能实现低延迟 SQL。您可以创建二级索引以提高性能,并在相同的基础 HBase 表上创建不同的视图。
NoSQL
交互式分析
EMR Studio 是一个集成式开发环境(IDE),它使数据科学家和数据工程师可以开发、可视化并调试以 R、Python、Scala 和 PySpark 编写的数据工程和数据科学应用程序。EMR Studio 托管式 Jupyter Notebook 和工具(如 Spark UI 和 YARN 时间轴服务)来简化调试。
Hue 是 Hadoop 的开源用户界面,它对运行与开发 Hive 查询、管理 HDFS 中的文件、运行与开发 Pig 脚本,以及管理表进行简化。EMR 上的 Hue 还与 Amazon S3 集成,因此您可以直接对 S3 进行查询,并在 HDFS 和 Amazon S3 之间传输文件。
Jupyter Notebook 是一款开源 Web 应用程序,您可以用它来创建并共享包含实时代码、公式、可视化图表以及叙述性文字的文档。JupyterHub 使您能够托管单用户版 Jupyter Notebook 服务器的多个实例。当您使用 JupyterHub 创建 EMR 集群时,EMR 会在集群的主节点上创建一个 Docker 容器。JupyterHub、Jupyter 所需的所有组件以及 Sparkmagic 都在该容器内运行。
Apache Zeppelin 是可以为采用 Spark 的数据探索创建交互式与协作笔记本的开源 GUI。您可以使用 Scala、Python、SQL(采用 Spark SQL)或 HiveQL 来操作数据并对结果进行可视化。Zeppelin 笔记本可在多个用户之间共享,而可视化可被发布到外部控制面板。
安排和工作流
其他项目和工具
数据访问控制
默认情况下,Amazon EMR 应用程序进程在调用其他亚马逊云科技服务时使用 EC2 实例配置文件。对于多租户集群,Amazon EMR 提供了三种选项来管理用户对 Amazon S3 数据的访问。
通过与 Amazon Lake Formation 的集成,您可以在 Amazon Lake Formation 中定义和管理精细的授权策略,以访问 Amazon Glue Data Catalog 中的数据库、表和列。您可以对通过 Amazon EMR Notebooks 和 Apache Zeppelin 提交的作业执行授权策略以实现交互式 EMR Spark 工作负载,并将审计事件发送至 Amazon CloudTrail。通过启用此集成,您还可以从与安全断言标记语言(SAML)2.0 兼容的企业身份系统启用到 EMR Notebooks 或 Apache Zeppelin 的联合单点登录。
通过与 Apache Ranger 的原生集成,您可以设置新的或现有的 Apache Ranger 服务器,以便为用户通过 Hive Metastore 访问 Amazon S3 数据的数据库、表和列定义和管理精细的授权策略。Apache Ranger 是一种开源工具,用于在 Hadoop 平台上启用、监控和管理全面的数据安全性。
这种原生集成让您可以在 Apache Ranger 策略管理服务器上定义三种类型的授权策略。您可以为 Hive 设置表、列和行级授权,为 Spark 设置表和列级授权,以及为 Amazon S3 设置前缀和对象级授权。Amazon EMR 会在集群上安装和配置相应的 Apache Ranger 插件。这些 Ranger 插件与授权策略的策略管理服务器同步,强制实施数据访问控制,并将审计事件发送到 Amazon CloudWatch Logs。
其他功能
为您的集群选择正确的实例
您要根据应用程序的要求选择在您的集群当中预置哪种类型的 EC2 实例(标准、内存增强型、CPU 增强型、输入/输出增强型,等等)。您拥有每个实例的根访问权限,并且可以自定义集群以满足您的需求。
调试您的应用程序
当您在集群上启用调试时,Amazon EMR 会将日志文件存档到 Amazon S3,然后为这些文件编列索引。然后,您可以使用控制台中的图形界面以直观的方式浏览日志和查看任务历史记录。
监控您的集群
您可以使用 Amazon CloudWatch 来监控自定义 Amazon EMR 指标,例如,正在运行 map 和 reduce 任务的平均数量。您还可以为这些指标设置警报。
对事件做出响应
您可以使用 Amazon CloudWatch Events 中的 Amazon EMR 事件类型,以对您的 Amazon EMR 集群中的状态更改做出响应。使用可设置的简单规则,匹配事件并将其路由到 Amazon SNS 主题、Amazon Lambda 函数、Amazon SQS 队列等。
深度学习
使用热门的深度学习框架(如 Apache MXNet)来定义、训练和部署深度神经网络。您可以在具有 GPU 实例的 Amazon EMR 集群上使用这些框架。
控制对集群的网络访问
您可以在 Amazon Virtual Private Cloud(VPC)当中启动您的集群,而 VPC 是亚马逊云科技云的逻辑隔离部分。您可以掌控您的虚拟联网环境,包括选择您自己的 IP 地址范围、创建子网以及配置路由表和网关。
管理用户、权限和加密
您可以使用 Amazon Identity and Access Management(IAM)工具(例如 IAM 用户和角色)来控制访问和权限。例如,您可以向特定用户授予对集群的读取权限,但不允许写入。此外,您可以使用 Amazon EMR 安全配置设置多种静态加密和传输中加密选项,包括对 Amazon S3 加密的支持和 Kerberos 身份验证。
安装其他软件
您可以使用引导操作或运行 Amazon Linux 的自定义亚马逊机器映像(AMI)在您的集群上安装其他软件。引导操作是 Amazon EMR 启动集群时在集群节点上运行的脚本。它们在 Hadoop 启动之前以及节点开始处理数据之前运行。您还可以在自定义 Amazon Linux AMI 上预加载和使用软件。
复制数据
您可以使用 Amazon EMR 的 S3DistCp 将数据从 Amazon S3 移动到 HDFS,从 HDFS 移动到 Amazon S3,以及在 Amazon S3 存储桶之间移动;S3DistCp 是开源工具 Distcp 的扩展,它会使用 MapReduce 移动大量数据。
Custom JAR
编写 Java 程序、针对您想要使用的 Hadoop 版本进行编译,以及上载到 Amazon S3。然后,您可以使用 Hadoop JobClient 界面将 Hadoop 作业提交到集群。
Amazon EMR Studio
EMR Studio 是一个集成式开发环境(IDE),它使数据科学家和数据工程师可以开发、可视化并调试以 R、Python、Scala 和 PySpark 编写的数据工程和数据科学应用程序。
EMR Studio 托管式 Jupyter Notebook 和工具(如 Spark UI 和 YARN 时间轴服务)来简化调试。EMR Studio 使用 Amazon 单点登录,使您可以直接使用公司凭证登录,无需登录 Amazon 控制台。数据科学家和分析师可以安装自定义内核和库,使用 GitHub 和 BitBucket 等代码存储库与同行协作,或者使用编排服务(如 Apache Airflow 或 Amazon Managed Workflows for Apache Airflow)将参数化笔记本作为计划工作流程的一部分来执行。
EMR Studio 内核和应用程序在 EMR 集群上运行,因此您可以使用适用于 Apache Spark 的性能优化型 Amazon EMR 运行时获得分布式数据处理的好处。管理员可以设置 EMR Studio,以便分析师可以在现有 EMR 集群上运行其应用程序,或者使用针对 EMR 的预定义 Amazon Cloud Formation 模板创建新集群。
优势:
简单易用
EMR Studio 旨在用于简单地与 EMR 集群上的应用程序进行交互。您可以使用 Amazon 单点登录通过公司凭着访问 EMR Studio,无需登录 Amazon 控制台或集群。您可以使用笔记本以交互方式浏览、处理和可视化数据,构建和调度管道,以及调试应用程序,而无需登录 EMR 集群。
托管式 Jupyter Notebook
借助 EMR Studio,您可以通过 R、Python、Scala 和 PySpark 语言使用托管式 Jupyter Notebook 开始开发分析和数据科学应用程序。您可以将笔记本连接到现有的 EMR 集群,或者使用预先配置的模板自动预置集群来运行作业。您可以利用存储库与他人协作,并直接从笔记本中安装自定义的 Python 库或内核。
易于构建的应用程序
EMR Studio 使您可以从原型制作过渡到生产。您可以从代码存储库触发管道,使用编排工具(如 Apache Airflow 或 Amazon Managed Workflows for Apache Airflow)将笔记本作为管道运行,或者只需通过单击一下将笔记本附加到更大的集群。
简化调试
使用 EMR Studio,您可以调试作业和访问日志,而无需登录活动集群和已终止的集群。您可以直接从 EMR Studio 使用原生应用程序界面,例如 Spark UI 和 YARN 时间轴服务。此外,EMR Studio 还允许您使用诸如集群状态、创建时间和集群 ID 之类的筛选条件找到要调试的集群或作业。
应用场景:
构建数据科学和工程应用程序
使用 EMR Studio,您可以直接登录到托管式笔记本,而无需登录亚马逊云科技控制台,只需几秒钟即可启动笔记本,还能通过示例笔记本快速上手,并进行数据探索。您可以通过 GitHub 和其他存储库共享笔记本来与同伴进行协作。此外,您还可以通过从笔记本加载自定义内核和 Python 库来自定义环境。
部署生产管道
在 EMR Studio 中,您可以使用代码存储库来触发管道。此外,您还可以对笔记本进行参数化和链接,以构建管道。您可以使用工作流程编排服务(例如 Apache Airflow 或 Amazon Managed Workflows for Apache Airflow)将笔记本集成到计划的工作流程中。EMR Studio 还允许您将笔记本重新连接到更大的集群以运行作业。
简化调试应用程序
在 EMR Studio 中,您可以从笔记本界面调试笔记本应用程序。此外,您还可以通过首先使用集群状态等筛选器缩小集群范围来调试管道,并通过尽可能少的点击次数来打开 Spark UI、Tez UI 和 Yarn Timeline Service 等原生调试 UI,以诊断活动和已终止集群上的任务。
Amazon EMR Notebooks
Amazon EMR Notebooks 是基于 Jupyter 和 Jupyter-lab 笔记本的托管式环境,让用户可以对数据进行交互式分析与可视化,与同事协作,并使用 EMR 集群构建应用程序。EMR Notebooks 专为 Apache Spark 而量身设计。它支持 Spark Magic 内核,允许您在 EMR 集群上使用 PySpark、Spark SQL、Spark R 和 Scala 等语言远程运行查询和代码。
使用 EMR Notebooks 无需管理软件或实例。您可以将笔记本附加到现有集群,也可以直接从控制台预置新集群。您可以将多个笔记本附加到单个集群,分离笔记本并将它们重新附加到新集群。
EMR Notebooks 允许您:
Amazon EMR Serverless
Amazon EKS 上的 Amazon EMR
借助 Amazon EKS 上的 Amazon EMR,您可以在 Amazon Elastic Kubernetes Service(EKS)上按需提交 Apache Spark 作业,而无需预置集群。借助 EKS 上的 EMR,您可以整合分析工作负载与相同 Amazon EKS 集群上基于 Kubernetes 的其他应用程序,以提高资源利用率并简化基础设施管理。
借助 Amazon EKS 上的 Amazon EMR,您可以在所有应用程序中共享计算和内存资源,并使用一组 Kubernetes 工具集中监控和管理您的基础设施。此外,您还可以使用单个 EKS 集群运行需要不同 Apache Spark 版本和配置的应用程序,并充分利用自动预置、扩展、更快的运行时以及 EMR 提供的开发和调试工具。
优势:
简化管理
EKS 上的 Apache Spark 的 EMR 优势包括 Apache Spark 2.4 和 3.0 的托管式版本、自动预置、扩展、性能优化运行时以及诸如用于编写作业的 EMR Studio 以及用于调试的 Apache Spark UI 之类的工具。
优化性能
通过在 EKS 上运行分析应用程序,您可以在共享 Kubernetes 集群上重复使用现有 EC2 实例,并避免创建专用于分析的新 EC2 实例集群所需的启动时间。
应用场景:
集中资源管理
借助 EKS 上的 EMR,您可以对 Apache Spark 自动执行预置、管理和扩展,并使用一组工具集中管理和监控您的基础设施。
工作负载的主机托管
在与您的其他应用程序工作负载相同的 EKS 集群上运行需要不同框架、版本和配置的多个 EMR 工作负载。
快速采用新的 EMR 版本
EKS 上的 EMR 可以为开发、排查和优化分析提供托管体验。您可以部署配置并启动作业,以便在同一个 EKS 集群上测试新的 EMR 版本,而无需分配专用资源。