Вывод задания Dataproc Spark в Google Cloud Logging
Есть ли способ отправить выходные данные заданий Dataproc Spark в журнал Google Cloud? Как объяснено в документации Dataproc, выходные данные драйвера задания (мастер для задания Spark) доступны в Dataproc->Jobs на консоли. Есть две причины, по которым я хотел бы иметь журналы в Cloud Logging:
- Я хотел бы видеть логи от исполнителей. Часто в главном журнале будет указано "потерян исполнитель" без каких-либо дополнительных подробностей, и было бы очень полезно получить дополнительную информацию о том, что задумал исполнитель.
- Облачная регистрация имеет хорошую фильтрацию и поиск
В настоящее время единственным выходом из 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
Есть две вещи, чтобы собрать дополнительные детали, которые будут самыми простыми:
- Добавьте новый плагин fluentd в зависимости от ваших потребностей
- Добавить новый файл в список существующих собранных файлов (строка
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