Ошибка "Target log file already exists (/user/spark/applicationHistory/application_ ..)" при запуске Spark приложений в режиме yarn cluster
Проблема возникает когда вы пытаетесь запустить Apache Spark приложение в режиме yarn cluster. Пример запуска:
spark-submit --master yarn --deploy-mode cluster ...
В настройках yarn-a установлено кол. попыток запуска задачи. Когда первая попытка запустить приложение терпит неудачу, то Yarn пытается запустить приложение повторно, но терпит неудачу из-за ошибки "Target log file already exists (/user/spark/applicationHistory/application_ .".Эта ошибка означает, что включена переменная spark.eventLog.enabled, которая говорит о том, что в директории, которая указана в переменной spark.eventLog.dir будут храниться логи событий при запуске приложений на класетере YARN.
Решается эта проблема довольно интерестно. Дело в том, что в Spark-e есть незадокументированная переменная spark.eventLog.overwrite, которая и отвечает за возможность перезаписи файла логов событий и ошибка перестаёт возникать.
Но эту настройку не так-то просто и установить.
Вариант 1:
В коде приложения нужно добавить sparkConf.set ("spark.eventLog.overwrite", true);
Вариант 2:
При запуске Spark приложения нужно указать настройку конфига:
spark-submit --conf spark.eventLog.overwrite=true
Вариант 3:Добавить строку spark.eventLog.overwrite=true в файл /etc/spark/conf/spark-defaults.conf на всех серверах.
Если ни один из этих вариантов не заработал то можно отключить EventLog. Это можно сделать в админке СM(искать по spark.eventLog.enabled)
Коментарі
Дописати коментар