2016-02-29 1 views
0

Итак, моя установка на AWS - это 1 главный узел и 2 узла-исполнителя. Я бы ожидал, что оба моих исполнительных узла будут работать над моей задачей, но я вижу, что только один регистрируется нормально, другой - как ApplicationMaster. Я также вижу, что 16 разделов в это время обрабатываются.искровое исцеление использует все узлы

На данный момент я использую искровую оболочку. Все настройки по умолчанию, EMR 4.3. Команда для запуска оболочки:

export SPARK_EXECUTOR_MEMORY=20g 
export SPARK_DRIVER_MEMORY=4g 
spark-shell --num-executors 2 --executor-cores 16 --packages com.databricks:spark-redshift_2.10:0.6.0 --driver-java-options "-Xss100M" --conf spark.driver.maxResultSize=0 

Любые идеи, с которых начать отладку? Или это правильное поведение?

ответ

1

Я думаю, проблема заключается в том, что вы работаете в режиме «кластера», а искровой драйвер работает внутри мастера приложений на одном из узлов-исполнителей и использует 1 ядро. Поэтому, поскольку вашим исполнителям требуется 16 ядер, один из узлов имеет только 15 ядер и не имеет необходимых ресурсов для запуска второго исполнителя. Вы можете проверить это, посмотрев «Узлы» в пользовательском интерфейсе YARN. Решением может быть запуск искровой оболочки в клиентском режиме --deploy-mode client или изменение количества ядер исполнителей.

+0

Интересно, что это была SPARK_EXECUTOR_MEMORY, которая была слишком высокой, чтобы иметь возможность использовать узел как исполнитель. Я смог сделать 32 ядра, исследуя, сколько их задействовано. Есть настройка для управления ядрами для драйвера, поэтому я должен быть хорошим. – devopslife

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