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

集群缩减

利用 Amazon EMR 发布版 5.1.0 及更高版本,对于缩减行为,有 2 种选择:在用于 Amazon EC2 计费的实例小时边界终止,或者在任务完成时终止。从 Amazon EMR 发布版 5.10.0 开始,在实例小时边界处终止的设置已弃用,因为在 Amazon EC2 中引入了按秒计费。我们不建议在提供了此选项的版本中指定在实例小时边界终止。

警告

如果您使用 AWS CLI 发出 modify-instance-groupsEC2InstanceIdsToTerminate,则这些实例将立即终止,而不考虑这些设置,且无论实例上运行的应用程序的状态如何。通过这种方式终止实例将面临数据丢失以及出现不可预测的集群行为的风险。

当指定在任务完成时终止时,Amazon EMR 会先将任务列入黑名单并从节点消耗任务,然后再终止 Amazon EC2 实例。对于指定的任一行为,Amazon EMR 都不会终止核心实例组中的 Amazon EC2 实例 (如果这会导致 HDFS 受损)。

在任务完成时终止

Amazon EMR 让您能够在不影响工作负载的情况下缩减集群。在向下调整操作期间,Amazon EMR 能够自然地停止核心和任务节点上的 YARN、HDFS 及其他守护进程,而不会丢失数据或中断作业。Amazon EMR 仅缩减已完成所分配的工作并处于空闲状态的实例组。对于 YARN NodeManager 停止,您可以手动调整节点等待停止的时间。

使用 yarn-site 配置分类中的属性来设置此时间。使用 Amazon EMR 发布版 5.12.0 及更高版本,请指定 yarn.resourcemanager.nodemanager-graceful-decommission-timeout-secs 属性。使用早期的 Amazon EMR 发布版,请指定 yarn.resourcemanager.decommissioning.timeout 属性。

如果停止超时过后仍有容器或 YARN 应用程序在运行,则系统会强制停止此节点,且由 YARN 在其他节点上重新计划受影响的容器。默认值为 3600 秒 (1 小时)。您可以将此超时设为任意大的值,以强制自然缩减操作等待更长时间。有关更多信息,请参阅 Apache Hadoop 文档中的 YARN 节点的正常停止

任务节点组

Amazon EMR 将智能地选择未运行任务的实例并先将其从集群中删除。如果集群中的所有实例均处于使用状态,Amazon EMR 会等待给定实例上的任务完成,然后将其从集群中删除。默认等待时间为 1 小时,可通过设置 yarn.resourcemanager.decommissioning.timeout 更改此值。Amazon EMR 将动态使用此新设置。您可以将此设为任意大的值,以确保缩减集群时不会终止任何任务。

核心节点组

在核心节点上,必须将 YARN NodeManager 和 HDFS DataNode 守护进程都停止才能缩减实例组。对于 YARN,自然缩减可确保标记为停止的节点仅在没有挂起或未完成的容器或应用程序时才转换到 DECOMMISSIONED 状态。如果开始淘汰时,节点上没有任何正在运行的容器,淘汰会立即完成。

对于 HDFS,自然缩减可确保 HDFS 的目标容量大到足以容纳所有现有数据块。如果目标容量不够大,则只停止部分核心实例,以便剩余节点能够处理驻留在 HDFS 中的当前数据。您应确保额外的 HDFS 容量以允许进一步执行淘汰。此外,在尝试缩减实例组之前,您还应尝试最小化写入 I/O,因为这会使调整操作延迟完成。

另一个限制是默认复制因子:/etc/hadoop/conf/hdfs-site 内的 dfs.replication。Amazon EMR 根据集群中的实例数来配置此值:1-3 个实例为 1;4-9 个实例的集群为 2;10 个以上实例的集群为 3。自然缩减不允许您缩减低于 HDFS 重复因子的核心节点;这是为了防止 HDFS 因副本不足而无法关闭文件。要避开此限制,您必须降低重复因子并重启 NameNode 守护进程。

配置 Amazon EMR 缩减行为

注意

此配置功能仅适用于 Amazon EMR 版本 5.1.0 或更高版本。

在创建集群时,您可以使用 AWS Management Console、AWS CLI 或 Amazon EMR API 配置缩减行为。在使用 Advanced options 创建集群时,在 Step 3: General Cluster Settings 屏幕上完成使用 AWS Management Console配置缩减行为这一操作。

 Amazon EMR 实例终止的缩减配置。

在使用 AWS CLI 创建群集时,可使用 --ScaleDownBehavior 选项指定 TERMINATE_AT_INSTANCE_HOURTERMINATE_AT_TASK_COMPLETION