Мы исследуем использование Apache Воздушный поток для замены текущего инструмента оркестратора для нашего ETL. Наш текущий ETL более 600 различных задач со сложными зависимостями. Этими задачами являются в основном вызовы рабочих процессов Informatica PowerCenter, а также несколько процедур базы данных и сценариев оболочки
Чтобы протестировать пользовательский интерфейс, я создал группу обеспечения доступности баз данных с 600 задачами. Вместо того, чтобы использовать реальные пользовательские операторы, которые я создал, я использовал готовый BashOperator для печати даты, простейшей команды, которую я могу придумать. Затем я установил зависимости в соответствии с нашим текущим ETL. Существует более 2000 зависимостей, но я ограничил около 1400 зависимостями для теста.
import airflow
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': airflow.utils.dates.days_ago(1),
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5)
}
dag = DAG(dag_id='Test_ETL',
default_args=default_args,
schedule_interval=timedelta(days=1))
Task1 = BashOperator(task_id="Task1",bash_command="date",dag=dag)
Task2 = BashOperator(task_id="Task2",bash_command="date",dag=dag)
.
.
Task600 = BashOperator(task_id="Task600",bash_command="date",dag=dag)
Task1 >> Task2
Task2 >> Task3
Task4 >> Task5
.
.
Task500 >> Task600
Проблема в том, что Airflow требуется несколько минут, чтобы заполнить DagBag. И это происходит постоянно, и каждый шаг занимает несколько минут из-за этого. Фактически мне пришлось увеличить тайм-ауты, поскольку заполнение DagBag не будет завершено.
Я исследовал dag_pickle (donot_pickle = false, планировщик в режиме --do_pickle), и все же таблица dag_pickle (в MySQL) пусто.
Потребовалось более 8 часов, чтобы 600 раз выполнить команду даты в bash! Весь ETL занимает 8 часов, чтобы извлечь и загрузить почти миллиард строк каждую ночь.
Не выполняя эту работу, мы не можем рекомендовать Airflow в качестве замены (что является позором).