Apache AirFlow: как запланировать это на удаленных машинах - PullRequest
0 голосов
/ 15 января 2020

Я новичок в apache airflow. Не могли бы вы помочь мне понять, где / что я должен настроить для запуска DAG на удаленных компьютерах. Я использую celery_executor для выполнения кода на рабочих узлах, я не выполнял никаких настроек на рабочих узлах, я использую RabitMQ в качестве службы очереди и, похоже, я правильно настроил кластер Airflow.

Мой файл DAG :

"""
Code that goes along with the Airflow tutorial located at:
https://github.com/apache/airflow/blob/master/airflow/example_dags/tutorial.py
"""
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta


default_args = {
    'owner': 'Airflow',
    'depends_on_past': False,
    'start_date': datetime(2015, 6, 1),
    'email': ['airflow@example.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
    # 'queue': 'bash_queue',
    # 'pool': 'backfill',
    # 'priority_weight': 10,
    # 'end_date': datetime(2016, 1, 1),
}

dag = DAG('sample_date_print', schedule_interval='*/1 * * * *', default_args=default_args)

# t1, t2 and t3 are examples of tasks created by instantiating operators
t1 = BashOperator(
    task_id='print_date',
    bash_command='date',
    dag=dag)

t2 = BashOperator(
    task_id='sleep',
    bash_command='sleep 5',
    retries=3,
    dag=dag)

templated_command = """
    {% for i in range(5) %}
        echo "{{ ds }}"
        echo "{{ macros.ds_add(ds, 7)}}"
        echo "{{ params.my_param }}"
    {% endfor %}
"""

t3 = BashOperator(
    task_id='templated',
    bash_command=templated_command,
    params={'my_param': 'Parameter I passed in'},
    dag=dag)

t2.set_upstream(t1)
t3.set_upstream(t1)

Журналы:

{
  "host_name": "1f176162bc5e",
  "full_command": "['/usr/local/bin/airflow', 'tasks', 'run', 'sample_date_print', 'print_date', '2015-06-04T00:00:00+00:00', '--local', '--pool', 'default_pool', '-sd', '/root/airflow/dags/sample_date_print.py']"
}

Я не уверен, как мне изменить поведение по умолчанию --local таким образом, чтобы файл DAG go выполнялся на удаленном компьютере машины, пожалуйста, помогите мне

1 Ответ

0 голосов
/ 16 января 2020

Вы изменили executor = SequentialExecutor на executor = CeleryExecutor в вашем airflow.cfg? Я думаю, что вы этого не делали или забыли упомянуть об этом.
Это первое, что нужно изменить, если вы хотите изменить режим выполнения.
Можно упомянуть и другие вещи, которые вы, возможно, пропустили в конфигурациях здесь или здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...