Как командный менеджер EMR отправляет задания - PullRequest
0 голосов
/ 12 сентября 2018

Не могли бы вы помочь мне выяснить, что именно происходит после развертывания EMR Шаг в кластер с мастером равным local[x]?

Как command-runner.jar отправить работу в EMRмастер?Если я передаю "--executor-cores 4" в качестве аргумента spark-submit, но в Launcher я создаю сеанс с local[8], сколько ядер я получу для исполнителя?Как много исполнителей это создаст?

Мне не удалось выяснить это в документации AWS.Пример:

SomeStep: 
  Type: AWS::EMR::Step
  Properties: 
    ActionOnFailure: CONTINUE
    HadoopJarStep: 
      Args: 
        - "spark-submit"
        - "--deploy-mode"
        - "cluster"
        - "--executor-cores"
        - "4"
        - "--class"
        - "com.psyquation.batch.analytic.Driver"

        {
          "Fn::Sub": "s3://some-bucker/my-app.jar"
        },
      Jar: command-runner.jar
      MainClass: com.somepackage.Launcher
    Name: SomeStep
    JobFlowId: !Ref SomeCluster

А теперь внутри com.somepackage.Launcher :

SparkSession.Builder builder = SparkSession.builder()
    // some configs ...
    .master("local[8]")
    .getOrCreate();

1 Ответ

0 голосов
/ 17 сентября 2018

Если вы установите мастер на «local», он вообще не будет создавать исполнителей.Все приложение (драйвер и задачи) будет запущено в одном процессе JVM на главном экземпляре.Использование «local [8]» просто делает так, что этот единственный процесс может выполнять 8 задач параллельно (в разных потоках).

Основной URL «local» в основном используется для (локальной) разработки / тестирования, не для запуска на кластере.Скорее всего, вам вообще не следует устанавливать основной URL-адрес, поэтому вместо него будет использоваться «пряжа», которая по умолчанию используется в EMR.

...