Apache spark AWS EMR-纱线容器

Apache spark AWS EMR-纱线容器,apache-spark,yarn,amazon-emr,Apache Spark,Yarn,Amazon Emr,我在AWS EMR Spark上运行一个应用程序。这里,是星火提交作业- Arguments : spark-submit --deploy-mode cluster --class com.amazon.JavaSparkPi s3://spark-config-test/SWALiveOrderModelSpark-1.0.assembly.jar s3://spark-config-test/2017-08-08 AWS使用纱线进行资源管理。我正在查看指标(下面的屏幕截图),对纱线“容器

我在AWS EMR Spark上运行一个应用程序。这里,是星火提交作业-

Arguments : spark-submit --deploy-mode cluster --class com.amazon.JavaSparkPi s3://spark-config-test/SWALiveOrderModelSpark-1.0.assembly.jar s3://spark-config-test/2017-08-08
AWS使用纱线进行资源管理。我正在查看指标(下面的屏幕截图),对纱线“容器”指标有疑问


这里,分配的容器显示为2。然而,我使用的是4个节点(3个从节点+1个主节点),全部是8核CPU。那么,如何只分配2个容器呢?

您需要做几件事。首先,您需要在
capacity scheduler.xml

"yarn.scheduler.capacity.resource-calculator":"org.apache.hadoop.yarn.util.resource.DominantResourceCalculator"
否则纱线将不会使用您指定的所有芯线。其次,您需要实际指定所需的执行器数量,以及所需的内核数量和要在执行器上分配的内存量(如果您有许多随机分区,或者如果您向驱动程序收集数据,则可能在驱动程序上也是如此)


纱线设计用于管理同时运行多个不同作业的集群,因此默认情况下,它不会将所有资源分配给单个作业,除非您通过设置上述设置将其强制分配。此外,Spark的默认设置对于大多数作业来说也是不够的,您需要显式地设置它们。请通读以更好地了解如何调整spark设置以获得最佳性能。

您为作业分配了多少内核内存?请记住,其中一个节点运行Application Manager,它在该节点上保留1个核心。因此,如果您试图为每个执行器分配8个内核,它将只启动2个执行器。应用程序管理器在主节点上运行,对吗?另外,我还没有指定任何核心内存,所以它必须选择一些默认值。您是否记得使用以下设置调整
capacity scheduler.xml
“warn.scheduler.capacity.resource calculator”:“org.apache.hadoop.warn.util.resource.DominantResourceCalculator”
?你需要指定你想要的执行者的数量。Thread不会自动使用整个集群。我指定了执行器的数量为10,核心的数量为4,分配的容器为6(数据的最大分区)。谢谢