

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 向 Amazon EMR 提交工作时并行运行多个步骤的注意事项
<a name="emr-concurrent-steps"></a>

向 Amazon EMR 提交工作时，并行运行多个步骤需要对资源规划和集群行为预期做出初步决定。这里详细介绍了这些内容。
+ 并行运行的步骤可以按任何顺序完成，但队列中的待处理步骤要按照它们提交的顺序转换为运行状态。
+ 为集群选择步骤并发级别时，必须考虑主节点实例类型是否满足用户工作负载的内存要求。主步骤执行程序进程在每个步骤的主节点上运行。与一次运行一个步骤相比，并行运行多个步骤要求主节点拥有更多的内存和更高的 CPU 利用率。
+ 要对并发步骤实现复杂的计划和资源管理，您可以使用 YARN 计划功能（如 `FairScheduler` 或 `CapacityScheduler`）。例如，您可以将 `FairScheduler` 与 `queueMaxAppsDefault` 集合一起使用，以防止一次运行超过特定数量的作业。
+ 步骤并发级别取决于资源管理器的配置。例如，如果 YARN 配置的并行度仅为 `5`，则即使 `StepConcurrencyLevel` 设置为 `10`，您也只能让五个 YARN 应用程序并行运行。有关配置资源管理器的更多信息，请参阅《Amazon EMR 版本指南**》中的[配置应用程序](https://docs.amazonaws.cn/emr/latest/ReleaseGuide/emr-configure-apps.html)。
+ 当集群的步骤并发级别大于 1 时，不能添加具有 `ActionOnFailure`（CONTINUE 除外）的步骤。
+ 如果集群的步骤并发级别大于 1，步骤 `ActionOnFailure` 功能将不会激活。
+ 如果集群的步骤并发级别为 `1` 但有多个运行步骤，则 `TERMINATE_CLUSTER ActionOnFailure` 可能会激活，但 `CANCEL_AND_WAIT ActionOnFailure` 不会。当集群步骤并发级别大于一时会出现这种边缘情况，但在运行多个步骤时会减少发生该情况。
+ 使用 EMR 自动扩展可以基于 YARN 资源向上和向下扩展，以防止资源争用。有关更多信息，请参阅《[Amazon EMR 管理指南](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-automatic-scaling.html)》中的*将自动伸缩与实例组的自定义策略结合使用*。
+ 当您降低步骤并发级别时，EMR 允许在减少步骤数之前完成任何正在运行的步骤。如果资源因集群运行的并发步骤太多而耗尽，我们建议手动取消所有正在运行的步骤以释放资源。