Сервер планировщика потока воздуха не работает

Я работаю airflow scheduler команда, это работает. Однако я не могу настроить сервис планировщика потока воздуха.

Следующее является моим служебным кодом планировщика потока воздуха.

[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service rabbitmq-server.service
Wants=postgresql.service rabbitmq-server.service

[Service]
EnvironmentFile=/home/ubuntu/airflow
User=ubuntu
Group=ubuntu
Type=simple
ExecStart=/bin/airflow scheduler -n ${SCHEDULER_RUNS}
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

Однако это не работает, когда я запускаю планировщик потока воздуха. Я получаю следующую ошибку:

May 25 21:11:37 ip-11-210-11-108 systemd[1]: airflow-scheduler.service: Service hold-off time over, scheduling restart.
May 25 21:11:37 ip-11-210-11-108 systemd[1]: Stopped Airflow scheduler daemon.
-- Subject: Unit airflow-scheduler.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit airflow-scheduler.service has finished shutting down.
May 25 21:11:37 ip-11-210-11-108 systemd[1]: airflow-scheduler.service: Failed to load environment files: No such file or directory
May 25 21:11:37 ip-11-210-11-108 systemd[1]: airflow-scheduler.service: Failed to run 'start' task: No such file or directory
May 25 21:11:37 ip-11-210-11-108 systemd[1]: Failed to start Airflow scheduler daemon.
-- Subject: Unit airflow-scheduler.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit airflow-scheduler.service has failed.
--
-- The result is failed.
May 25 21:11:37 ip-11-210-11-108 systemd[1]: airflow-scheduler.service: Unit entered failed state.
May 25 21:11:37 ip-11-210-11-108 systemd[1]: airflow-scheduler.service: Failed with result 'resources'.

У меня нет опыта systemd. Что такое SCHEDULER_RUNS? Как настроить его?

1
задан 26 May 2017 в 00:38

2 ответа

В Вашем systemd файле существует эта строка

EnvironmentFile=/home/ubuntu/airflow

, Который, как предполагается, указывает на EnvironmentFile, который используется systemd для содержания некоторых переменных. Похоже, что у Вас есть он указывающий на корневой каталог потока воздуха.

Это должно указать на файл, названный airflow, внутри который должна быть переменная для ВЫПОЛНЕНИЙ ПЛАНИРОВЩИКА. Посмотрите файл потока воздуха здесь: https://github.com/apache/incubator-airflow/tree/master/scripts/systemd

у Вас также есть эта ошибка: Не удалось работать, 'запускают' задачу: Никакой такой файл или каталог

Это касается этой строки: ExecStart=/bin/airflow scheduler -n ${SCHEDULER_RUNS}

то, Что строка говорит для выполнения /bin/airflow, который я принимаю, не существует на машине. Это находится, вероятно, в /usr/local/bin/airflow или где-нибудь как этот. Можно работать which airflow для наблюдения фактического установленного местоположения. Вы смогли добавлять, что символьная ссылка для него так/bin/airflow указывает на Ваше фактическое местоположение, но никакую потребность сверхусложнить его, по крайней мере, получить его работающий сначала. Просто проверенный, по-видимому символьные ссылки действительно работают в systemd https://bugzilla.redhat.com/show_bug.cgi? id=955379

0
ответ дан 8 December 2019 в 05:15

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

Я действительно находил решение, которое работает на меня на Ubuntu 18.04 и 18.10

Я обеспечил полную рецензию того, как установить Поток воздуха и PostgreSQL на бэкенде на ссылке здесь.

от более поздней части моей статьи:

По существу это сводится к внесению определенного изменения в файл потока-воздуха-scheduler.system.

Это - один из 'глюков' для реализации на Ubuntu. Команда разработчиков, которая создала Airflow, разработала его для работы другого распределения Linux и поэтому существует маленькое (но очень важно) изменение, которое должно быть внесено так, чтобы Airflow автоматически работал, когда сервер будет работать. Значение по умолчанию systemd сервисные файлы первоначально похоже на это:

[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service mysql.service redis.service rabbitmq-server.service
Wants=postgresql.service mysql.service redis.service rabbitmq-server.service

[Service]
EnvironmentFile=/etc/sysconfig/airflow
User=airflow
Group=airflow
Type=simple
ExecStart=/bin/airflow scheduler
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

Однако это не будет работать, поскольку протокол ‘EnvironmentFile’ не летит на Ubuntu 18. Вместо этого прокомментируйте ту строку и включите:

Environment="PATH=/home/ubuntu/anaconda3/envs/airflow/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Вы, вероятно, захотите создать systemd сервисный файл, по крайней мере, для Планировщика Потока воздуха и также вероятно, веб-сервера, если Вы захотите, чтобы UI запустился автоматически также. Действительно мы действительно хотим обоих в этой реализации, таким образом, мы будем создавать два файла, поток-воздуха-scheduler.service и поток-воздуха-webserver.service. Оба из которых будут скопированы в/etc/systemd/system папку. Это следующие:


поток-воздуха-scheduler.service

[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service mysql.service redis.service rabbitmq-server.service
Wants=postgresql.service mysql.service redis.service rabbitmq-server.service

[Service]
#EnvironmentFile=/etc/default/airflow
Environment="PATH=/home/ubuntu/anaconda3/envs/airflow/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
User=airflow
Group=airflow
Type=simple
ExecStart=/home/ubuntu/anaconda3/envs/airflow/bin/airflow scheduler
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target
#airflow-webserver.service

поток-воздуха-webserver.service

[Unit]
Description=Airflow webserver daemon
After=network.target postgresql.service mysql.service redis.service rabbitmq-server.service
Wants=postgresql.service mysql.service redis.service rabbitmq-server.service

[Service]
#EnvironmentFile=/etc/default/airflow
Environment="PATH=/home/ubuntu/anaconda3/envs/airflow/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
User=airflow
Group=airflow
Type=simple
ExecStart=/home/ubuntu/anaconda3/envs/airflow/bin/airflow webserver -p 8085 --pid /home/ubuntu/airflow/airflow-webserver.pid
Restart=on-failure
RestartSec=5s
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Наконец, с обоими из тех файлов, скопированных в/etc/systemd/systemd папку посредством копии суперпользователя, управляют sudo CP, пора поразить воспламенение:

sudo systemctl enable airflow-scheduler
sudo systemctl start airflow-scheduler
sudo systemctl enable airflow-webserver
sudo systemctl start airflow-webserver
0
ответ дан 8 December 2019 в 05:15

Другие вопросы по тегам:

Похожие вопросы: