Apache Airflow (ou simplement Airflow) est une plateforme permettant de créer, planifier et surveiller des workflows par programmation. Il peut être utilisé pour concevoir des workflows sous forme de Graphes Orientés Acycliques (DAGs) de tâches et définir un pipeline de tâches automatisé à exécuter les unes après les autres.
Ce guide rapide, étape par étape, explique comment utiliser Airflow en association avec Spark pour exécuter automatiquement un workflow sur Qarnot.
Si une autre version vous intéresse, veuillez nous envoyer un courriel à qlab@qarnot.com.
Avant de démarrer un calcul avec le SDK Python, quelques étapes sont nécessaires :
Note : En plus du SDK Python, Qarnot fournit des SDK C# et Node.js ainsi qu'une ligne de commande.
Ce tutoriel présente comment exécuter un workflow Airflow sur Qarnot depuis votre ordinateur. Le workflow est le suivant :
Toutes ces étapes seront exécutées successivement sans aucune intervention manuelle de l'utilisateur.
Avant d'aller plus loin, vous devez configurer votre environnement de travail pour qu'il contienne les fichiers suivants, téléchargeables ici :
config
: contient les fichiers de configuration de Qarnot et de loggingpython_local_logging.conf
qarnot.conf
(voir ci-dessous)custom_operators
: scripts développés par Qarnot et nécessaires à notre workflow Airflowqarnot_utils
qarnot_operators.py
dags
: contient le script qui définit le DAG que nous allons exécuterdag_spark.py
(voir ci-dessous)logs
: répertoire où seront stockés les logs Python et Airflowspark-resources
: fichiers texte d'entrée de l'Iliade et de l'Iliade concaténée 100 foisapps
iliad.txt
iliad100.txt
Une fois que vous avez téléchargé tous les fichiers nécessaires, suivez les étapes ci-dessous pour vous assurer d'avoir tout ce dont vous avez besoin.
Activez votre environnement virtuel Python et assurez-vous que le SDK Qarnot y est installé. Si vous avez des doutes sur la marche à suivre, vous pouvez consulter la documentation sur l'installation du SDK pour des étapes simples à suivre.
Installez ensuite Airflow et ses dépendances en exécutant la commande suivante : pip install apache-airflow['cncf.kubernetes']
Ajoutez votre clé publique SSH à la place de <<<MY PUBLIC SSH KEY>>>
dans dags/dag_spark.py
.
Ajoutez votre jeton secret dans config/qarnot.conf
à la place de <<<MY_SECRET_TOKEN>>>
.
Déplacez le dossier custom_operators/
vers les site-packages de votre environnement virtuel. Assurez-vous de remplacer <<<VENV>>>
par le nom de votre environnement virtuel et le X
de pythonX
par votre version de Python. Note : Il est recommandé de travailler à l'intérieur d'environnements virtuels Python pour garantir la reproductibilité et maintenir les environnements de travail propres.
mv custom_operators/ <<<VENV>>>/lib/pythonX/site-packages/
Définissez votre répertoire Airflow principal (Airflow home) comme votre répertoire actuel : export AIRFLOW_HOME="$PWD"
Initialisez Airflow : airflow db init
Construisez votre DAG nommé my_first_dag
: python3 dags/dag_spark.py
Lancez le workflow Airflow sur Qarnot avec la date de début souhaitée : airflow dags backfill my_first_dag -s 2000-01-01
Quelques notes à retenir :
--reset-dagruns
pour éviter certains conflits liés à l'exécution précédente.À tout moment, vous pouvez surveiller l'état de votre tâche sur notre plateforme ainsi que depuis votre terminal local.
Vous pouvez visualiser les sorties dans votre bucket de résultats airflow-spark-out
. Vous y trouverez le nombre de mots contenus à la fois dans l'Iliade et dans la version concaténée 100 fois, ainsi que différents logs d'exécution.
C'est tout ! Si vous avez des questions, veuillez contacter qlab@qarnot.com et nous vous aiderons avec plaisir !