使用 EC2 Spot 实例优化 Amazon EMR 集群成本和规模



- 可通过免费套餐试用


概述
Amazon EMR 提供托管式 Hadoop 框架,可以轻松、快速、经济高效地处理可动态扩展的 Amazon EC2 实例中的海量数据。另外,还可以在 EMR 中运行 Apache Spark、HBase、Presto 和 Flink 等其他主流分布式框架。Amazon EMR 还支持与 Amazon S3 和 Amazon DynamoDB 等其他 AWS 数据存储中的数据交互。EMR Notebooks 基于流行的 Jupyter Notebook,为即席查询和探索性分析提供开发和协作环境。此外,EMR 能为广泛的大数据使用场景提供安全可靠的数据处理能力,包括日志分析、Web 索引、数据 ETL、机器学习、财务分析、科学模拟和生物信息数据处理。
Amazon EC2 Spot 实例提供可在 AWS 云中使用的备用计算容量,而且与按需型实例的价格相比,更经济实惠。当 EC2 需要收回容量时,EC2 可能会在两分钟的通知时间内中断 Spot 实例。您可以将 Spot 实例用于各类具有容错性、灵活性的应用程序。例如,分析、容器化工作负载、高性能计算 (HPC)、无状态 Web 服务器、渲染、CI/CD 以及其他测试和开发工作负载。
步骤 1:使用高级设置创建集群
1.1 打开浏览器并导航到 Amazon EMR 控制台,或者您可以搜索 EMR,也可以在 AWS 管理控制台首页的 Analytics(分析)区域下找到 Amazon EMR。如果您已有一个 AWS 账户,请直接登录控制台。否则,请创建一个新 AWS 账户以开始学习。
1.2 在页面右上角,选择您要启动 Amazon EMR 集群的区域。

1.3 在 Amazon EMR 控制台页面中,点击 Create cluster(创建集群)。

1.4 在 Create cluster(创建集群)窗口中,点击 Go to advanced options(前往高级选项)。

步骤 2:配置集群软件和步骤
2.1 在 Software Configuration(软件配置)区域,选择集群所需的软件,或使用默认选项快速开始。

2.2 (可选)输入连接 AWS Glue Data Catalog 所需的配置信息以及配置集群软件所需的配置文件。
取消勾选 Use multiple master nodes to improve cluster availability(使用多个主节点提高集群可用性)选项,因为该选项与我们将在后续步骤中配置的实例集不兼容。

2.3 (可选)配置您希望集群预配完成后执行的所有步骤 (step)。您也可以跳过此步骤,更快完成启动集群实验。
例如,您可以添加一个 Amazon EMR 步骤,用于向安装在 EMR 集群上的 Spark 框架提交工作。有关如何添加步骤,请参阅《Amazon EMR 管理指南》中的步骤。您可以在控制台上或使用 CLI 调用一个 Spark 应用程序步骤,让这个步骤代您运行一个 spark-submit 脚本。使用 API 时,可以通过 command-runner.jar 步骤来调用 spark-submit。

2.4 检查并确认软件配置后,就可以执行下一步:配置集群硬件。
点击 Next(下一步)以继续。

步骤 3:配置实例集
3.1 选择 Instance group configuration(实例组配置)下的 Instance fleets(实例集)。
我们可以通过实例集实现实例多样化。这是使用 EC2 Spot 实例的一个好方法。实例多样化,即可以使用多种实例类型,确保 Amazon EMR 可以为集群分配所需的容量,同时又能自动处理节点中断问题。

3.2 选择要部署 Amazon EMR 集群的 VPC 以及一个或多个子网。
我们建议选择多个可用区。您的集群将部署在单个可用区中,但若选择了多个可用区,Amazon EMR 会检查所有选定的可用区中的可用资源,在具有最多 EC2 Spot 容量的可用区中部署并运行您的集群。

3.3 按需配置 Root device EBS volume size(根设备 EBS 卷大小),或保留默认设置。

