Amazon EMR上的纱线资源管理上的火花:如何利用所有可用的内核执行火花作业执行

问题描述 投票:0回答:1

我在具有以下群集配置的EMR群集上运行一个火花作业:

Master:1:m4.2xlarge:32 GiB内存,8个vCPU。 Core:2:m4.2xlarge:32 GiB内存,8个vCPU。 任务节点:最多52:r4.2xlarge:61 GiB内存,8个vCPU。


这是基于此博客的我的spark提交配置:

1https://blog.cloudera.com/how-to-tune-your-apache-spark-jobs-part-2/

spark.yarn.executor.memory = 19gspark.executor.cores = 3spark.yarn.driver.memoryOverhead = 2gspark.executor.memoryOverhead = 2gspark.dynamicAllocation.enabled = truespark.dynamicAllocation.minExecutors = 7spark.dynamicAllocation.initialExecutors = 7spark.dynamicAllocation.maxExecutors = 1000spark.shuffle.service.enabled = truespark.yarn.maxAttempts = 1

我正在为一个用例运行2个数据集的交叉联接。而且我正在尝试利用可以使用上述设置的群集上的所有可用内存和CPU。我能够成功利用群集中的所有可用内存,但不能充分利用CPU。我看到即使432内核可用,但是spark作业也能够利用仅使用103个内核,如屏幕快照所示。当作业在纱线客户端模式(齐柏林飞艇)或纱线群集模式下运行时,我会看到相同的行为。

我不确定什么设置丢失或不正确。任何建议,以解决这个问题表示赞赏。 enter image description here

scala apache-spark hadoop yarn amazon-emr
1个回答
0
投票

如果您在YARN ui中看到此内容,则可能必须在yarn-site.xml中添加此内容>

yarn.scheduler.capacity.resource-calculator: org.apache.hadoop.yarn.util.resource.DominantResourceCalculator

我也有同样的困惑。实际上,在Yarn UI中使用DefaultResourceCalculator时,它仅计算内存使用情况,在后台它可能使用了1个以上的内核,但您只会看到使用了1个内核。另一方面,DominantResourceCalculator计算内核和内存以进行资源分配,并显示内核和内存的实际数量。

您还可以启用神经节或查看EMR指标以了解更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.