настроить log4j для каждого задания искры, работающего в режиме пряжи - PullRequest
1 голос
/ 05 июля 2019

Я выполняю задания на спарк в режиме клиента пряжи. Я выполняю эти задания с помощью команды spark-submit внутри сценария Unix. Я хочу иметь журналы для каждой работы искры. Я попытался использовать следующую команду, чтобы получить журнал:

spark-submit --master yarn --deploy-mode client --num-executors 10 --executor-memory 2G --driver-memory 2G --jars $spark_jars --class $spark_class  $main_jar |& tee -a ${log_file}

но здесь, если задание spark завершается неудачно, оно не будет отслеживаться при проверке состояния команды, может быть, unix проверяет состояние команды | $ tee, которая всегда успешна независимо от того, успешно ли задание spark выполнено или не выполнено

if [ $? -eq 0 ]; then
    echo "===========SPARK JOB COMPLETED==================" |& tee -a ${log_file}
else
    echo "===========SPARK JOB FAILED=====================" |& tee -a ${log_file}
fi

Я пытался использовать log4j, но не смог. Я хочу, чтобы каждый файл журнала заданий искры хранился на локальном Unix-сервере. Пожалуйста, помогите !!

1 Ответ

0 голосов
/ 05 июля 2019

Как только вы отправите заявку на искру. Он генерирует application_id. Так как это приложение работает в распределенном кластере, вы не можете получить журналы приложения spark с перенаправлением.

Однако, когда вы делаете что-то вроде ниже, он просто перенаправляет консольный вход в файл.

spark-submit --master yarn --deploy-mode client --num-executors 10 --executor-memory 2G --driver-memory 2G --jars $spark_jars --class $spark_class  $main_jar > ${log_file}

Чтобы получить, например, протоколирование приложения spark, отправленного в кластер пряжи, необходимо использовать команду yarn logs:

yarn logs -applicationId <application ID> [OPTIONS]

...