3.4 向下滚动至 Task instance fleet(任务实例集)部分,选择 Add/remove instance types to fleet(在实例集中添加/删除实例类型)。
您可以为每个实例集指定多种实例类型。最多可以指定五种。这样,Amazon EMR 就可以从多个可用 EC2 Spot 容量池中预配容量。
如果您要启动工作负载的持续时间不是非常短暂,我们建议主节点和核心节点使用按需型实例。
点击此处可查看典型使用场景的更多相关信息和将 EC2 Spot 实例与 Amazon EMR 配合使用的相关建议。

3.5 选择要在任务节点实例集中使用的实例类型。最多可以选择五种。强烈建议您选择多个实例系列中 vCPU 和内存比相近的实例类型。
您可以通过 Spot 实例顾问详细了解使用 EMR 兼容实例减少的平均成本以及中断率。

3.6 配置实例集的按需型实例单位数量和 Spot 实例单位数量,也可以选择配置每种实例类型的单位数量。
按需型实例单位数量和 Spot 实例单位数量越大,则集群预配的容量越大。此次实验中,为了快速开始并降低本实验成本,我们建议仅部署少许 Spot 实例(例如 8 个单位),不部署按需型实例。
默认情况下,每种实例类型的单位数量与该实例类型的 vCore 数量一致。您可以按需进行此配置,赋予某些实例类型更高权重。当 Amazon EMR 满足实例集的容量需求时,则会根据权重配置。
您还可以指定按需型实例或 EC2 Spot 实例的单位数量。这样,可以组合使用多种实例类型和购买选项,从而实现实例多样化,以满足集群所需的容量。

3.7 (可选)为集群配置 defined duration(定义时长)和 provisioning timeout(预配超时)行为。
通过预配超时设置,可以定义 Amazon EMR 无法为您的实例集预配容量时集群的行为。默认行为是 Terminate(终止),不过,也可以选择在超时后尝试为集群预配按需型实例,而非 Spot 实例。
点击此处了解这些选项的更多详情。
3.8 检查并确认硬件配置后,就可以执行下一步:配置基本集群设置。
点击 Next(下一步)。

步骤 4:配置基本集群设置
4.1 自定义集群名称或使用默认名称 My cluster。
(可选)启动 Logging(日志记录)、Debugging(调试)和 Termination protection(终止保护)功能。
若要了解有关 Logging(日志记录)和 Debugging(调试)的更多信息,请点击此处。
若要了解有关 Termination protection(终止保护)的更多信息,请点击此处。

4.2 (可选)为集群配置相关标签。标签有助于确定集群所属团队或集群所属环境。
若要了解有关添加标签的更多信息,请点击此处。

4.3 (可选)配置所需的其他选项,例如 EMRFS consistent view(EMRFS 一致视图)、Custom AMI ID(自定义 AMI ID)或 Bootstrap Actions(引导操作)。

4.4 检查并确认集群基本设置后,就可以执行下一步:配置集群安全设置。
点击 Next(下一步)。

步骤 5:安全设置
5.1 (可选)配置集群所需的安全选项,包括密钥对、实例角色和配置文件、安全组以及加密。

5.2 检查并确认安全配置后,就可以创建集群了。
点击 Create cluster(创建集群),启动运行在 EC2 Spot 实例上的新 Amazon EMR 集群。

恭喜您!
您现在已经启动了一个运行在 EC2 Spot 实例上的 Amazon EMR 集群。现在,您可以将 Spot 实例与 EMR 集群集成,实现大数据工作负载成本和性能优化。
推荐的后续步骤
在 EMR 中运行 Spark 应用程序
您现已学会如何将 EC2 Spot 实例与 Amazon EMR 配合使用。您现在可以将实例集和学到的其他方法用于处理您的工作负载。如果您想继续学习,我们建议您点击此处根据您自己的进度学习相关研讨文章内容。
阅读文档
阅读 Amazon EMR 管理指南,了解 Amazon EMR 的功能。
探索 Amazon EC2 Spot 实例
如果您想了解更多关于 Amazon EC2 Spot 实例的信息,请访问 Amazon EC2 Spot 实例产品页面,浏览文档、视频、博客等。