Skalieren mit Sellerie¶
CeleryExecutor
ist eine der Möglichkeiten, wie Sie die Anzahl der Mitarbeiter skalieren können. Damit dies funktioniert, müssen Sie ein Sellerie-Backend (RabbitMQ, Redis, …) einrichten und Ihre airflow.cfg
ändern, um den Executor-Parameter aufCeleryExecutor
zu verweisen und die zugehörigen Sellerie-Einstellungen bereitzustellen.
Weitere Informationen zum Einrichten eines Sellerie-Brokers finden Sie in der ausführlichen Sellerie-Dokumentation zu diesem Thema.
Hier sind einige zwingende Anforderungen an Ihre Mitarbeiter:
-
airflow
muss installiert werden, und die CLI muss sich im Pfad befinden -
Die Luftstromkonfigurationseinstellungen sollten im gesamten Cluster homogen sein
-
Operatoren, die auf dem Worker ausgeführt werden, müssen ihre Abhängigkeiten in diesem Kontext haben. Wenn Sie beispielsweise
HiveOperator
verwenden, muss die Hive-CLI auf dieser Box installiert sein, oder wenn SieMySqlOperator
verwenden, muss die erforderliche Python-Bibliothek inPYTHONPATH
verfügbar sein. -
Der Worker muss Zugriff auf
DAGS_FOLDER
haben, und Sie müssensynchronisieren Sie die Dateisysteme mit Ihren eigenen Mitteln. Ein übliches Setup wäre, Ihren DAGS_FOLDER in einem Git-Repository zu speichern und ihn mit Chef, Puppet, Ansible oder was auch immer Sie zum Konfigurieren von Maschinen in Ihrer Umgebung verwenden, auf Computern zu synchronisieren. Wenn alle Ihre Boxen einen gemeinsamen Einhängepunkt haben, sollte es auch funktionieren, yourpipelines-Dateien dort freizugeben
Um einen Worker zu starten, müssen Sie Airflow einrichten und den workersubcommand starten
airflow worker
Ihr Mitarbeiter sollte anfangen, Aufgaben aufzunehmen, sobald er in diese Richtung gefeuert wird.
Beachten Sie, dass Sie auch “Sellery Flower” ausführen können, eine Web-Benutzeroberfläche, die auf Sellerie basiert, um Ihre Mitarbeiter zu überwachen. Sie können den Shortcut-Befehl airflow flower
verwenden, um einen Flower-Webserver zu starten.
Bitte beachten Sie, dass die flower
Python-Bibliothek bereits auf Ihrem System installiert sein muss. Der empfohlene Weg ist, das Airflow Sellerie Bundle zu installieren.
pip install 'apache-airflow'
Einige Vorbehalte:
-
Stellen Sie sicher, dass Sie ein datenbankgestütztes Ergebnis-Backend verwenden
-
Stellen Sie sicher, dass Sie ein Sichtbarkeitszeitlimit festlegen, das die ETA Ihrer am längsten laufenden Aufgabe überschreitet
-
Aufgaben können Ressourcen verbrauchen. Stellen Sie sicher, dass Ihr Worker über genügend Ressourcen verfügt, um worker_concurrency-Aufgaben auszuführen
-
Warteschlangennamen sind auf 256 Zeichen beschränkt, aber jedes Broker-Backend kann seine eigenen Einschränkungen haben