【发布时间】:2017-06-06 18:43:14
【问题描述】:
- 实例总数:我创建了一个总共有 11 个节点的 EMR(1 个主实例,10 个核心实例)。
-
作业提交:
spark-submit myApplication.py
- 容器图表:接下来,我有这些图表,它们指的是“容器”,我并不完全了解 EMR 上下文中的容器,所以这并不明显。我:
- 实际运行的执行程序:然后我在我的 spark 历史 UI 中得到了这个,这表明我只创建了 4 个执行程序。
-
动态分配:然后我得到了
spark.dynamicAllocation.enabled=True,我可以在我的环境详细信息中看到它。 执行程序内存:另外,默认执行程序内存为
5120M。Executors:接下来,我有我的 executors 选项卡,显示我有看起来像 3 个活动和 1 个死的 executor:
因此,从表面上看,在我看来,我并没有使用所有节点或可用内存。
- 我如何知道我是否使用了所有可用的资源?
- 如果我没有充分发挥所有可用资源的潜力,我该如何改变我正在做的事情,以便让可用资源充分发挥其潜力?
【问题讨论】:
-
正确调整集群规模是在向用户提供服务和服务成本之间进行权衡。为什么要像以前那样配置它(10 个节点,选择的实例类型)?您的用户是否有时会抱怨它太慢?如果您要缩小计数类型或计数,您的用户会受到负面影响吗?您是否尝试过 Spark 的标准监控工具 (Accessing the Spark Web UIs)?
-
是的,executors 表截图来自 EMR 上的 Spark Web UI,其他截图来自 EMR 监控窗格。此外,这个问题纯粹是关于集群内节点的利用率。在过去的一个小时里,我一直在研究启用
maximizeResourceAllocation的含义,并且提供默认值的 4 个设置完全没有被我触及,所以我的问题的答案是“否”。此外,现在似乎很清楚,如果我不手动设置这些设置并且不启用最大化资源分配,那么我的集群就像一个 2 节点集群一样被使用。
标签: amazon-web-services apache-spark pyspark elastic-map-reduce