Как использовать несколько пакетов DagBags в Airflow с WebUI

#google-cloud-platform #airflow #etl #google-cloud-composer

#google-облачная платформа #воздушный поток #etl #google-cloud-composer

Вопрос:

Мы запускаем Airflow 1.10.3 через Google Cloud Composer.

Наши базы данных распределены по нескольким папкам, которые мы собираем через экземпляры DagBag (например , здесь https://medium.com/@xnuinside/how-to-load-use-several-dag-folders-airflow-dagbags-b93e4ef4663c )

Однако WebUI, по-видимому, не может найти какие-либо базы данных, которых нет в основной папке dag (той, которая настроена в airflow.cfg) Похоже, это связано с тем, что в airflow.www.views существует только одна глобальная переменная dagbag . Это действительно проблема? Что может быть обходным путем?

Дополнительная информация:

  • airflow list_dags показывает все базы данных
  • базы данных также перечислены в WebUI и, похоже, назначаются по расписанию, но нажатие на dag в WebUI выдает только сообщение об ошибке » похоже, нет в dagbag»

Мне любопытно услышать о ваших мыслях, так как я здесь совсем запутался.

Ответ №1:

Согласно документации Cloud Composer, параметр dags_folder заблокирован и не может быть переопределен (вам разрешено использовать только корзину GCS, созданную средой Cloud Composer). Это позволяет Cloud Composer загружать базы данных, а папка с базами данных остается в корзине облачного хранилища Google.

Поскольку DagBag невозможно изменить, а Apache Airflow не обеспечивает надежной изоляции DAG, рекомендуется поддерживать отдельные группы доступности баз данных в разных средах, чтобы предотвратить помехи DAG.

Я провел некоторый тест в своей среде Composer, создав несколько папок для разделения моих баз данных:

введите описание изображения здесь

Во всех случаях мои базы данных были распознаны и запущены, как ожидалось, даже для вложенных папок:

введите описание изображения здесь

 $ gcloud beta composer environments storage dags list  --environment=$ENVIRONMENT --location=us-east1
NAME
dags/
dags/airflow_monitoring.py
dags/dev/
dags/dev/airflow_monitoring_dev.py
dags/qa/
dags/qa/airflow_monitoring_qa.py
dags/qa/qa_test1/
dags/qa/qa_test1/airflow_monitoring_qa_test1.py
  

Если воссоздать ваши папки в папке dag, созданной Composer, для вас невозможно. Я рекомендую вам синхронизировать содержимое вашего собственного хранилища с папкой базы данных Composer, с помощью команды rsync вы можете зеркально отобразить оба хранилища.