2016-09-08 2 views
3

Ich bin neu im Luftstrom. Ich versuche, Luftstrom-Scheduler als Daemon-Prozess auszuführen, aber der Prozess lebt nicht länger. Ich habe "LocalExecutor" in airflow.cfg Datei konfiguriert und lief für Start-Scheduler folgenden Befehl ein. (I Google Compute Engine verwende und Server über Kitt Zugriff)Wie wird der Luftstrom-Scheduler als Daemon-Prozess ausgeführt?

airflow scheduler --daemon --num_runs=5 --log-file=/root/airflow/logs/scheduler.log 

Wenn ich diesen Befehl ausgeführt, Luftstrom-Scheduler startet und ich kann die airflow-scheduler.pid Datei in meinem Airflow Home Folder sehen, aber der Prozess lebt nicht länger. Wenn ich die Sitzung in Putty schließe und den Server erneut verbinde, kann ich den Scheduler-Prozess nicht finden. Fehle ich etwas? Wie führe ich Scheduler als Daemon-Prozess aus?

Antwort

2

--num-runs=5 wird Scheduler Task Instanzen 5 mal ausführen. Sie können diese Argumente entfernen, damit der Scheduler lange ausgeführt wird.

Idealerweise sollten Sie diesen Scheduler unter dem Supervisor ausführen. Wenn der Prozess abstürzt/gestoppt wurde, wird er erneut ausgeführt.

1

Sie können systemd oder Emporkömmling verwenden, wie hier beschrieben:

https://github.com/apache/incubator-airflow/tree/master/scripts/systemd https://github.com/apache/incubator-airflow/tree/master/scripts/upstart

Hier die Anweisungen sind nur für den Fall, wenn Links in Zukunft brechen.

Die bereitgestellten Systemd-Dateien werden auf RedHat-basierten Systemen getestet. Kopieren (oder verknüpfen) Sie sie zu/usr/lib/systemd/system und kopieren Sie die airflow.conf nach /etc/tmpfiles.d/ oder /usr/lib/tmpfiles.d/. Durch das Kopieren der airflow.conf wird sichergestellt, dass/run/airflow mit dem richtigen Besitzer und Berechtigungen erstellt wurde (0755 airflow airflow)

Sie können dann die verschiedenen Server starten, indem Sie systemctl start verwenden. Aktivieren der Dienste kann durch die Ausgabe von

systemctl enable [service]

standardmäßig die Umgebungskonfiguration auf/etc/sysconfig/Luftstrom durchgeführt werden. Sie können die "Luftstrom" -Datei in dieses Verzeichnis kopieren und nach Ihren Wünschen anpassen. Stellen Sie sicher, dass Sie die Variable SCHEDULER_RUNS angeben.

Mit einigen kleinen Änderungen funktionieren sie wahrscheinlich auf anderen System-Systemen.

Sie können unter Konfigurationsdateien bereitgestellt modify Ihrer Umgebung

Inhalt der Datei/etc/sysconfig/Luftstrom Datei

# This file is the environment file for Airflow. Put this file in /etc/sysconfig/airflow per default 
# configuration of the systemd unit files. 
# 
# AIRFLOW_CONFIG= 
# AIRFLOW_HOME= 
# 
# required setting, 0 sets it to unlimited. Scheduler will get restart after every X runs 
SCHEDULER_RUNS=5 

Inhalt von /etc/tmpfiles.d/airflow.conf zu reflektieren oder /usr/lib/tmpfiles.d/airflow.conf

Datei

D /run/airflow 0755 airflow airflow

Inhalt /usr/lib/systemd/system/airflow-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/sysconfig/airflow 
User=airflow 
Group=airflow 
Type=simple 
ExecStart=/bin/airflow scheduler -n ${SCHEDULER_RUNS} 
KillMode=process 
Restart=always 
RestartSec=5s 

[Install] 
WantedBy=multi-user.target 
+0

Da die Links in Zukunft brechen können, wäre es sehr nützlich sein, dass Sie die Informationen enthalten, die in dieser Frage zu beantworten relevant ist Ihre Antworten. – cavpollo

+1

Danke für die Rückmeldung, cavpollo. Ich habe alle relevanten Informationen hinzugefügt. –

Verwandte Themen