Spark Streaming и централизованное ведение журнала: добавьте executorId в журналы

Я пытаюсь настроить централизованное ведение журнала для потокового приложения Spark. Мой конкретный пример использования - экспорт журналов драйверов и исполнителей в журналы AWS CloudWatch, но я думаю, что часть моего вопроса не зависит от журналов CloudWatch и EMR.

Благодаря запуску Spark на Yarn / отладке вашего приложения я знаю, как передать свой собственный файл конфигурации log4j, и даже это spark.yarn.app.container.log.dir доступен. Я уже в состоянии заставить каждого исполнителя входить в локальный файл и запускать агент журналов CloudWatch в каждом экземпляре для публикации локального файла в журналах CloudWatch.

Проблема с этой настройкой заключается в том, что журналы от всех исполнителей смешаны. Невозможно узнать, какой исполнитель произвел какое событие. Я хотел добавить что-то вроде идентификатора исполнителя в имя потока CloudWatch или напрямую в журналы. Однако я не вижу, как внедрить эту информацию из Spark в log4j.

Я бросил быстрый взгляд на ExecutorRunnable.scala но не удалось определить подходящую переменную среды или системное свойство. Вам известно о какой-либо собственности, которая может соответствовать моим потребностям? Как люди справляются с этой проблемой? (даже в стек ELK или что-то еще)

0 ответов

Другие вопросы по тегам