Выбор ответа Senior ETL, ELT и Airflow обновлено
Где выполнять тяжёлую обработку
Вопрос
PythonOperator читает 50 ГБ из S3 в pandas прямо на воркере Airflow, и воркеры падают по памяти. Какой подход правильный?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Airflow оркестрирует, а обработку делает внешний движок: Spark, SQL в хранилище, под в K8s. Воркеры Airflow рассчитаны на запуск и контроль задач, а не на тяжёлые вычисления.
Варианты ответа
- Добавить воркерам памяти до 512 ГБ и ограничить их одной задачей одновременно
- Разбить чтение на 50 задач по 1 ГБ на тех же воркерах и собрать итоговый результат в последней задаче
- Airflow оркестрирует, а обработку делает внешний движок: Spark, SQL в хранилище, под в K8sправильный ответ
- Передавать данные между задачами через XCom, чтобы разгрузить память каждого воркера
Разбор
Воркеры Airflow рассчитаны на запуск и контроль задач, а не на тяжёлые вычисления. Тяжёлую работу отдают системам, которые для неё созданы, а Airflow ждёт результата. Увеличение памяти дорого и не масштабируется. Дробление на тех же воркерах переносит проблему. XCom хранится в метабазе и для этого не годится вовсе.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.