【问题标题】:How to increase the number of running containers of spark application using EMR cluster?如何使用 EMR 集群增加 Spark 应用程序运行容器的数量?
【发布时间】:2020-06-09 15:56:13
【问题描述】:

我正在使用 1 个主节点和 11 个 m5.2xlarge 核心节点的 EMR 集群。对这种类型的节点做了一些相关的计算之后,下面的json来设置我在EMR上的spark应用配置:

[
    {
        "Classification": "capacity-scheduler",
        "Properties": {
            "yarn.scheduler.capacity.resource-calculator":"org.apache.hadoop.yarn.util.resource.DominantResourceCalculator"
        }
    },

 {
        "Classification": "yarn-site",
        "Properties": {
           "yarn.nodemanager.vmem-check-enabled":"false",
           "yarn.nodemanager.pmem-check-enabled":"false"
                 }
               },
    {
        "Classification": "spark-defaults",
        "Properties": {
            "spark.dynamicAllocation.enabled":"false",
        "spark.worker.instances":"5",
            "spark.driver.memory":"20g",
            "spark.executor.memory":"20g",
            "spark.executor.cores":"5",
            "spark.driver.cores":"5",
            "spark.executor.instances":"14",
            "spark.yarn.executor.memoryOverhead":"4g",
            "spark.default.parallelism":"140"
        }
    },
  {
    "classification": "spark",
    "properties": {
      "maximizeResourceAllocation":"false"
    }
  }
]

但是,这个集群的运行容器并不像我预期的那样(通常是相同数量的运行核心)。只有 11 个正在运行的容器,我怎样才能将这个数字增加到 51 作为已用 Vcor​​e 的数量?

【问题讨论】:

  • 您能否阐明所需的集群配置是什么?了解您为什么需要特定配置而不是动态分配或 EMR 最佳配置也会很有帮助。
  • 我想将emr集群的运行容器从1个容器增加到每个节点5个容器。我想使用更多的 vcore,因为动态分配只分配 2 个 vcore。任何想法? @戴夫
  • 服务器故障可能是这个问题的更好的地方。

标签: python apache-spark pyspark amazon-emr


【解决方案1】:

The instance type m5.2xlarge 有 8 个 vCPU 和 32G RAM。您可以在 2 个 vCPU 和每个执行器 7G 的情况下为每个节点执行 4 个执行器,总共 44 个执行器。这将在每个工作节点上留下 4G 开销,这应该很多。

你的spark-defaults 配置应该是这样的:

    {
        "Classification": "spark-defaults",
        "Properties": {
            "spark.dynamicAllocation.enabled":"false",

            "spark.executor.instances":"44",
            "spark.executor.cores":"2",
            "spark.executor.memory":"7g"
        }
    },

【讨论】:

  • 谢谢。问题在于设置了大量的 spark.executor.cores。由于 vcore 的数量不足以设置为 5,因此 2 个核心就足够了。
  • m5.2xlarge 有 8 个 vCPU。如果需要,您可以将 spark.executor.cores 设置为 5,甚至 8。但是,这不会有效地利用资源。
猜你喜欢
  • 2018-09-18
  • 2018-10-11
  • 1970-01-01
  • 2020-10-31
  • 2021-11-12
  • 2017-06-03
  • 2016-03-28
  • 2023-03-11
  • 2023-03-11
相关资源
最近更新 更多