Выбор ответа Senior ETL, ELT и Airflow обновлено

Где выполнять тяжёлую обработку

Вопрос

PythonOperator читает 50 ГБ из S3 в pandas прямо на воркере Airflow, и воркеры падают по памяти. Какой подход правильный?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Airflow оркестрирует, а обработку делает внешний движок: Spark, SQL в хранилище, под в K8s. Воркеры Airflow рассчитаны на запуск и контроль задач, а не на тяжёлые вычисления.

Варианты ответа

  1. Добавить воркерам памяти до 512 ГБ и ограничить их одной задачей одновременно
  2. Разбить чтение на 50 задач по 1 ГБ на тех же воркерах и собрать итоговый результат в последней задаче
  3. Airflow оркестрирует, а обработку делает внешний движок: Spark, SQL в хранилище, под в K8sправильный ответ
  4. Передавать данные между задачами через XCom, чтобы разгрузить память каждого воркера

Разбор

Воркеры Airflow рассчитаны на запуск и контроль задач, а не на тяжёлые вычисления. Тяжёлую работу отдают системам, которые для неё созданы, а Airflow ждёт результата. Увеличение памяти дорого и не масштабируется. Дробление на тех же воркерах переносит проблему. XCom хранится в метабазе и для этого не годится вовсе.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.