Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Дмитрий Никонов. Как не растерять бигдату с пом...

Дмитрий Никонов. Как не растерять бигдату с помощью Apache Airflow

Мы расскажем о замечательном инструменте Apache Airflow, рассмотрим его основные плюшки и покажем, как организовать зоопарк разнородных процессов, обрабатывающих разнородные данные, в единый конвейер и при этом не умереть в продакшене

Python Community Chelyabinsk

February 03, 2018
Tweet

More Decks by Python Community Chelyabinsk

Other Decks in Programming

Transcript

  1. Как не растерять бигдату с помощью Apache Airflow Поучительная история

    в двух действиях с неуместными авторскими ремарками, художественными преувеличениями, вымышленными персонажами и смешным комиксом моралью в финале Дмитрий Никонов, NapoleonIT
  2. Ну такой вот примерно рецепт усредненный cron В 6:00 каждый

    день Месим тесто, муки для вязкости Каждые 5 минут с 7:00 до 19:00 Выпекаем бублики без дырок В 5:30 каждый день Разогреваем печь Где-то 12:00 до 18:00 Когда привезли исходники для глазури, забираем их Каждые 20 минут с 7:05 до 19:05 Сверлим дырки Каждый час с 8:00 до 20:00 Собираем остатки от сверления, чтобы слепить новые бублики С 7:00 до 18:00 Если глазури нет, а исходники есть, готовим глазурь Каждые 20 минут с 7:25 до 19:25 Поливаем бублики глазурью и выкладываем на прилавок Каждую пятницу в 02:00 Проводим ТО оборудования
  3. Спасибо за внимание!* *один докладчик не вставил в презентацию слайд

    «Спасибо за внимание!», и его убили злые роботы
  4. And Now for Something Completely Different Apache Airflow Инструмент для

    организации, планирования и мониторинга batch-процессов • OpenSource • Все пайплайны описываются на Python • Куча готовых инструментов для разных задач • Есть UI с красивыми графиками • Говорят, что scalable with Celery/Dask • Можно грабить корованы • Используется в Airbnb, IFTTT, Quora, Scaleway, Ubisoft, Yahoo!
  5. Как это работает: DAG (Directed Acyclic Graph, бурж. Ориентированный Ациклический

    Граф) Основная сущность в Airflow, представляет собой некий набор заданий, объединённых в этот самый граф Граф Airflow строит сам на основе указанных зависимостей между задачами
  6. Как это работает: задания Задания описываются с помощью операторов Оператор

    — это некоторый шаблон с готовым boilerplate-кодом для определённого рода заданий Из коробки в AirFlow есть, например: • BashOperator — выполняет код на bash • PythonOperator — выполняет код на Python • HTTPOperator — выполняет HTTP-запрос • SqlOperator — выполняет SQL-запрос • Sensor — ждёт чуда конкретного времени, файла, строки в базе • Прочие операторы для Docker, Hive, HDFS, S3, Email, Slack (!) Можно (и нужно) писать свои операторы
  7. Executor Для исполнения задач можно использовать разные хорошие executor-ы Например,

    из коробки поддерживаются Celery или Dask (scalability, yay!) Чтобы запустить DAG, достаточно привязать его к пулу и назначить ему расписание (поддерживаются как штуки типа @hourly, так и cron-выражения) Пулы, как правило, нужны для того, чтобы объединять одноплановые рутины и ограничивать потребление ресурсов Например, можно сделать маленький пул для тяжёлых задач и большой для лёгких
  8. Что ещё хорошего • pip install apache-airflow (а вы уже

    перешли на pipenv?) • Быстрый старт • Дружелюбная документация (обязательно почитайте раздел Concepts) • Всё для того, чтобы дописывать свои компоненты • Есть инструменты для тестирования (let’s do the Time Warp again~) • Можно невозбранно лезть в базу Airflow и строить свою аналитику в каком-нибудь Superset или Zeppelin • Есть REST API (пока экспериментально) • Дружит с облаками (Azure/AWS/Google Cloud Platform) • etc.
  9. Ложка дёгтя • Несмотря на быстрый старт, придётся потратить какое-то

    время, чтобы нормально приготовить Airflow для себя • Не подходит для стриминга данных между тасками • cross-communication есть, но не так просто • Есть ещё конкуренты типа Luigi, Oozie, Azkaban — надо сравнивать • Время от времени кто-то приходит и говорит, что он сырой :(
  10. Мораль Какие бы крутые алгоритмы вы ни реализовали — их

    придётся выкатывать на прод и как-то там запускать Даже если вы не захотите Airflow — посмотрите на аналоги (их есть) Возможно, сама концепция станет тем самым «А что, так можно было?» для вас и вашего проекта Больше питона богу питона Меньше велосипедов богу велосипедов
  11. Q&A