【问题标题】:AWS EMR Spark app - poor CPU and memory utilizationAWS EMR Spark 应用程序 - CPU 和内存利用率低
【发布时间】:2018-06-21 01:27:40
【问题描述】:

我正在 AWS EMR(3 个节点 * m4.4xlarge 集群 - 每个节点 16vCPU 和 64G RAM)上运行我的 Spark Streaming 应用程序(Spark 2.2.1、EMR 5.11、Scala)的 2 个副本。

在内置的 EMR 集群监控(Ganglia)中,我看到集群的 CPU 利用率低于 30%,内存使用不超过 32GB,从 ~200GB 可用,网络也远未达到 100%。但是应用程序在批处理间隔内几乎无法完成批处理。

以下是我使用客户端模式将应用的每个副本提交给 Master 的参数:

--master yarn
--num-executors 2
--executor-cores 20
--executor-memory 20G
--conf spark.driver.memory=4G
--conf spark.driver.cores=3

我怎样才能达到更好的资源利用率(应用性能)?

【问题讨论】:

    标签: apache-spark spark-streaming emr amazon-emr


    【解决方案1】:

    Using maximizeResourceAllocation from aws docs there all these things are discussed in detail. Read it completely

    您可以通过使用 spark 配置分类将maximizeResourceAllocation 选项设置为true 来配置您的执行程序以利用集群中每个节点上可能的最大资源。此特定于 EMR 的选项计算核心实例组中实例上的执行程序可用的最大计算和内存资源。然后它会根据这些信息设置相应的 spark-defaults 设置。

    [
      {
        "Classification": "spark",
        "Properties": {
          "maximizeResourceAllocation": "true"
        }
      }
    ]
    

    延伸阅读

    【讨论】:

    【解决方案2】:

    您的 spark 执行器是否有多个 vcore?

    如果是,则在 aws emr 上存在用于分配正确数量的 cpu 的配置问题

    yarn is not honouring yarn.nodemanager.resource.cpu-vcores

    在此处查看此答案,打开显性容量允许更多 vcore 运行,我在监控使用情况时看到增加了 cpu 使用率。

    至于内存,你的数据集有多大,你有多少内存? - 你能看到导致数据从内存移动到磁盘的任何磁盘写入操作吗?

    【讨论】:

    • 好的,将与 DominantCapacityCalculator 一起玩,看看效果如何。数据集非常小(每批不到 1MB),但转换和 DAG 的序列很大。多窗口操作、连接等
    猜你喜欢
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2017-05-19
    • 2019-11-22
    • 2020-06-18
    相关资源
    最近更新 更多