2017-02-01 12 views
5

Я пытаюсь запустить искровое приложение, написанное в scala 11.8, искра 2.1 на кластере EMR версии 5.3.0. я настроил кластер со следующим:Что означает искра exitCode: 12 означает?

JSON
[ 
    { 
    "Classification": "hadoop-env", 
    "Configurations": [ 
     { 
      "Classification": "export", 
      "Configurations": [], 
      "Properties": { 
       "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" 
      } 
     } 
    ], 
    "Properties": {} 
    }, 
    { 
    "Classification": "spark-env", 
    "Configurations": [ 
     { 
      "Classification": "export", 
      "Configurations": [], 
      "Properties": { 
       "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" 
      } 
     } 
    ], 
    "Properties": {} 
    } 
] 

если я пытаюсь запустить на клиентском режиме все нормально работают. при попытке запустить приложение с кластерным режимом он потерпел неудачу с кодом состояния 12.

Вот часть мастер-журналом, где я вижу, код состояния:

17/02/01 10:08:26 INFO TaskSetManager: Завершенная задача 79.0 в стадии 0.0 (TID 79) в 293 мс на ip-10-234-174-231.us-west-2.compute.internal (исполнитель 2) (78/11102) 17/02 02/01 10:08:27 INFO YarnAllocator: Драйвер запросил всего 19290 исполнителей. 17/02/01 10:08:27 INFO ApplicationMaster: Окончательный статус приложения: FAILED, exitCode: 12, (причина: Исключение было выброшено 1 раз из потока Reporter.) 17/02/01 10:08: 27 INFO SparkContext: Вызов остановки() от выключения крюка

UPDATE:

в рамках этой работы, мне нужно прочитать некоторые данные из s3, что-то вроде этого: sc.textFile("s3n://stambucket/impressions/*/2017-01-0[1-9]/*/impression_recdate*) Если бы я только принять один день, ошибок нет. Но с 9 я получаю этот код выхода 12. Еще более странно считать тот факт, что 9 дней в режиме клиента просто прекрасны.

+0

Googling предполагает, что это означает, что вам не хватает какой-то jar файлов. Это соответствовало бы его работе локально, но не на кластере. Проверьте, что вы настроили все так, чтобы нужные банки были доступны повсюду, –

+0

emr-5.x по умолчанию использует Java 8, поэтому ваши конфигурации не нужны. Я не думаю, что они были бы источником этой проблемы, но я бы рекомендовал удалить эти конфигурации. –

+0

@ TheArchetypalPaul Если это действительно так, как я должен знать, какая банда отсутствует, можете ли вы поделиться ссылкой, которую вы нашли. – NetanelRabinowitz

ответ

2

Код выхода 12 является стандартом exit code in linux для выхода из памяти.

Spark устанавливает объем памяти, используемый по умолчанию для каждого процесса, равным 1 ГБ. EMR не будет переопределять это значение независимо от объема памяти, доступной на узлах/мастерах кластера. Одно из возможных исправлений - установить флаг maximizeResourceAllocation в значение true.

1

Попробуйте увеличить ApplicationMaster в Java кучи spark.yarn.am.memory = 2G или установить maxExecutors до разумных значений spark.dynamicAllocation.maxExecutors = 400

https://issues.apache.org/jira/browse/SPARK-19226

+0

Почему 400 разумных значений? – Davos

+0

Кроме того, EMR запускается в режиме кластера, если вы не используете 'spark-submit' с параметром' --deploy'' для режима клиента - см. Https://aws.amazon.com/blogs/big-data/submitting- user-applications-with-spark-submit /. Согласно искровым документам http://spark.apache.org/docs/latest/running-on-yarn.html Установка 'spark.yarn.am.memory' применяется только к клиентскому режиму, и вы должны использовать« искру ». driver.memory' для режима кластера. – Davos

 Смежные вопросы

  • Нет связанных вопросов^_^