Я создал кластер 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