Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 Amazon EMR 的好处

使用 Amazon EMR 有诸多优势。本节概述这些优势并提供指向其他信息的链接以帮助您加深了解。

节省成本

Amazon EMR 的定价取决于您部署的 EC2 实例的实例类型和数量及您启动集群的区域。按需定价提供很低的费率,但您可以通过购买预留实例或 Spot 实例来进一步降低成本。Spot 实例可以显著节省成本,在某些情况下,低至按需定价的十分之一。

注意

如果您为 EMR 集群使用 Amazon S3、Amazon Kinesis 或 DynamoDB,这些服务会产生附加费用 - 与您的 Amazon EMR 使用费分开计费。此外,如果您在集群上安装 Splunk Hunk 或使用 MapR M5、M7 分发版,也会产生 Amazon EMR 使用费以外的费用。

有关定价选项和定价详情的更多信息,请参阅 Amazon EMR 定价

AWS 集成

Amazon EMR 可与其他 AWS 服务集成,为您的集群提供联网、存储、安全等功能。下面的列表提供了几个这种集成的示例:

  • Amazon EC2 适用于包含集群中的节点的实例

  • Amazon Virtual Private Cloud (Amazon VPC) 可配置用于启动您的实例的虚拟网络

  • Amazon S3 可存储输入和输出数据

  • Amazon CloudWatch 可监控集群性能和配置警报

  • AWS Identity and Access Management (IAM) 可配置权限

  • AWS CloudTrail 可审计服务请求

  • AWS Data Pipeline 可调度和启动您的集群

部署

您的 EMR 集群由 EC2 实例组成,这些实例执行您提交给集群的工作。当您启动集群时,Amazon EMR 使用您选择的应用程序 (如 Apache Hadoop 或 Spark) 配置实例。为集群选择最适合处理需求的实例大小和类型:批处理、低延迟查询、流数据或大数据存储。有关可用于 Amazon EMR 的实例类型的更多信息,请参阅 配置集群硬件和联网

Amazon EMR 提供了多种在集群上配置软件的方式。例如,您可以安装包含选定应用程序集 (可以包含 Hadoop 等多功能框架及 Hive、Pig、Spark 等应用程序) 的 Amazon EMR 版本。您也可以安装多个 MapR 分发版之一。Amazon EMR 使用 Amazon Linux,因此,您还可以在集群上借助 yum 包管理器或从源代码手动安装软件。有关更多信息,请参阅 配置集群软件

可扩展性和灵活性

Amazon EMR 可根据您的计算需求变化灵活扩展或收缩集群。您可以调整集群,在工作负载高峰时增加实例,在工作负载高峰过后移除实例,从而控制成本。有关更多信息,请参阅 手动调整正在运行的集群的大小

Amazon EMR 还提供了运行多个实例组的选项,因此,您可以在一个组中使用按需实例来保障处理能力,同时在另一个组中使用 Spot 实例来加快作业完成速度并降低成本。您还可以混合多种实例类型以充分利用某种 Spot 实例类型的定价优势。有关更多信息,请参阅 什么时候应该使用 Spot 实例?

此外,Amazon EMR 还可以为您的输入、输出和中间数据灵活使用多种文件系统。例如,对于不需要在集群生命周期之外存储的处理数据,您可以选择在集群的主节点和核心节点上运行的 Hadoop 分布式文件系统 (HDFS)。您可以选择 EMR 文件系统 (EMRFS),将 Amazon S3 用作在集群上运行的应用程序的数据层,以便分离计算和存储,并在集群生命周期之外保留数据。EMRFS 具备更多优势,可供您独立扩展或收缩计算和存储需求。您可以通过调整集群来扩展计算需求,可以通过使用 Amazon S3 来扩展存储需求。有关更多信息,请参阅 使用存储和文件系统

可靠性

Amazon EMR 能够监控集群中的节点并自动终止和替换出现故障的实例。

Amazon EMR 提供了控制集群终止方式 (自动或手动) 的配置选项。如果您将集群配置为自动终止,则集群会在所有步骤完成后终止。这称作暂时性集群。不过,您可以将集群配置为在处理完成后继续运行,这样,当您不再需要它时,可以选择手动终止集群。或者,您可以创建一个集群,与所安装的应用程序直接交互,然后在不再需要时手动将其终止。这些示例中的集群称作长时间运行的集群

此外,您还可以配置终止保护,以防集群中的核心实例因处理期间出现错误或问题而终止。如果启用终止保护,您可以在终止前从实例恢复数据。这些选项的默认设置根据您启动集群时是采用控制台、CLI 还是 API 方式而有所不同。有关更多信息,请参阅 控制集群终止

安全性

Amazon EMR 利用其他 AWS 服务 (如 IAM 和 Amazon VPC) 和功能 (如 Amazon EC2 密钥对) 来帮助您保护集群和数据。

IAM

Amazon EMR 与 IAM 集成以管理权限。您可以使用 IAM 策略 (附加到 IAM 用户或 IAM 组) 定义权限。您在策略中定义的权限确定了这些用户或组成员能够执行的操作及其能够访问的资源。有关更多信息,请参阅 使用 IAM 策略来允许和拒绝用户权限基于用户的 IAM 策略中的 Amazon EMR 操作

