集群缩减 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

集群缩减

注意

自 Amazon EMR 发行版 5.10.0 起,不再支持缩减行为选项。因为 Amazon EC2 中引入了按秒计费,Amazon EMR 集群的默认缩减行为现在在任务完成时终止。

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

警告

如果您使用 Amazon 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 文档中的 Graceful Decommission of YARN nodes(正常停止 YARN 节点)。

任务节点组

Amazon EMR 将智能地选择没有针对任何步骤或应用程序运行的任务的实例,并首先将这些实例从集群中删除。如果集群中的所有实例均处于使用状态,Amazon EMR 会等待实例上的任务完成,然后将其从集群中删除。默认等待时间为 1 小时。该值可通过 YARN.resourcemanager.decommissioning.timeout 设置进行更改。Amazon EMR 将动态使用此新设置。您可以将其设置为任意大数字,以确保 Amazon EMR 在缩减集群大小的同时不会终止任何任务。

核心节点组

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

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

另一个限制是默认复制因素:/etc/hadoop/conf/hdfs-site 内的 dfs.replication。创建集群时,Amazon EMR 会根据集群中的实例数来配置此值:1-3 个实例为 1;4-9 个实例的集群为 2;10 个以上实例的集群为 3

警告
  1. 如果单个节点出现故障,则在少于四个节点的集群上将 dfs.replication 设置为 1 可能会导致 HDFS 数据丢失。建议您使用具有至少四个核心节点的集群来处理生产工作负载。

  2. Amazon EMR 不允许集群扩展 dfs.replication 下方的核心节点。例如,如果是 dfs.replication = 2,则最小核心节点数为 2。

  3. 当您使用托管扩缩、自动扩缩或选择手动调整集群大小时,建议您将设置 dfs.replication 为 2 或更高。

自然缩减不允许您将核心节点减少到低于 HDFS 复制因子。这是为了允许 HDFS 因副本不足而关闭文件。要避开此限制,请降低重复因子并重启 NameNode 进程守护程序。

配置 Amazon EMR 缩减行为

注意

Amazon EMR 发行版 5.10.0 及更高版本不再支持在实例小时终止缩减行为选项。以下缩减行为选项仅在 Amazon EMR 控制台发行版 5.1.0 到 5.9.1 中显示。

在创建集群时,您可以使用Amazon Web Services Management Console、Amazon CLI 或 Amazon EMR API 配置缩减行为。

注意

我们重新设计了 Amazon EMR 控制台,以便其易于使用。请参阅 控制台中的新增功能,以了解有关新旧控制台体验差异的信息。

New console
使用新控制台配置缩减行为
  1. 登录 Amazon Web Services Management Console 并打开 Amazon EMR 控制台,网址为 https://console.aws.amazon.com/emr

  2. 在左侧导航窗格中的 EMR on EC2 下,选择 Clusters(集群),然后选择 Create cluster(创建集群)。

  3. Cluster scaling and provisioning option(集群扩展和预置选项)部分中,找到 Cluster termination(集群终止)并选择手动终止集群或者让 Amazon EMR 在指定的空闲时间后终止集群。您也可以选择打开针对漏洞或错误的终止保护。

  4. 选择适用于集群的任何其他选项。

  5. 要启动集群,选择 Create cluster(创建集群)。

Old console
使用旧控制台配置缩减行为
  1. 打开 Amazon EMR 控制台(https://console.amazonaws.cn/elasticmapreduce)。

  2. 选择创建集群。转到 Advanced options(高级选项),然后在 Step 1: Software and Steps(步骤 1:软件和步骤)和 Step 2: Hardware(步骤 2:硬件)中选择配置设置。

  3. Step 3: General Cluster Settings(步骤 3:常规集群设置)中,选择首选的缩减行为。完成剩余配置并创建集群。

Amazon CLI
使用 Amazon CLI 配置缩减行为
  • 使用 --scale-down-behavior 选项指定 TERMINATE_AT_INSTANCE_HOURTERMINATE_AT_TASK_COMPLETION