Apache Airflow ist ein solches Tool, mit dem Sie effizient sicherstellen können, dass Ihr Workflow auf Kurs bleibt. Es ist ein Open-Source-Daten-Workflow-Managementsystem, mit dem Sie einfache bis komplexe Prozesse automatisieren können, die hauptsächlich in Python geschrieben sind, und das über eine umfangreiche Web-Benutzeroberfläche verfügt, um eventuell auftretende Probleme zu visualisieren, zu überwachen und zu beheben. Dieses Tutorial ist eine Schritt-für-Schritt-Anleitung zum Installieren, Konfigurieren und Einrichten von Airflow sowie zum Planen von Python-Skripts mit Apache Airflow.

Installation und Einrichtung

Beginnen wir mit der Einrichtung von Airflow auf unserer Workstation, damit wir die von uns erstellten Pipelines testen und ausführen können. Es gibt mehrere Möglichkeiten, Apache Airflow auf dem eigenen System einzurichten und auszuführen. In diesem Tutorial richten wir Airflow auf Docker ein. Wenn Sie also Docker und Docker Compose noch nicht auf Ihrem System installiert haben, laden Sie sie von ihren jeweiligen Websites herunter.

Als Nächstes laden wir (in einem separaten Ordner) eine Docker Compose-Datei herunter, die von der Airflow-Community entwickelt wurde und alle von Airflow benötigten Dienste beschreibt. Dies schafft im Wesentlichen eine viel einfachere Umgebung. Sie können es entweder mit diesem Link herunterladen oder den folgenden Curl-Befehl verwenden:

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.2.4/docker-compose.yaml'

Und dann sollten Sie eine Datei namens docker-compose.YAML erhalten. Diese Datei enthält mehrere Dienstdefinitionen, darunter einige zum Bereitstellen von Airflow auf Docker Compose.

Bevor wir Airflow zum ersten Mal starten, müssen wir eine Umgebung vorbereiten. Lassen Sie uns einen Ordner erstellen, an dem Airflow arbeiten wird, und darin entweder drei Ordner erstellen – dags, plugins und logs:

mkdir ./dags ./plugins ./logs Or mkdir dags plugins logs

Ihre Ordnerstruktur sollte wie folgt aussehen:

.
├── dags
├── docker-compose.yaml
├── logs
└── plugins

3 directories, 1 file

Wenn Sie Mac oder Windows verwenden, müssen Sie als Nächstes einige Umgebungsvariablen exportieren, um sicherzustellen, dass die Benutzer- und Gruppenberechtigungen zwischen diesen Ordnern von Ihrem Host und den Ordnern in Ihren Containern gleich sind.

echo -e "AIRFLOW_UID=$(id -u)" > .env

Airflow initialisieren

Nachdem die Ordner erstellt und die Berechtigungen festgelegt wurden, initialisieren wir unsere Airflow-Instanz. Führen Sie dazu Folgendes aus:

docker-compose up airflow-init

Dieser Dienst ist dafür verantwortlich, airflow DB init oder airflow DB upgrade auszuführen und dann den Benutzer „airflow“ mit dem Passwort „airflow“ zu erstellen, das ist genau das, was Sie hier aus der Ausgabe sehen können. Dadurch würden auch die erforderlichen Container zum Ausführen der Airflow-Server erstellt.

schedule-python-scripts-with-apache-airflow

Jetzt müssen wir nur noch den Befehl ausführen:

docker-compose up

Dieser Befehl führt alle Dienste aus, die in der Docker-Compose-Datei angegeben sind – den Scheduler, den Webserver, den Worker, Readies und so weiter.

Um zu überprüfen, ob die Docker-Container betriebsbereit sind, können Sie ein neues Terminal öffnen und den folgenden Befehl ausführen:

docker ps

Es sollte in etwa so aussehen:

schedule-python-scripts-with-apache-airflow

Jetzt können wir endlich unsere Airflow-Instanz verwenden. Öffnen Sie dazu einen Webbrowser und gehen Sie zu https://localhost:8080 oder http://127.0.0.1:8080/. Wenn Sie dort eine Anmeldeseite sehen, bedeutet dies, dass es erfolgreich funktioniert hat!

Um sich anzumelden, können Sie die ID und das Passwort eingeben, die Sie vom ursprünglichen Init-Befehl erhalten haben, nämlich „airflow“ und „airflow“. Danach werden Sie mit dem Haupt-Dashboard Ihrer Airflow-Instanz im Docker begrüßt, das in etwa so aussehen würde:

schedule-python-scripts-with-apache-airflow

Und das ist es! Jetzt können wir uns ansehen, wie Sie Python-Skripte mit Apache Airflow planen können

Planen Sie Python-Skripte

Um nun Python-Skripte mit Apache Airflow zu planen, öffnen Sie den dags-Ordner, in dem Ihr Airflow installiert ist, oder erstellen Sie dort einen Ordner namens „dags“. Dies ist der Ort, an dem sich alle Ihre Dags oder Python-Skripte befinden. Sobald Sie es haben, erstellen Sie dort eine Datei, die mit der Erweiterung .py endet (denken Sie daran, dass jeder dag die Erweiterung .py hat).