此外,Amazon EMR 为 Amazon EMR 服务本身使用 IAM 角色,为实例使用 EC2 实例配置文件。这些角色授予服务和实例代表您访问其他 AWS 服务的权限。Amazon EMR 服务及 EC2 实例配置文件都有默认角色。默认角色使用 AWS 托管策略,它在您首次从控制台启动 EMR 集群并选择默认权限时自动创建。您还可以从 AWS CLI 创建默认的 IAM 角色。如果您想要代替 AWS 管理权限,则可以为此服务及实例配置文件选择自定义角色。有关更多信息,请参阅 为 IAM 角色配置对 AWS 服务的 Amazon EMR 权限

安全组

Amazon EMR 使用安全组控制 EC2 实例的入站和出站流量。当您启动集群时,Amazon EMR 为您的主实例使用一个安全组,为核心/任务实例使用一个共享安全组。Amazon EMR 配置安全组规则以确保集群中实例间通信的安全。对于更高级的规则,您可以选择配置额外的安全组并将它们分配给主实例及核心/任务实例。有关更多信息,请参阅 使用安全组控制网络流量

加密

Amazon EMR 通过 EMRFS 支持可选的 Amazon S3 服务器端和客户端加密,以帮助保护您存储在 Amazon S3 中的数据的安全。采用服务器端加密时,Amazon S3 会在您上传数据后对数据加密。

对于客户端加密,加密和解密过程在您的 EMR 集群上的 EMRFS 客户端中进行。您通过使用 AWS Key Management Service (AWS KMS) 或您自己的密钥管理系统来管理客户端加密的主密钥。

有关更多信息,请参阅 Amazon EMR 版本指南 中的使用 EMRFS 对 Amazon S3 数据进行加密

Amazon VPC

Amazon EMR 支持在 Amazon VPC 中的 Virtual Private Cloud (VPC) 中启动集群。VPC 是 AWS 中的一种隔离的虚拟网络,可提供控制高级网络配置和访问方面的功能。有关更多信息,请参阅 计划和配置联网

AWS CloudTrail

Amazon EMR 与 CloudTrail 集成可记录有关您的 AWS 账户或代表您的 AWS 账户发起的请求的信息。借助这些信息,您可以跟踪谁在何时访问了您的集群,以及他们发起请求的 IP 地址。有关更多信息,请参阅 在 AWS CloudTrail 中记录 Amazon EMR API 调用

Amazon EC2 密钥对

您可以通过在远程计算机与主节点之间构建安全连接来监控集群并与之交互。您可以使用安全外壳 (SSH) 网络协议进行此连接或使用 Kerberos 进行身份验证。如果您使用 SSH,则 Amazon EC2 密钥对是必需的。有关更多信息,请参阅 对 SSH 凭证使用 Amazon EC2 密钥对

监控

您可以使用 Amazon EMR 管理界面和日志文件来诊断集群问题,如故障或错误。Amazon EMR 可以在 Amazon S3 中存档日志文件,因此,您可以存储日志并诊断问题 (甚至在集群终止后)。Amazon EMR 还在 Amazon EMR 控制台中提供了可选的调试工具,让您能够基于步骤、作业和任务浏览日志文件。有关更多信息,请参阅 配置集群日志记录和调试

Amazon EMR 与 CloudWatch 集成以跟踪集群及集群中作业的性能指标。您可以基于多种指标 (如集群是否处于空闲状态、已使用的存储的百分比) 配置警报。有关更多信息,请参阅 使用 CloudWatch 监控指标

管理界面

有多种可以和 Amazon EMR 交互的方式:

  • 控制台 - 图形用户界面,可用于启动和管理集群。借助这个界面,您可以填写各种 Web 窗体,指定待启动集群的详细信息、查看现有集群的详细信息、调试和终止集群。使用控制台是开始使用 Amazon EMR 的最简单的方式;您无需具备编程知识。您可以在线使用控制台:https://console.amazonaws.cn//elasticmapreduce/home

  • AWS Command Line Interface (AWS CLI) - 可在本地计算机上运行的客户端应用程序,用于连接 Amazon EMR 以及创建和管理集群。AWS CLI 包含特定于 Amazon EMR 的功能丰富的命令集。您可以使用它来编写脚本,以实现启动和管理集群的自动化。如果您更喜欢在命令行中工作,则最好的选择是使用 AWS CLI。有关更多信息,请参阅 AWS CLI Command Reference 中的 Amazon EMR

  • 开发工具包 - 开发工具包提供了调用 Amazon EMR 以创建和管理集群的函数。借助它们,您可以编写应用程序,用于自动处理集群的创建和管理流程。使用开发工具包是扩展或者自定义 Amazon EMR 的功能的最佳选择。Amazon EMR 目前在以下软件开发工具包中可用:Go、Java、.NET (C# 和 VB.NET)、Node.js、PHP、Python 和 Ruby。有关这些软件开发工具包的更多信息,请参阅适用于 AWS 的工具Amazon EMR 示例代码和库

  • Web 服务 API - 一种低级接口,可以用来直接使用 JSON 调用 Web 服务。使用 API 是创建调用 Amazon EMR 的自定义开发工具包的最佳选择。有关更多信息,请参阅 Amazon EMR API Reference