Вывод задания Dataproc Spark в Google Cloud Logging

Есть ли способ отправить выходные данные заданий Dataproc Spark в журнал Google Cloud? Как объяснено в документации Dataproc, выходные данные драйвера задания (мастер для задания Spark) доступны в Dataproc->Jobs на консоли. Есть две причины, по которым я хотел бы иметь журналы в Cloud Logging:

  1. Я хотел бы видеть логи от исполнителей. Часто в главном журнале будет указано "потерян исполнитель" без каких-либо дополнительных подробностей, и было бы очень полезно получить дополнительную информацию о том, что задумал исполнитель.
  2. Облачная регистрация имеет хорошую фильтрацию и поиск

В настоящее время единственным выходом из Dataproc, который отображается в Cloud Logging, являются элементы журнала из yarn-yarn-nodemanager-* и контейнера _*. Stderr. Вывод кода моего приложения показан в Dataproc->Jobs, но не в Cloud Logging, и это только вывод мастера Spark, а не исполнителей.

2 ответа

Решение

ТЛ; др

Это изначально не поддерживается, но будет поддерживаться в следующей версии Cloud Dataproc. Тем не менее, существует временное решение вручную.

Временное решение

Кластеры Cloud Dataproc используют fluentd для сбора и пересылки журналов в Cloud Logging. Конфигурация fluentd - это то, почему вы видите, что некоторые журналы пересылаются, а другие нет. Поэтому простой обходной путь (пока Cloud Dataproc не получит поддержку сведений о заданиях в Cloud Logging) - это изменить конфигурацию flientd. Файл конфигурации для fluentd в кластере находится по адресу:

/etc/google-fluentd/google-fluentd.conf

Есть две вещи, чтобы собрать дополнительные детали, которые будут самыми простыми:

  1. Добавьте новый плагин fluentd в зависимости от ваших потребностей
  2. Добавить новый файл в список существующих собранных файлов (строка 56 есть файлы на моем кластере)

Как только вы отредактируете конфигурацию, вам нужно будет перезапустить google-fluentd оказание услуг:

/etc/init.d/google-fluentd restart

Наконец, в зависимости от ваших потребностей, вам может потребоваться, а может и не понадобиться делать это на всех узлах кластера. Исходя из вашего варианта использования, звучит так, что вы, вероятно, могли бы просто изменить свой главный узел и быть настроенным.

Для этого вы можете использовать действия инициализации dataproc для stackdriver:

gcloud dataproc clusters create <CLUSTER_NAME> \
    --initialization-actions gs://<GCS_BUCKET>/stackdriver.sh \
    --scopes https://www.googleapis.com/auth/monitoring.write
Другие вопросы по тегам