web-dev-qa-db-fra.com

Configuration du flux d'air

Je suis un débutant à Airflow. J'essaie de configurer le mode distribué du flux d'air à l'aide de Celery Executor en renvoyant cet article https://stlong0521.github.io/20161023%20-%20Airflow.html

Avant d'entrer dans les détails de la spécification, je voudrais confirmer que J'ai installé PostgreSQL sur une instance séparée .

La spécification de la configuration est détaillée ci-dessous:

Ordinateur de base/serveur Airflow

  • Python 3.5
    • débit d'air (AIRFLOW_HOME = ~/débit d'air)
    • céleri
    • psycogp2
  • RabbitMQ

Configurations effectuées dans airflow.cfg :

sql_alchemy_conn = postgresql+psycopg2://username:[email protected]:5432/airflow
executor = CeleryExecutor
broker_url = amqp://username:[email protected]:5672//
celery_result_backend = db+postgresql://username:[email protected]:5432/airflow

Tests effectués:

RabbitMQ is running
Can connect to PostgreSQL and have confirmed that Airflow has created tables
Can start and view the webserver (including custom dags)

Ordinateur travailleur Airflow

Est-ce que les éléments suivants sont installés:

  • Python 3.5 avec
    • débit d'air (AIRFLOW_HOME = ~/débit d'air)
    • céleri
  • psycogp2

Les configurations effectuées dans airflow.cfg sont exactement les mêmes que dans le serveur:

sql_alchemy_conn = postgresql+psycopg2://username:[email protected]:5432/airflow
executor = CeleryExecutor
broker_url = amqp://username:[email protected]:5672//
celery_result_backend = db+postgresql://username:[email protected]:5432/airflow

Sortie des commandes exécutées sur la machine de travail:

Lorsque vous exécutez une fleur d'air:

[2018-02-19 14:58:14,276] {__init__.py:57} INFO - Using executor CeleryExecutor
[2018-02-19 14:58:14,360] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python3.5/lib2to3/Grammar.txt
[2018-02-19 14:58:14,384] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python3.5/lib2to3/PatternGrammar.txt
[I 180219 14:58:15 command:139] Visit me at http://0.0.0.0:5555
[I 180219 14:58:15 command:144] Broker: amqp://username:[email protected]:5672//
[I 180219 14:58:15 command:147] Registered tasks: 
    ['celery.accumulate',
     'celery.backend_cleanup',
     'celery.chain',
     'celery.chord',
     'celery.chord_unlock',
     'celery.chunks',
     'celery.group',
     'celery.map',
     'celery.starmap']
[I 180219 14:58:15 mixins:224] Connected to amqp://username:[email protected]:5672//

Je passe le dag dans la machine Airflow Core et j’ai également copié les exemples de données (feuilles Excel) que le dag traitera sur la même machine.

Mon journal de travail raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command 'airflow run dag_name_x task_name_xx 2018-02-19T10:15:41.657243 --local -sd /home/Distributedici/airflow/dags/sample_data_xx.py' returned non-zero exit status 1

Maintenant ma requête est

1) Dois-je également copier le dossier dag sur l'ordinateur de travail

2) À l'heure actuelle, je n'ai pas copié le dossier dag sur l'ordinateur de travail et je ne peux pas voir le processus de travail se charger de la tâche.

Indiquez-moi s'il vous plaît où je fais une erreur et comment faire en sorte que le processus de travail le reprenne.

4
Soundar Raj

Vos fichiers de configuration ont l'air bien. Comme vous le soupçonniez, tous les travailleurs exigent en effet une copie du dossier DAG. Vous pouvez utiliser quelque chose comme git pour les maintenir synchronisés et à jour.

1
Daniel Huang

Certains des plus gros problèmes avec Airflow concernent le déploiement et la synchronisation des fichiers et des plug-ins DAG sur vos nœuds de planificateur Airflow, de serveur Web Airflow et de travailleurs Celery.

Nous avons créé un projet open source appelé Astronomer Open qui automatise un flux dockerisé, Celery et PostgreSQL avec quelques autres bonus intégrés. installer.

Par exemple, voici le fichier de flux d'air Airflow: https://github.com/astronomerio/astronomer/blob/master/docker/platform/airflow/Dockerfile

Et les docs: https://open.astronomer.io/

Divulgation complète: Ceci est un projet auquel je contribue au travail - nous proposons une édition payante entreprise qui fonctionne également sur Kubernetes (docs) . Cela dit, Open Edition est totalement gratuit.

2
Taylor Edmiston