我试图在EMR中同时运行2个步骤。但是,我总是使第一步运行,第二步未完成。
我的Yarn配置的一部分如下:
{
"Classification": "capacity-scheduler",
"Properties": {
"yarn.scheduler.capacity.resource-calculator": "org.apache.hadoop.yarn.util.resource.DominantResourceCalculator",
"yarn.scheduler.capacity.maximum-am-resource-percent": "0.5"
}
}
当我在本地Mac上运行时,我可以在Yarn上以类似配置运行第二个应用程序,其中的更改实际上是火花提交资源请求,以匹配所需的群集容量和性能。
换句话说,我的纱线设置为运行多个应用程序。
因此,在我深入研究它之前,我想知道实际上是否可以同时执行该步骤或仅连续执行该步骤?
还有其他提示或特定要同时运行的内容吗?
关于每个作业请求,我的集群容量过大。因此,我不明白为什么它不能同时运行。
答案 0 :(得分:5)
是否可以使步骤同时运行或仅连续运行?
是否有任何提示或特定内容可同时运行?
spark-history server
On your local mac, you are able to run multiple YARN application in parallel because you are submitting the applications to yarn directly, whereas in EMR the yarn/spark applications are submitted through AWS's internal `command-runner.jar`, it does a bunch of other logging/bootstrapping etc to be able to see the `emr step` info on the web console.
答案 1 :(得分:2)
AWS EMR Yarn中有两种运行应用程序的模式:
如果使用客户端模式,则在给定时间只有一步处于运行状态。 但是,有一个选项可以让您同时运行多于1个步骤。
尝试以打击模式提交您的步骤: spark-submit --master yarn --deploy-mode cluster --executor-memory 1G --num-executors 2 --driver-memory 1g --executor-cores 2 --conf spark.yarn.submit.waitAppCompletion = false-类WordCount.word.App /home/hadoop/word.jar
希望这对您有所帮助。
答案 2 :(得分:1)
AWS现在允许您在更高版本的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/
执行此操作时要注意的一件事是照顾资源,因为您的应用程序将争夺可用资源,并且其中一个应用程序可能最终处于接受状态,直到另一个应用程序完成后才开始运行,从而破坏了目的。
答案 3 :(得分:0)
您始终可以将步骤放在后台。如果您处理日志记录和竞争条件,应该不会有问题。
step-job.sh
#!/bin/bash
function main(){
do_this
do_that
}
if [[ "$1" == "1" ]]; then
main
else
/bin/bash "$0" 1 $@ &
fi
答案 4 :(得分:0)
看起来AWS终于在EMR 5.28.0中实现了此功能!
该参数在控制台向导中称为“并发”,在API中称为StepConcurrencyLevel:
指定可以同时执行的步骤数。默认值为1。最大值为256。