使用 EC2 Spot 实例优化 Amazon EMR 集群成本和规模
![Olawale Olaleye Olawale Olaleye](https://d1.awsstatic.com/xuefezha-jennie/%e7%ba%a7%e5%88%ab_level%201.01c35fea97656a6beac50b0c8ae81e8afc1eedef.png)
![](https://d1.awsstatic.com/xuefezha-jennie/Group%20281.67a8494bd80a4bd979e37efcb490ada486dd72ae.png)
![](https://d1.awsstatic.com/xuefezha-jennie/cost-icon.84b1b7bbeb5d58956ebf11a05ed8152992f762ba.png)
- 可通过免费套餐试用
![](https://d1.awsstatic.com/xuefezha-jennie/Group%20286.f8adeba47a39b3d6d21f8cbb0b6a751582e55927.png)
![](https://d1.awsstatic.com/xuefezha-jennie/Group%20287.a27381901d308706720071b52d42054d154eab4c.png)
概述
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 集群的区域。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%201%20-%20Sub-Step%20B.35a7e18432cdcd2e9512504db8067a8cf31c9a6d.png)
1.3 在 Amazon EMR 控制台页面中,点击 Create cluster(创建集群)。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%201%20-%20Sub-Step%20C.2dd691858b2b6ea63a39ac40982b3b8448c73244.png)
1.4 在 Create cluster(创建集群)窗口中,点击 Go to advanced options(前往高级选项)。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%201%20-%20Sub-Step%20D.3834cdb0305298bc7cb5291b606cc0ec46a6861f.png)
步骤 2:配置集群软件和步骤
2.1 在 Software Configuration(软件配置)区域,选择集群所需的软件,或使用默认选项快速开始。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%202%20-%20Sub-Step%20A.5db6bacde3e9986fe6cd871f2484f21bcc599f28.png)
2.2 (可选)输入连接 AWS Glue Data Catalog 所需的配置信息以及配置集群软件所需的配置文件。
取消勾选 Use multiple master nodes to improve cluster availability(使用多个主节点提高集群可用性)选项,因为该选项与我们将在后续步骤中配置的实例集不兼容。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%202%20-%20Sub-Step%20B.27e04e329e75d72e70f7b79741c43abb719a120a.png)
2.3 (可选)配置您希望集群预配完成后执行的所有步骤 (step)。您也可以跳过此步骤,更快完成启动集群实验。
例如,您可以添加一个 Amazon EMR 步骤,用于向安装在 EMR 集群上的 Spark 框架提交工作。有关如何添加步骤,请参阅《Amazon EMR 管理指南》中的步骤。您可以在控制台上或使用 CLI 调用一个 Spark 应用程序步骤,让这个步骤代您运行一个 spark-submit 脚本。使用 API 时,可以通过 command-runner.jar 步骤来调用 spark-submit。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%202%20-%20Sub-Step%20C.24a107f4cc29544d2e5618915abe94e5ea68d609.png)
2.4 检查并确认软件配置后,就可以执行下一步:配置集群硬件。
点击 Next(下一步)以继续。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%202%20-%20Sub-Step%20D.69dbaddd49f36b4f063480bcdaaf3505fd2309ff.png)
步骤 3:配置实例集
3.1 选择 Instance group configuration(实例组配置)下的 Instance fleets(实例集)。
我们可以通过实例集实现实例多样化。这是使用 EC2 Spot 实例的一个好方法。实例多样化,即可以使用多种实例类型,确保 Amazon EMR 可以为集群分配所需的容量,同时又能自动处理节点中断问题。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%203%20-%20Sub-Step%20A.1383eb6868d1577500e3650baaed5f344295aa1b.png)
3.2 选择要部署 Amazon EMR 集群的 VPC 以及一个或多个子网。
我们建议选择多个可用区。您的集群将部署在单个可用区中,但若选择了多个可用区,Amazon EMR 会检查所有选定的可用区中的可用资源,在具有最多 EC2 Spot 容量的可用区中部署并运行您的集群。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%203%20-%20Sub-Step%20B.fcb5e87eaed830b8ff5ab4048ef01890ed55e437.png)
3.3 按需配置 Root device EBS volume size(根设备 EBS 卷大小),或保留默认设置。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%203%20-%20Sub-Step%20C.d436666d3e300e192c18ae81e38058e7b3b81d64.png)
3.4 向下滚动至 Task instance fleet(任务实例集)部分,选择 Add/remove instance types to fleet(在实例集中添加/删除实例类型)。
您可以为每个实例集指定多种实例类型。最多可以指定五种。这样,Amazon EMR 就可以从多个可用 EC2 Spot 容量池中预配容量。
如果您要启动工作负载的持续时间不是非常短暂,我们建议主节点和核心节点使用按需型实例。
点击此处可查看典型使用场景的更多相关信息和将 EC2 Spot 实例与 Amazon EMR 配合使用的相关建议。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%203%20-%20Sub-Step%20D.5d73d79df68f310eedf316ec38927fdbaf616ba4.png)
3.5 选择要在任务节点实例集中使用的实例类型。最多可以选择五种。强烈建议您选择多个实例系列中 vCPU 和内存比相近的实例类型。
您可以通过 Spot 实例顾问详细了解使用 EMR 兼容实例减少的平均成本以及中断率。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%203%20-%20Sub-Step%20E.309b4b438cceaa6ac2bc703e879e3a867be6f049.png)
3.6 配置实例集的按需型实例单位数量和 Spot 实例单位数量,也可以选择配置每种实例类型的单位数量。
按需型实例单位数量和 Spot 实例单位数量越大,则集群预配的容量越大。此次实验中,为了快速开始并降低本实验成本,我们建议仅部署少许 Spot 实例(例如 8 个单位),不部署按需型实例。
默认情况下,每种实例类型的单位数量与该实例类型的 vCore 数量一致。您可以按需进行此配置,赋予某些实例类型更高权重。当 Amazon EMR 满足实例集的容量需求时,则会根据权重配置。
您还可以指定按需型实例或 EC2 Spot 实例的单位数量。这样,可以组合使用多种实例类型和购买选项,从而实现实例多样化,以满足集群所需的容量。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%203%20-%20Sub-Step%20F.bc799441a3f34db30c1a486585d664ef403f74cf.png)
3.7 (可选)为集群配置 defined duration(定义时长)和 provisioning timeout(预配超时)行为。
通过预配超时设置,可以定义 Amazon EMR 无法为您的实例集预配容量时集群的行为。默认行为是 Terminate(终止),不过,也可以选择在超时后尝试为集群预配按需型实例,而非 Spot 实例。
点击此处了解这些选项的更多详情。
3.8 检查并确认硬件配置后,就可以执行下一步:配置基本集群设置。
点击 Next(下一步)。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%203%20-%20Sub-Step%20H.d00b7de6f3cff25a38385ffc9b2f0fdf85340fd5.png)
步骤 4:配置基本集群设置
4.1 自定义集群名称或使用默认名称 My cluster。
(可选)启动 Logging(日志记录)、Debugging(调试)和 Termination protection(终止保护)功能。
若要了解有关 Logging(日志记录)和 Debugging(调试)的更多信息,请点击此处。
若要了解有关 Termination protection(终止保护)的更多信息,请点击此处。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%204%20-%20Sub-Step%20A.096c8d5c0d837f664c977491080876947611582c.png)
4.2 (可选)为集群配置相关标签。标签有助于确定集群所属团队或集群所属环境。
若要了解有关添加标签的更多信息,请点击此处。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%204%20-%20Sub-Step%20B.7a7794abae9df91b20f727f896984330d680a7f4.png)
4.3 (可选)配置所需的其他选项,例如 EMRFS consistent view(EMRFS 一致视图)、Custom AMI ID(自定义 AMI ID)或 Bootstrap Actions(引导操作)。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%204%20-%20Sub-Step%20C.1fee549a4555b49da54b4ed78f337c47d73c93d9.png)
4.4 检查并确认集群基本设置后,就可以执行下一步:配置集群安全设置。
点击 Next(下一步)。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%204%20-%20Sub-Step%20D.7a3e619b631b6546d6ffc8e4dc44ac90cad11eb2.png)
步骤 5:安全设置
5.1 (可选)配置集群所需的安全选项,包括密钥对、实例角色和配置文件、安全组以及加密。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%205%20-%20Sub-Step%20A.c3facc697e2a2e4803badfdea07afc30fd90f291.png)
5.2 检查并确认安全配置后,就可以创建集群了。
点击 Create cluster(创建集群),启动运行在 EC2 Spot 实例上的新 Amazon EMR 集群。
![](https://d1.awsstatic.com/screenshots/10%20min%20tutorial_SpotEMR/Step%205%20-%20Sub-Step%20B.3cbdab08914ba90463160ab273898a0286a88bfb.png)
恭喜您!
您现在已经启动了一个运行在 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 实例产品页面,浏览文档、视频、博客等。