Как увеличить количество запущенных контейнеров искрового приложения с помощью EMR кластера? - PullRequest
1 голос
/ 25 февраля 2020

Я использую кластер EMR из 1 главного и 11 основных узлов m5.2x. После выполнения некоторых связанных вычислений с этим типом узла, следующий json, чтобы установить конфигурацию моего приложения Spark на EMR:

[
    {
        "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 как количество используемых Vcores?

1 Ответ

2 голосов
/ 26 февраля 2020

Тип экземпляра m5.2xlarge имеет 8 виртуальных ЦП и 32 ГБ ОЗУ. Вы можете сделать 4 исполнителя на узел при 2 vCPU и 7G на исполнителя, в общей сложности 44 исполнителя. Это приведет к дополнительным расходам 4G на каждом рабочем узле, чего должно быть достаточно.

Ваша конфигурация spark-defaults должна быть такой:

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

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