Воздушный поток: что точно делают «airflow webserver», «airflow scheduler» и «airflow worker»? - PullRequest
0 голосов
/ 27 июня 2018

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

Я понимаю, что такое 3 процесса, я просто не понимаю, что происходит, когда я их запускаю. Что именно происходит, когда я запускаю одну из команд? Могу ли я где-нибудь потом увидеть, что они бегут? И если я выполню одну из этих команд, перезапишет ли это старые веб-серверы / планировщики / работники или добавит новую?

Более того, если я, например, запускаю airflow webserver, на экране отображаются некоторые события, которые происходят. Могу ли я просто выйти из этого, нажав CTRL + C? Потому что, когда я делаю это, он говорит такие вещи, как Worker exiting и Shutting down: Master. Значит ли это, что я все выключаю? Как еще тогда выйти из экрана веб-сервера?

1 Ответ

0 голосов
/ 27 июня 2018

Каждый процесс выполняет то, для чего он создан, во время работы (веб-сервер предоставляет пользовательский интерфейс, планировщик определяет, когда нужно что-то запускать, и рабочие фактически запускают задачи).

Я думаю, что вы путаетесь в том, что вы можете видеть их как команды, которые говорят что-то вроде "службы Airflow", чтобы сделать что-то, но каждая из них является отдельной командой, которая запускает процессы для выполнения каких-либо задач. то есть. Начиная с нуля, вы запускаете airflow scheduler: теперь у вас работает планировщик. Запустите airflow webserver: теперь у вас запущен веб-сервер. Когда вы запускаете airflow webserver, он запускает приложение с флягой Python. Пока этот процесс запущен, веб-сервер, если вы убьете команду, отключится.

Все три должны работать для воздушного потока в целом (при условии, что вы используете исполнителя, которому нужны рабочие). У вас должен быть только один запущенный планировщик, но если вы будете запускать два процесса airflow webserver (игнорируя конфликты портов, у вас будет два запущенных http-сервера, использующих одну и ту же базу данных метаданных. Рабочие могут немного отличаться в том, что вы можете чтобы работало несколько рабочих процессов, чтобы вы могли выполнять больше задач одновременно.Таким образом, если вы создадите несколько процессов airflow worker, вы получите множество процессов, получающих задания из очереди, выполняющих их и обновляющих экземпляр задачи со статусом задание.

Когда вы запустите любую из этих команд, вы увидите вывод stdout и stderr в консоли. Если вы запускаете их как демон или фоновый процесс, вы можете проверить, какие процессы выполняются на сервере.

Если вы нажмете Ctrl + C, вы отправите сигнал о прекращении процесса. В идеале для производственного кластера воздушного потока у вас должен быть какой-то руководитель, который следит за процессами и гарантирует, что они всегда работают. Локально вы можете запускать команды на переднем плане отдельных оболочек, сводить их к минимуму и просто сохранять их работающими, когда они вам нужны. Или запустите их как фоновый демон с аргументом -D. т.е. airflow webserver -D.

...