Запись в локальную ФС в кластерном режиме SPARK
Для искровых заданий мы пытаемся добавить платформу ведения журнала, которая создает пользовательский файл журнала в локальной FS. В клиентском режиме все нормально, файлы создаются на локальной ФС с пользователем, запустившим spark-submit. Однако в режиме кластера локальные файлы создаются с помощью пряжи пользователя, у которого нет разрешения на запись в локальный каталог...
Есть ли какое-либо решение для записи локального файла в кластерном режиме с пользователем, который отправил задание, без изменения разрешения на 777 везде? Лучше ли в этом случае кластерный режим (мы находимся в среде PROD), зная, что задание запускается с узла кластера (поэтому нет проблем с сетью).
Спасибо.
1 ответ
Да, вот способ: использование сценария оболочки для отправки искровых заданий
Мы используем регистратор для печати всех наших журналов. у нас всегда есть уникальный текст с сообщением журнала, например: log.info("INFO_CUSTOM: Info message"). Как только наше приложение будет завершено, мы запишем команду Yarn logs и grep для поиска уникального текста.
- Получите идентификатор приложения, используя команду yarn с именем приложения.
например. yarn application -list -appStates FINISHED,FAIED,KILLED | grep <application name>
- Запустите команду yarn logs и grep, перенаправьте ее в нужный файл.
например. yarn logs -applicationId <application id u got fro step 1> | grep -w "INFO_CUSTOM" >> joblog.log