我是否充分利用了我的EMR集群?

Kri*_*ian 6 amazon-web-services elastic-map-reduce apache-spark pyspark

  • 总实例:我创建了一个总共11个节点的EMR(1个主实例,10个核心实例).
  • 工作提交: spark-submit myApplication.py

在此输入图像描述

  • 容器图:接下来,我有这些图,它们引用了"容器",而我并不完全是容器在EMR环境中的含义,所以这告诉我它并不明显:

在此输入图像描述

  • 实际运行的执行程序:然后我在我的spark历史UI中得到了这个,这表明我只创建了4个执行程序.
  • 动态分配:然后我有了spark.dynamicAllocation.enabled=True,我可以在我的环境细节中看到.
  • 执行程序内存:此外,默认执行程序内存为5120M.

  • 执行者:接下来,我有我的执行器选项卡,显示我有3个活动和1个死执行程序: 在此输入图像描述

所以,从表面上看,在我看来,我没有使用我的所有节点或可用内存.

  1. 我怎么知道我是否使用了我可用的所有资源?
  2. 如果我没有充分利用所有可用资源,我该如何改变我正在做的事情,以便充分发挥可用资源潜力?

pqu*_*ery 2

查看集群的每个节点使用了多少资源的另一种方法是使用Ganglia的 Web 工具。

这是在主节点上发布的,并将显示每个节点的资源使用情况的图表。如果您在创建集群时未启用 Ganglia 作为 EMR 集群上可用的工具之一,则会出现问题。

但是,一旦启用,您可以转到网页并查看每个节点的利用率。