AWS EMR- 纱线容器

AWS EMR- Yarn Container

我是 运行 AWS EMR-Spark 上的应用程序。这是 spark-submit 作业;-

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

A​​WS 使用 YARN 进行资源管理。我正在查看指标(下面的屏幕截图),并对 YARN 'container' 指标有疑问。

在这里,分配的容器显示为2。但是,我使用了4个节点(3个slave + 1 master),所有8个核心CPU。那么,只有2个容器是如何分配的呢?

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

中设置如下配置
"yarn.scheduler.capacity.resource-calculator":"org.apache.hadoop.yarn.util.resource.DominantResourceCalculator"

否则 YARN 将不会使用您指定的所有内核。其次,您需要实际指定所需的执行程序数量,以及所需的内核数量和要分配给执行程序的内存量(如果您有许多随机分区或如果您向驱动程序收集数据)。

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