web-dev-qa-db-fra.com

Comment exécuter Airflow sous Windows

Les instructions habituelles pour exécuter Airflow ne s'appliquent pas dans un environnement Windows:

# airflow needs a home, ~/airflow is the default,
# but you can lay foundation somewhere else if you prefer
# (optional)
export AIRFLOW_HOME=~/airflow

# install from pypi using pip
pip install airflow

# initialize the database
airflow initdb

# start the web server, default port is 8080
airflow webserver -p 8080

L'utilitaire Airflow n'est pas disponible dans la ligne de commande et je ne le trouve pas ailleurs à ajouter manuellement.

15
Rafael

Vous pouvez activer bash dans Windows et suivre le didacticiel tel quel .J'ai réussi à me lancer et à fonctionner avec succès ci-dessus.

Une fois que vous avez terminé l’installation, éditez airflow.cfg pour que toutes vos configurations pointent quelque part dans votre système Windows plutôt que lxss (Ubuntu) car il existe des bogues autour d’Ubuntu qui ne montrent pas les fichiers écrits par le système Windows.

1
Ayush K Singh

Au lieu d'installer Airflow via pip, téléchargez le fichier ZIP sur le GitHub du projet Airflow , décompressez-le et, dans son dossier, exécutez python setup.py install sur la ligne de commande. Des erreurs ERROR - 'module' object has no attribute 'SIGALRM' se produiront, mais jusqu'ici cela n'a eu aucun impact sur les fonctions d'Airflow.

Avec cette méthode, airflow util ne sera pas disponible en tant que commande . Pour contourner le problème, utilisez le fichier [current folder]\build\scripts-2.7\airflow, qui est le script python de airflow util.

Une autre solution consiste à ajouter à la variable System PATH un lien vers un fichier de commandes exécutant airflow (airflow.bat):

python C:\path\to\airflow %*

À partir de ce moment, le tutoriel peut être suivi normalement:

airflow init
airflow webserver -p 8080

Je n'ai pas vérifié dans quelle mesure ni si les DAG d'Airflow fonctionnaient sous Windows.

10
Rafael

Malheureusement, la réponse à cette question semble être "Non" en décembre 2015 - voir https://github.com/airbnb/airflow/issues/709 . C'est à cause du passage au gunicorn. gunicorn peut obtenir un support Windows dans R18 .

6
Samir Seth

Trois options de base

J'ai parcouru quelques itérations de ce problème et les ai documentées au fur et à mesure. Les trois choses que j'ai essayées étaient:

  1. Installez Airflow directement dans Windows 10 - Cette tentative a échoué.
  2. Installez Airflow dans Windows 10 WSL avec Ubuntu - Cela a très bien fonctionné. Notez que WSL est un sous-système Windows pour Linux, que vous pouvez obtenir gratuitement dans le magasin Windows.
  3. Installez Airflow sous Windows 10 via Docker + Centos - Cela a également très bien fonctionné.

Notez que si vous voulez le faire fonctionner en tant que service Linux, cela n’est pas possible pour l’option numéro 2. C’est possible pour l’option numéro 3, mais je ne l’ai pas fait car cela nécessite l’activation de conteneurs privilégiés dans le menu fixe (que je souhaite pas au courant de quand j'ai commencé). De plus, faire fonctionner un service dans Docker est un peu paradoxal, car chaque conteneur doit de toute façon être un processus/une seule unité de responsabilité.

Description détaillée de l'option # 2 - WSL

Si vous jouez pour l'option 2, les étapes de base sont les suivantes:

  • Obtenez WSL Ubuntu installé et ouvert.
  • Vérifiez qu’il est livré avec python 3.6.5 ou plus ("version python3").
  • En supposant que ce soit toujours le cas, ajoutez ces packages pour que l'installation de PIP fonctionne .
    • Sudo apt-get install software-properties-common
    • Univers Sudo apt-add-repository
    • Sudo apt-get update
  • Installez le pip avec:
    • Sudo apt-get install python-pip
  • Exécutez les 2 commandes suivantes pour installer le flux d’air:
    • exportation SLUGIFY_USES_TEXT_UNIDECODE = yes
    • pip installer Apache-airflow
  • Ouvrez un nouveau terminal (j'ai été surpris, mais cela semblait être nécessaire).
  • Lancez le DB de flux d’air:
    • flux d'air initdb

Après cela, vous devriez être prêt à partir! Le blog contient plus de détails sur bon nombre de ces étapes et sur des délais approximatifs quant à la durée de configuration du WSL, etc. - donc si vous avez du mal à plonger, il vous en coûtera davantage.

6

Vous pouvez le faire en utilisant Cygwin . Cygwin est un shell en ligne de commande qui s'exécute sous Windows et émule Linux. Ainsi, vous serez en mesure d'exécuter les commandes,

# airflow needs a home, ~/airflow is the default,
# but you can lay foundation somewhere else if you prefer
# (optional)
export AIRFLOW_HOME=~/airflow

# install from pypi using pip
pip install Apache-airflow

# initialize the database
airflow initdb

# start the web server, default port is 8080
airflow webserver -p 8080

Remarque 1: Si vous utilisez Cygwin sur l'ordinateur fourni par votre entreprise, vous devrez peut-être exécuter l'application Cygwin en tant qu'administrateur. Vous pouvez le faire avec le tutoriel de Microsoft ci-dessous .

Note 2: Si comme moi vous êtes derrière un proxy (à votre travail ou quel que soit votre proxy), vous devez définir deux variables d’environnement pour que pip fonctionne sur la ligne de commande; dans ce cas, Cygwin. Vous pouvez suivre cette réponse StackOverflow } _ pour plus de détails. J'ai donc défini les deux variables d'environnement suivantes sur ma machine Windows,

// Note this first entry has an S in HTTPS and the other entry is just regular HTTP. Don't forget that distinction in the key name and in the url of the value.
HTTPS_PROXY=https://myUsernameGoesHere:myPasswordGoesHere@yourProxyHostNameGoesHere:yourProxyPortNumberGoesHere

HTTP_PROXY=http://myUsernameGoesHere:myPasswordGoesHere@yourProxyHostNameGoesHere:yourProxyPortNumberGoesHere

Plus de travail: Apparemment, tout le travail ci-dessus a été vain car Airflow ne fonctionnera pas sous Windows. S'il vous plaît voir ce StackOverflow post . Les étapes ci-dessus vous permettront d'utiliser Pip cependant.

Alternativement, et je sais que cela peut ou non être vu comme étant exécuté sur Windows, vous pouvez installer un client de machine virtuelle tel que Virtualbox d'Oracle ou VMware's Workstation , puis configurez la version Linux de votre choix, telle que Ubuntu Desktop , puis exécutez Linux normalement. Si vous avez besoin d'étapes plus détaillées à cet effet, vous pouvez suivre cette AskUbuntu de la communauté Stack Exchange et répondre à la question {{ here } _ _.

Alternativement (2), vous pourriez créer un compte AWS , puis configurer une instance ec2 simple sous Linux , puis ssh dans cette instance ec2 } _, puis exécutez toutes vos commandes à votre guise. AWS propose un niveau gratuit , vous devriez donc pouvoir le faire gratuitement. De plus, AWS est très bien documenté, il ne devrait donc pas être trop difficile de mettre en place un simple serveur Linux; J’estime qu’un débutant pourrait se faire en environ une heure.

1