Web Services EMR并行运行步骤

q7solyqu  于 2022-11-15  发布在  其他
关注(0)|答案(4)|浏览(144)

我正在EMR群集上运行spark-job,我面临的问题是
触发的EMR作业正在逐步执行(在队列中)
有没有办法让它们并行运行?如果没有,有没有什么改变

nafvub8i

nafvub8i1#

Elastic MapReduce在默认情况下采用了一个非常“分步”导向的YARN设置,它有一个单独的CapacityScheduler队列,并分配了100%的集群资源。由于这种配置,任何时候您向EMR集群提交作业时,YARN都会最大限度地提高该作业的集群使用率,并将所有可用资源授予该作业,直到作业完成。
在EMR集群(或任何其他基于YARN的Hadoop集群)中运行多个并发作业需要一个正确的YARN设置,其中包含多个队列,以便正确地为每个作业分配资源。YARN的文档对Capacity Scheduler的所有特性都做了很好的介绍,而且听起来更简单。
YARN的FairScheduler非常受欢迎,但它使用了不同的方法,根据您的需求可能更难配置。假设您有一个单一的公平队列的最简单的场景,YARN将尝试在等待的作业被运行的作业释放后立即将容器授予它们,确保提交到集群的所有作业在它们可用时至少获得一部分计算资源。

axr492tv

axr492tv2#

如果您担心YARN作业在队列中运行(由spark提交)..
并行运行作业有多种解决方案,
默认情况下,EMR使用YARN CapacityScheduler和DefaultResourceCalculator,并有一个单一的DEFAULT队列,所有的YARN作业都在其中提交。由于只有一个队列,您可以并行运行(不提交)的Yarn作业数量实际上取决于您的EMR集群支持的AM、Map器和缩减器的并行数量。
例如:您的集群最多可以并行运行10个Map器。(请参阅AWS EMR并行Map器?)
假设您提交了2个仅Map作业,每个作业依次需要10个Map器。第一个作业将占用所有Map器容器容量并运行,而第二个作业将在队列中等待容器释放。AM和Reducer的行为也类似。
现在,要使它们并行运行,就必须限制群集支持容器数量,
1.保留容量排程器,您可以建立多个队列,在每个队列中设定%的容量与最大容量。因此,第一个队列中的工作即使需要,也可能不会完全用尽所有容器。您可以在第二个队列中提交数秒的工作,该队列将具有预先决定的容量。
1.您可能需要通过配置yarn-site.xml来使用FAIR调度程序。FAIR调度程序允许您共享配置队列并在这些队列之间公平地共享资源。您还可以使用公平调度程序的PREEMPTION选项。
请注意,选择何种选项取决于您的使用案例和业务需求。了解所有选项和可能的影响非常重要。
https://www.safaribooksonline.com/library/view/hadoop-the-definitive/9781491901687/ch04.html

tpgth1q7

tpgth1q73#

Amazon EMR现在支持并行运行多个步骤的能力。允许一次运行的步骤数是可配置的,可以在启动集群时以及集群启动后的任何时间进行设置。
有关详细信息,请参阅此公告:https://aws.amazon.com/about-aws/whats-new/2019/11/amazon-emr-now-allows-you-to-run-multiple-steps-in-parallel-cancel-running-steps-and-integrate-with-aws-step-functions/

相关问题