AWS EMR Spark- Cloudwatch

AWS EMR Spark- Cloudwatch

我是 运行 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

因此,AWS 使用 YARN 进行资源管理。在观察 cloudwatch 指标时,我对此有一些疑问:-

1)

容器分配在这里意味着什么?我正在使用 1 个主节点和 3 个 slave/executor 节点(所有 4 个都是 8 核 CPU)。

2)

我将查询更改为:-

spark-submit --deploy-mode cluster --executor-cores 4 --class com.amazon.JavaSparkPi s3://spark-config-test/SWALiveOrderModelSpark-1.0.assembly.jar s3://spark-config-test/2017-08-08

这里的核数运行是3,不应该是3(执行器数)*4(核数)=12吗?

1)这里分配的Container基本上代表了spark executor的数量。 Spark executor-cores 更像是 `executor-tasks,这意味着您可以将您的应用程序配置为 运行 每个物理 cpu 一个执行程序,并且仍然要求它每个 cpu 有 3 个执行程序核心(想想超线程)。

当您未指定 spark-executor 的数量时,默认情况下在 EMR 上发生的情况是假定动态分配并且 Spark 只会从 YARN 询问它认为它需要的资源。尝试将执行程序的数量明确设置为 10,并且分配的容器增加到 6(最大数据分区)。此外,在选项卡 "Application history" 下,您可以获得 YARN/Spark 执行程序的详细视图。

2) "cores" 这里指的是EMR核心节点,与spark执行器核心不一样。 "task" 相同,在监控选项卡中引用 EMR 任务节点。这与我的设置一致,因为我有 3 个 EMR 从节点。