Apache Airflow или Apache Beam для обработки данных и планирования заданий - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь дать полезную информацию, но я далеко не инженер данных.

В настоящее время я использую библиотеку панд Python для выполнения длинной серии преобразований в мои данные, которые имеют много входных данных (в настоящее время файлы CSV и Excel). Выходные данные представляют собой несколько файлов Excel. Я хотел бы иметь возможность выполнять запланированные пакетные задания с параллельным вычислением (я имею в виду не так последовательно, как то, что я делаю с пандами), один раз в месяц.

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

Ответы [ 3 ]

0 голосов
/ 25 июля 2018

Другие ответы довольно технические и трудные для понимания. Я был на вашей должности раньше, поэтому я объясню в простых терминах .

Воздушный поток может сделать что угодно . Он имеет BashOperator и PythonOperator, что означает, что он может запускать любой скрипт bash или любой скрипт Python.
Это способ организации (настройки сложных групп DAG конвейеров данных), планирования, мониторинга, запуска повторных запусков конвейеров данных в удобном для просмотра и использования пользовательском интерфейсе.
Кроме того, его легко установить, и все в привычном коде Python.
Организованное выполнение конвейеров (т. Е. Использование Airflow) означает, что вы не тратите время на отладку беспорядочных сценариев обработки данных (cron) повсюду.

Apache Beam - это оболочка для многих сред обработки данных (Spark, Flink и т. Д.).
Цель состоит в том, чтобы вы просто изучили Beam и могли работать на нескольких бэкэндах (Beam runners).
Если вы знакомы с Keras и TensorFlow / Theano / Torch, отношения между Keras и его бэкэндами аналогичны отношениям между Beam и его бэкэндами обработки данных.

Облачный поток данных Google Cloud Platform является одним из бэкендов для запуска Beam.
Они называют это Runner потока данных .

Предложение GCP, Cloud Composer , представляет собой управляемую реализацию Airflow как службу, работающую в кластере Kubernetes в Google Kubernetes Engine (GKE).

Так что вы можете:
- ручная реализация Airflow, выполняющая обработку данных на самом экземпляре (если ваши данные маленькие (или ваш экземпляр достаточно мощный), вы можете обрабатывать данные на машине, на которой запущен Airflow. Вот почему многие смущаются, если Airflow может обрабатывать данные или нет) )
- ручная реализация Airflow, вызывающая задания Beam
- Cloud Composer (управляемый Airflow как услуга) вызывает задания в Cloud Dataflow
- Cloud Composer запускает контейнеры для обработки данных в самой кластерной среде Composer Kubernetes, используя Airflow KubernetesPodOperator (KPO)
- Cloud Composer выполняет контейнеры для обработки данных в кластерной среде Composer Kubernetes с KPO в Airflow, но на этот раз лучше изолировал , создав новый пул узлов и указав, что модули KPO должны быть запустить в новом пуле узлов

Мой личный опыт :
Воздушный поток легок и не сложен в изучении (прост в реализации), вы должны по возможности использовать его для своих конвейеров данных.
Кроме того, поскольку многие компании ищут опыт использования Airflow, если вы хотите стать инженером по обработке данных, вам, вероятно, стоит изучить его
Кроме того, управляемый Airflow (до сих пор я использовал только GCP Composer) гораздо удобнее, чем запускать Airflow самостоятельно и управлять процессами webserver и scheduler.

0 голосов
/ 28 апреля 2019

Apache Airflow и Apache Beam на поверхности выглядят очень похоже. Оба они позволяют вам организовать набор шагов, которые обрабатывают ваши данные, и оба обеспечивают выполнение шагов в правильном порядке и удовлетворение их зависимостей. Оба позволяют визуализировать шаги и зависимости в виде ориентированного ациклического графа (DAG) в графическом интерфейсе.

Но когда вы копаете глубже, вы обнаружите большие различия в том, что они делают, и в поддерживаемых ими моделях программирования.

Airflow - это система управления задачами. Узлы группы обеспечения доступности баз данных являются задачами, и Airflow обеспечивает их выполнение в правильном порядке, следя за тем, чтобы одна задача запускалась только после завершения ее зависимых задач. Зависимые задачи выполняются не одновременно, а только одна за другой. Независимые задачи могут выполняться одновременно.

Beam - это механизм обработки данных. Узлы группы обеспечения доступности баз данных формируют (возможно, ветвящийся) конвейер. Все узлы в группе обеспечения доступности баз данных активны одновременно, и они передают элементы данных от одного к другому, каждый из которых выполняет на нем некоторую обработку.

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

Воздушный поток управляет задачами, которые зависят друг от друга. Хотя эта зависимость может состоять из одной задачи, передающей данные следующей, это не является обязательным требованием. На самом деле Airflow даже не заботится о том, что делают задачи, ему просто нужно запустить их и посмотреть, закончились они или нет. Если задачам необходимо передавать данные друг другу, вам необходимо согласовать это самостоятельно, указав каждой задаче, где следует читать и записывать свои данные, например, локальный путь к файлу или веб-сервис где-то. Задачи могут состоять из кода Python, но они также могут быть любой внешней программой или вызовом веб-службы.

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

В Airflow, если ваши задачи обрабатывают данные, один вызов задачи обычно выполняет некоторое преобразование во всем наборе данных. В Beam обработка данных является частью основных интерфейсов, поэтому она больше ничего не может сделать. Вызов шага Beam обычно обрабатывает один или несколько элементов данных, а не полный набор данных. Из-за этого Beam также поддерживает наборы данных неограниченной длины, с которыми Airflow не может справиться.

Другое отличие состоит в том, что Airflow сам по себе является фреймворком, но на самом деле Beam - это слой абстракции. Лучевые конвейеры могут работать на Apache Spark, Apache Flink, Google Cloud Dataflow и других. Все они поддерживают более или менее похожую модель программирования. Кстати, Google также превратил Airflow в сервис под названием Google Cloud Compose.

* Поддержка Apache для Python в действительности реализована путем запуска полного интерпретатора Python в подпроцессе, но это реализовано на уровне инфраструктуры.

0 голосов
/ 12 мая 2018

Apache Airflow не является механизмом обработки данных.

Airflow - это платформа для программного создания, планирования и контролировать рабочие процессы.

Cloud Dataflow - это полностью управляемый сервис в Google Cloud, который можно использовать для обработки данных. Вы можете написать свой код потока данных, а затем использовать Airflow для планирования и мониторинга задания потока данных. Поток воздуха также позволяет вам повторить вашу работу, если она не удалась (количество попыток настраивается). Вы также можете настроить в Airflow, если хотите отправлять оповещения на Slack или по электронной почте, если ваш конвейер Dataflow не работает.

...