amazon emr上的spark on yarn资源管理:如何利用所有可用内核执行spark作业

8yoxcaq7  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(366)

我在具有以下群集配置的emr群集上运行spark作业:
主机:1:m4.2xlarge:32 gib内存,8 vCPU。
核心:2:m4.2xlarge:32 gib内存,8 vCPU。
任务节点:高达52:r4.2xlarge:61 gib内存,8个vCPU。
以下是我基于此博客的spark提交配置:
1: https://blog.cloudera.com/how-to-tune-your-apache-spark-jobs-part-2/ .
spark.warn.executor.memory=19g
spark.executor.cores=3
spark.warn.driver.memoryoverhead=2g
spark.executor.memoryoverhead=2g
spark.dynamicallocation.enabled=真
spark.dynamicallocation.minexecutors=7
spark.dynamicallocation.initialexecutors=7
spark.dynamicallocation.maxexecutors=1000
spark.shuffle.service.enabled=真
spark.warn.maxattempts=1
我正在为一个用例运行两个数据集的交叉连接。我正试图利用集群上的每一点内存和cpu,我可以使用上述设置。我能够成功地利用集群中所有可用的内存,但不能利用cpu。我看到,即使432核可用,但spark job只能使用103核,如屏幕截图所示。当作业在yarn客户机模式(zeppelin)或yarn集群模式下运行时,我看到了相同的行为。
我不确定什么设置丢失或不正确。任何解决这一问题的建议都将不胜感激。

6tdlim6h

6tdlim6h1#

如果你在yarn用户界面中看到这个,你可能需要添加这个
yarn-site.xml yarn.scheduler.capacity.resource-calculator: org.apache.hadoop.yarn.util.resource.DominantResourceCalculator 我也有同样的困惑。实际上在使用 DefaultResourceCalculator 在yarn ui中,它只计算内存使用情况,在场景后面,它可能使用了多个内核,但您将看到只使用了一个内核。另一方面 DominantResourceCalculator 计算用于资源分配的核心和内存,并显示核心和内存的实际数量。
您还可以启用ganglia或查看emr度量以了解更多详细信息。

相关问题