Airflow: платформа управления рабочим процессом

задняя часть открытый источник Программа перевода самородков Airbnb

отMaxime Beauchemin

Airbnb— быстрорастущая компания, основанная на данных. Наши группы по работе с данными и объемы данных быстро растут, как и сложность задач, с которыми мы сталкиваемся. Наша расширяющаяся команда инженеров данных, специалистов по данным и аналитиков используетAirflow, это платформа, которую мы создали для быстрого продвижения вперед и сохранения нашего преимущества в разработке, потому что мы можем редактировать, отслеживать и переписывать самиконвейер данных.

Сегодня мы очень рады сообщить, что мыоткрытый источникиобщийНаша платформа управления рабочим процессом:Airflow.

GitHub.com/air not NB/любовь к груди…


Направленные ациклические графы (DAG) в расцвете

Когда работники, работающие с данными, начинают автоматизировать свои процессы, написание пакетных заданий становится неизбежным. Эти задания должны выполняться по заданному расписанию, они обычно зависят от набора существующих наборов данных, и другие задания также зависят от них. Даже если у вас есть несколько рабочих узлов данных, работающих вместе в течение короткого периода времени, пакетное задание для вычислений может быстро превратиться в сложный граф. Теперь, если у вас есть быстро развивающаяся группа данных среднего размера, и они столкнутся с улучшением инфраструктуры данных через несколько лет, у них также есть большая и сложная сеть вычислительных заданий. Эта сложность становится серьезным бременем для групп обработки данных, с которыми приходится иметь дело и даже получать представление о них.

Эти рабочие сети обычноНаправленный ациклический граф(DAGs), они обладают следующими свойствами:

  • По расписанию:Каждое задание должно выполняться через запланированные интервалы
  • основные задачи:Если некоторые задания не выполняются, у нас проблемы
  • Эволюция:По мере взросления компаний и групп обработки данных совершенствуется и обработка данных.
  • Неоднородность:Стек современной аналитики быстро меняется, и большинство компаний используют несколько систем, которые необходимо склеить.

У каждой компании есть один (или несколько)

Управление рабочим процессомЭто стало обычным требованием, поскольку у большинства компаний есть несколько способов создания и планирования рабочих мест внутри компании. Вы всегда можете начать с почтенного планировщика cron, и многие пакеты поставщиков имеют возможности планирования. Следующим шагом является создание сценариев для вызова других сценариев, которые должны работать в течение короткого периода времени. В конце концов, появилось несколько простых фреймворков для хранения состояния заданий и зависимостей.

Как правило, это решенияпассивный ростДа, все они являются ответом на увеличение конкретных потребностей в планировании работы, часто потому, что существующие варианты таких систем не позволяют простое масштабирование. Также обратите внимание, что те, кто пишет конвейеры данных, обычно не являются инженерами-программистами, и их задачи и компетенции связаны с обработкой и анализом данных, а не с построением систем управления рабочими процессами.

Учитывая, что рост внутренних систем управления рабочими процессами компании всегда отстает от потребностей компании как минимум на поколение, разрыв между работой по редактированию, планированию и устранению неполадоктрениеСоздает много неэффективных и разочаровывающих вещей, которые заставляют работников данных двигаться в направлении, противоположном их высокодоходному маршруту.

Airflow

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

Вот некоторые из процессов Airflow в Airbnb:

  • Хранилище данных:Очищайте, систематизируйте, проверяйте качество данных и публикуйте данные в нашем растущем хранилище данных
  • Анализ роста:Рассчитать показатели вовлеченности жильцов и домовладельцев и аудиты роста
  • контрольная работа:Рассчитайте и агрегируйте логику нашей экспериментальной структуры A/B-тестирования.
  • Целевая электронная почта:Используйте правила для таргетинга и привлечения пользователей с помощью массовых рассылок
  • Сессия (сессионизация):Набор данных для расчета посещаемости и времени пребывания
  • поиск:Рассчитать показатели, связанные с ранжированием в поиске
  • Обслуживание инфраструктуры данных:Очистка базы данных, очистка папок и применение политик хранения данных...

Архитектура

Точно так же, как английский язык является языком деловой активности, Python прочно зарекомендовал себя как язык работы с данными. Airflow был написан на Python с момента его создания. Кодовая база является расширяемой, хорошо документированной, последовательной по стилю, с проверенным синтаксисом и имеет высокое покрытие модульными тестами.

Конвейеры также написаны на Python, а это означает, что динамическая генерация конвейера с помощью файлов конфигурации или других метаданных неотъемлема. "Конфигурация как код" - это руководство, которого мы придерживаемся, чтобы достичь этого. Хотя конфигурация заданий на основе yaml или json позволяет нам генерировать конвейеры данных Airflow на любом языке, мы чувствуем, что некоторая текучесть в процессе преобразования теряется. Возможность самоанализа кода (ipython! И IDE) подклассы и метапрограммирование, а также использование импортированных библиотек для помощи в написании конвейеров данных добавляет огромную ценность Airflow.Обратите внимание, что вы по-прежнему можете использовать любое программирование, если вы можете писать код Python для объяснения языка конфигурации или языка разметки для редактирования. задания.

