Как мне улучшить время обнаружения нового Дага на GCP Composer? (Воздушный поток) - PullRequest
0 голосов
/ 03 марта 2020

Я создал кластер Composer на GCP (Airflow), он работает довольно хорошо, но медленно для непосредственных задач. Я создал следующую группу доступности базы данных в локальном файле:

import datetime
from airflow import models
from pprint import pprint as pp
from airflow.contrib.kubernetes import secret
from airflow.contrib.operators import kubernetes_pod_operator
import datetime as dt

from airflow.contrib.operators.kubernetes_pod_operator import KubernetesPodOperator
from airflow.operators.bash_operator import BashOperator

YESTERDAY = datetime.datetime.now() - datetime.timedelta(days=1)


def create_task_dag(dag_id, schedule, start_date, task_id):

    dag = models.DAG(
        dag_id=dag_id,
        schedule_interval=schedule,
        start_date=start_date
    )

    with dag:
        _operator_name = KubernetesPodOperator(
            task_id='#task_type#-#taskid#',
            name='#task_type#-#taskid#',
            cmds=['bash', '-cx'],
            arguments=["command"],
            env_vars=#env_vars#,
            namespace='default',
            image='image:latest',
            image_pull_secrets="secret",
            image_pull_policy='Always',
            get_logs=True
        )
        _operator_name
        return dag

task_id='#task_type#-#taskid#'
dag_id = 'dag-#task_type#-#taskid#'
schedule = '@once'
start_date = datetime.datetime.now()

globals()[dag_id] = create_task_dag(
    dag_id=dag_id,
    schedule=schedule,
    start_date=start_date,
    task_id=task_id)

Когда я загружал этот файл, его запуск занимал много времени, поэтому я добавил dag_dir_list_interval=1, он улучшился, но занимает 20-30 секунд появиться на приборной панели Airflow и 40-60 секунд, чтобы стартовать в Kubernetes.

Это означает, что мне нужно почти одну минуту, чтобы запустить Hello world.

Могу ли я ошибиться?

PS: я проверил планировщик, и он появился на диске pod через 2-5 секунд.

Версия изображения: composer-1.8.4-airflow-1.10.3 Кластер: 3 узла в Kubernetes n1-standard-1

1 Ответ

0 голосов
/ 03 марта 2020

Обычно это работает как задумано. Если вы хотите провести локальное тестирование, вы можете установить Airflow локально и протестировать компоненты DAG там. Причина, по которой работает как задумано , заключается в нескольких причинах.

  1. Требуется немного времени для Composer, чтобы получить DAG из облачного хранилища. Как отмечено в документах , синхронизация возможна.
  2. Воздушный поток не является "лучшим" с задержкой задачи - операции нередко выполняются на порядок секунд.

Я подозреваю, что вы пробовали привет мир используя что-то вроде BashOperator, это было бы намного быстрее (только задержка GCS.)

...