Der erste Schritt zum Erstellen eines Dags besteht darin, die richtigen Importe vorzunehmen. Öffnen Sie zunächst die gerade erstellte Datei (in meinem Fall crm-elastic-dag.py) und fügen Sie den folgenden Import hinzu:

from airflow import dag

Hier importieren wir die dag-Klasse, es ist ein wesentlicher Import, den Sie durchführen müssen, um zu sagen, dass diese Datei tatsächlich ein dag ist.

Der zweitwichtigste Import, den Sie zu Terminen machen müssen:

from airflow.utils.dates import days_ago

Dies ist wichtig, da eine Datenpipeline, wie Sie sehen werden, ein Startdatum und eine Uhrzeit erwartet, zu der wir sagen, dass die Planung der Datenpipeline beginnen soll.

Jetzt können wir damit beginnen, zu definieren, wie wir Python-Skripte mit Apache Airflow verwenden oder planen möchten. Ich habe einen Dag erstellt, der bereits einen Dag erstellt hat, der nur ein von mir erstelltes Python-Skript ausführt, das täglich ausgeführt wird. Sie können verstehen, wie ich das aus dem unten angegebenen Code gemacht habe:

from airflow.models import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.utils.dates import days_ago
from includes.vs_modules.test import hello

args = {
    'owner': 'Vincent Stevenson',
    'start_date': days_ago(1) # make start date in the past
}

#defining the dag object
dag = DAG(
    dag_id='crm-elastic-dag',
    default_args=args,
    schedule_interval='@daily' #to make this workflow happen every day
)

#assigning the task for our dag to do
with dag:
    hello_world = PythonOperator(
        task_id='hello',
        python_callable=hello,
        # provide_context=True
    )

Anstatt das Skript selbst einzuschließen, das ich verwenden möchte, habe ich es hier von einem anderen Dateispeicherort aus aufgerufen. Sie können hier sehen:

from includes import hello

Dies würde helfen, mehrere Skripte zu planen und ihre Art und Weise einfacher zu verwalten.

Das Skript, das ich plane, ist nur eine einfache Funktion, um bei jeder Ausführung Hallo auszugeben:

def hello():
    print('Hello!')

Nun, dies ist ein sehr einfaches Skript, aber sobald Sie die Dateistrukturen verstanden haben, können Sie damit beginnen, mehr Funktionsdefinitionen und zusätzliche Python-Skripte einzufügen, um Ihre eigentlichen Datenpipelines wirklich zu skalieren.

Nachdem Sie alle oben genannten Schritte durchgeführt haben, können Sie die Container endlich wieder starten und damit auf dem Airflow-Dashboard arbeiten. Führen Sie denselben Befehl aus, um die Server zu starten:

docker-compose up -d

Dies wird nicht viel Zeit in Anspruch nehmen, wenn Sie dies bereits getan haben. Es konfiguriert alles, lädt die Ebenen herunter und all das vom Docker-Hub usw. Sobald dies erledigt ist, können wir das Airflow-Dashboard erneut besuchen, um unseren Dag zu sehen.

Und wenn es erfolgreich funktioniert hat, sollten Sie Ihren Dag wie folgt auf dem Dashboard sehen können:

Hier können Sie darauf klicken, um zu sehen, was darin enthalten ist, und um es zu verwalten. Hier können Sie den kleinen Schalter in der oberen linken Ecke einschalten, um ihn zu aktivieren, und dann wäre es sein definierter Prozess. Auf dieser Seite können Sie auch den Prozess sehen, z. B. wann es gestartet wurde, Protokolle usw.

schedule-python-scripts-with-apache-airflow
schedule-python-scripts-with-apache-airflow

Und hier, wenn Sie den Protokollbereich besuchen, können Sie das „Hallo!“ sehen. Aussage, die wir geschrieben haben, die von dem externen Python-Skript gemacht wurde, das wir gemacht haben!

Letzte Worte

Wir hoffen, dass Ihnen dieses Tutorial zur Installation und Verwendung von Airflow gefallen hat. Jetzt haben Sie gelernt, wie Sie es installieren und Python-Skripte mit Apache Airflow planen. Beginnen Sie noch heute mit der Automatisierung und Optimierung Ihres Workflows! Wenn Sie Fragen haben, zögern Sie bitte nicht, uns jederzeit zu kontaktieren.

Wenn Sie als Data Scientist oder Engineer effizient arbeiten möchten, ist es wichtig, die richtigen Werkzeuge zu haben. Dedizierte Ressourcen zur Hand zu haben, ermöglicht es, sich wiederholende Prozesse agil durchzuführen. Es geht nicht nur darum, diese Prozesse zu automatisieren, sondern sie auch regelmäßig und konsistent durchzuführen. Dies kann alles sein, vom Extrahieren, Analysieren und Laden von Daten für den regelmäßigen Bericht Ihres Data-Science-Teams bis hin zum erneuten Trainieren Ihres maschinellen Lernmodells jedes Mal, wenn Sie neue Daten von Benutzern erhalten.