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

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

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

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

49c3bfded3cf5f5100ef423140676288?s=128

Python Community Chelyabinsk

February 03, 2018
Tweet

Transcript

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

    в двух действиях с неуместными авторскими ремарками, художественными преувеличениями, вымышленными персонажами и смешным комиксом моралью в финале Дмитрий Никонов, NapoleonIT
  2. Шаблонная завязка: клиент приходит с задачей fig. 1: Бублик без

    дырки fig. 2: Бублик с дыркой
  3. Выбираем инструмент

  4. Взял-обработал-положил Warehouse 1 Warehouse 2 Взять заготовку Сделать дырку Положить

    бублик
  5. Новый функционал (видение клиента)

  6. Ну такой вот примерно рецепт усредненный 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 Проводим ТО оборудования
  7. Больше пилонов

  8. Happy (?) end

  9. Спасибо за внимание!* *один докладчик не вставил в презентацию слайд

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

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

  12. Как это работает: DAG (Directed Acyclic Graph, бурж. Ориентированный Ациклический

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

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

  15. Теперь питоновый Можно определять задачи декларативно, процедурно и как захочется

    И шаблонизировать с помощью jinja
  16. Executor Для исполнения задач можно использовать разные хорошие executor-ы Например,

    из коробки поддерживаются Celery или Dask (scalability, yay!) Чтобы запустить DAG, достаточно привязать его к пулу и назначить ему расписание (поддерживаются как штуки типа @hourly, так и cron-выражения) Пулы, как правило, нужны для того, чтобы объединять одноплановые рутины и ограничивать потребление ресурсов Например, можно сделать маленький пул для тяжёлых задач и большой для лёгких
  17. UI: look at my DAGs, my DAGs are amazing

  18. Ground Control to Major Tom

  19. UI: та самая страшная картинка

  20. UI: есть что показать клиенту

  21. UI: The Source

  22. Что ещё хорошего • pip install apache-airflow (а вы уже

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

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

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

  26. Q&A