Командой airflow webserver -p 8080
мы запустили веб-сервер. Давайте познакомимся с пользовательским интерфейсом или как я его ещё называю — диспетчерской дата инженера.
В адресной строке браузере введите http://127.0.0.1:8080
.
В предыдущем разделе мы создали пользователя airflow
с паролем airflow
. Необходимо войти в систему под этими данными.
Красной рамкой я выделил сообщение от Airflow, что ещё не запущен Планировщик. Что это за компонент я расскажу далее по тексту.
The scheduler does not appear to be running. The DAGs list may not update, and new tasks will not be scheduled.
На главном экране синей рамкой я выделил список примеров, которые Airflow грузит в панель по умолчанию. Чтобы отключить их загрузку необходимо в airflow.cfg
поменять параметр:
load_examples = False
Если ранее этот параметр был True
и вы инициализировали БД, то после изменения на False
необходимо сбросить всю информацию о пайплайнах командой:
airflow db reset
Пересоздавать пользователей не нужно.
Примеры нужны исключительно в ознакомительных целях, никакой иной пользы они не несут.
Сразу после входа в панель Airflow вы видите перед собой список всех DAG, которые подгрузил Airflow для вас:
Если кликнуть на любой DAG из списка, то мы увидим детальную информацию по нему.
В этом разделе можно управлять переменными, которые будут храниться в базе данных Airflow. Удобно для хранения различной информации, например, адреса хостов удалённых сервисов. Нежелательно в этом разделе хранить данные доступов, т.к. переменные хранятся в открытом виде и могут быть скомпрометированы третьими лицами.
Раздел позволяет редактировать настройки Airflow, используя графический интерфейс. По умолчанию опция отключена из соображений безопасности.
Раздел для хранения данных о доступе к различным сервисам: базам данных, облачным провайдерам, сторонним API сервисам и т.д. Я не рекомендую в DAG коде хранить пароли и секретные ключи, а использовать для этого раздел Connections, например.
При использовании Connections в коде вам необходимо лишь будет передать значение conn_id. На практике мы увидим как это удобно и просто.
Раздел для управления плагинами Airflow. По умолчанию плагины можно подгрузить, разместив код по пути AIRFLOW_HOME/plugins
.
Возможность задать пул или другими словами некое ограничение на количество параллельно выполняющихся задач. Представим, что вы хотите регулярно качать данные с внешнего сервиса. У сервиса есть ограничение на количество одновременных соединений — 2. В этом случае вы создаёте пул со значением 2 и присваиваете ему имя. Далее во всех операторах, отвечающих за скачивание данных, передаёте название этого пула.
Это механизм обмена сообщениями между операторами. Т.к. задачи могут выполняться на разных компьютерах, то получить возвращаемое значение одного оператора и передать другому привычным способом не получится (например, путём цепочек вызовов или присвоением значения переменной). Для таких ситуаций и создан XCom (cross-communication). Механизм работает через базу данных. По сути это аналог key-value базы, один оператор записывает значение под определённым ключом, а другой оператор может получить это значением, используя этот ключ. Не рекомендуется таким способом передавать большие сообщения, т.к. это требует дополнительных накладных расходов.
В этом разделе можно увидеть все существующие сообщения, созданные операторами.
Если я запускаю web server не на локальной машине, нужно ли мне как то конфигурировать airflow, или все должно работать сразу по адресу моего сервера http://my_ip:8080? У меня что-то не работает.
Позже в этом курсе будет отдельный урок по деплою Airflow на проде. Сейчас же можно пойти двумя путями: airflow webserver -H 0.0.0.0 -p 8080 или запустить Airflow локально, и проксировать запросы через nginx.
Если в Variables значении ключа докинуть постфикс _secret, то переменные хранятся в закрытом виде ;)
Здравствуйте! В airflow.cfg изменил параметр: load_examples = False Но рестарт не проходит. Команда airflow db reset Результат airflow: command not found Что нужно сделать чтоб эта команда выполнилась?
Добрый день! Если вы видите сообщение о том, что команда airflow не найдена, то скорее всего вам необходимо активировать виртуальное окружение в которое вы устанавливали Apache Airflow.
Да, выполнив такие команды в терминале: cd airflow source .venv/bin/activate смог запуска команды airflow
После того как терминал начал понимать команды, я запустил команду запуска шедулера: airflow scheduler Получаю такое сообщение: [2023-04-06 18:59:43,589] {scheduler_job.py:1247} INFO - Starting the scheduler [2023-04-06 18:59:43,590] {scheduler_job.py:1252} INFO - Processing each file at most -1 times [2023-04-06 18:59:43,681] {dag_processing.py:250} INFO - Launched DagFileProcessorManager with pid: 370185 [2023-04-06 18:59:43,684] {scheduler_job.py:1834} INFO - Resetting orphaned tasks for active dag runs [2023-04-06 18:59:43,779] {settings.py:54} INFO - Configured default timezone Timezone('UTC') [2023-04-06 19:04:43,767] {scheduler_job.py:1834} INFO - Resetting orphaned tasks for active dag runs [2023-04-06 19:09:43,803] {scheduler_job.py:1834} INFO - Resetting orphaned tasks for active dag runs Последнее сообщение выводится каждые 5 минут. Почему выполнение команды не заканчивается? Ожидал, что после выполнения этой команды, терминал вернется в с вое исходное состояние, то есть даст вводить другие команды
Не заканчивается потому что планировщик продолжает работу. Чтобы запустить его в фоне можно воспользоваться процесс-менеджерами типа systemd или supervisord.
Savva 5 Май 2021
"Я не рекомендую в DAG коде хранить пароли и секретные ключа..." - тут опечатка