Вы можете запустить Airflow всего несколькими строками команд, но его полная архитектура включает в себя так много компонентов:

  • определение работы, включенный в систему контроля версий.
  • богатыйинструмент командной строки(Интерфейс командной строки) для тестирования, запуска, заполнения, описания и очистки компонентов вашей DAG.
  • Одинвеб приложение, используемый для просмотра определений DAG, зависимостей, хода выполнения, метаданных и журналов. Веб-сервер упакован в Airflow и построен на основе веб-фреймворка Python Flask.
  • Одинхранилище метаданных, обычно это база данных MySQL или Postgres, которую Airflow может использовать для записи статуса задания и другой постоянной информации.
  • Одна группарабочий узел, который запускает экземпляр задачи распределенным образом.
  • расписаниеПрограмма, запускающая экземпляр задачи, готовой к запуску.

Масштабируемость

Airflow предлагает множество способов взаимодействия с распространенными системами, такими как Hive, Presto, MySQL, HDFS, Postgres и S3, и позволяет запускать произвольные сценарии, а базовые модули спроектированы так, чтобы их было очень легко расширять.

HooksОпределяется как абстракция для внешних систем и использует один и тот же интерфейс. Перехватчики абстрагируют информацию о хосте/порте/логине/пароле, используя централизованную базу данных хранилища, и предоставляют вызываемые методы для взаимодействия с этими системами.

операторИспользуйте ловушки для создания конкретных задач, которые при создании становятся узлами в потоке данных. Все операторы являются производными от BaseOperator и наследуют богатый набор свойств и методов. Три основных типа операторов:

  • воплощать в жизньдействиеоператора или уведомить другие системы о выполнении действия
  • перечислитьОператоры перемещают данные из одной системы в другую
  • датчикэто определенный класс операторов, которые выполняются до тех пор, пока не будет выполнено определенное условие

ИсполнителиРеализован интерфейс, который позволяет компонентам Airflow (интерфейс командной строки, планировщик и веб-сервер) выполнять задания удаленно. В настоящее время Airflow поставляется с SequentialExecutor (для тестирования), многопоточным LocalExecutor и тем, который используетCeleryCeleryExecutor и потрясающая асинхронная очередь задач на основе распределенного обмена сообщениями. Мы также планируем открыть исходный код YarnExecutor в ближайшем будущем.

Великолепный пользовательский интерфейс

Хотя Airflow обеспечивает богатыйИнтерфейс командной строки, но лучший способ контролировать рабочий процесс и взаимодействовать с ним — использовать пользовательский веб-интерфейс. Вы можете легко отображать зависимости конвейера, просматривать ход выполнения, легко получать журналы, просматривать связанный код, запускать задачи, исправлять ложные срабатывания/негативы и анализировать время, затрачиваемое задачами, а также вы можете получить полную информацию о том, в какое время дня обычно заканчивается задача. Посмотреть. Пользовательский интерфейс также предоставляет некоторые административные функции: управление соединениями, создание пула и приостановка процессов DAG.

Вишенкой на торте является то, что пользовательский интерфейс имеетData Profilingобласть, которая позволяет пользователям выполнять SQL-запросы и просматривать наборы результатов для зарегистрированных подключений, а также предоставляет методы для создания и обмена некоторыми простыми диаграммами. Это картографическое приложение созданоHighcharts,Flask AdminИнтерфейс CRUD CRUD и AirflowhooksимакросМешап библиотек. Параметры URL могут быть переданы в SQL, используемый в вашей диаграмме, макросы Airflow передаются черезJinja templatingспособ работы. Благодаря этим функциям и возможностям запросов пользователи Airflow могут легко создавать наборы результатов и графики и делиться ими.

катализатор

После использования Airflow сотрудники Airbnb стали в несколько раз более продуктивными и увлеченными своей работой с данными. Написание пайплайнов также ускоряется, а время, затрачиваемое на мониторинг и устранение неполадок, значительно сокращается. Что еще более важно, платформа позволяет людям создавать многократно используемые модули, вычислительные среды и сервисы на более высоком уровне абстракции.

Достаточно сказано!

Мы невероятно упростили опробование Airflow с помощью эвристического руководства. Чтобы увидеть примеры результатов, вам нужно всего лишь выполнить несколько команд оболочки. посмотриДокументация по воздушному потокуизНачать быстроируководствораздел, вы можете настроить и запустить веб-программу Airflow с собственным интерактивным примером за считанные минуты!

GitHub.com/air not NB/любовь к груди…

существуетairbnb.ioОзнакомьтесь со всеми нашими проектами с открытым исходным кодом и следите за нами в Twitter:@AirbnbEng + @AirbnbData

Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из ИнтернетаНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллекти другие поля, если вы хотите видеть больше качественных переводов, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.