AWS EMR-纱线容器

时间:2017-11-15 06:47:34

标签: 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使用YARN进行资源管理。我正在查看指标(下面的屏幕截图),并对YARN'容器'指标。

Screenshot

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

1 个答案:

答案 0 :(得分:1)

你需要做的一件事。首先,您需要在capacity-scheduler.xml

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

否则YARN将不会使用您指定的所有核心。其次,您需要实际指定所需的执行程序数量,以及您需要的内核数量以及您希望在执行程序上分配的内存量(如果您有许多shuffle分区或者你收集数据给司机)。

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