Использование Dataflow против Cloud Composer

Я прошу прощения за этот наивный вопрос, но я хотел бы получить некоторые разъяснения о том, является ли Cloud Dataflow или Cloud Composer подходящим инструментом для работы, и мне неясно из документации Google.

В настоящее время я использую Cloud Dataflow, чтобы прочитать нестандартный CSV-файл - выполнить некоторую базовую обработку - и загрузить его в BigQuery.

Позвольте мне привести очень простой пример:

# file.csv
type\x01date
house\x0112/27/1982
car\x0111/9/1889

Из этого файла мы обнаруживаем схему и создаем таблицу BigQuery, что-то вроде этого:

`table`
type (STRING)
date (DATE)

И мы также форматируем наши данные для вставки (в python) в BigQuery:

DATA = [
    ("house", "1982-12-27"),
    ("car", "1889-9-11")
]

Это огромное упрощение того, что происходит, но именно так мы сейчас используем Cloud Dataflow.

Мой вопрос тогда, где Cloud Composer войти в картину? Какие дополнительные функции он может предоставить на вышеуказанном? Другими словами, зачем его использовать "поверх" облачного потока данных?

4 ответа

Облачный композитор (поддерживаемый Apache Airflow) предназначен для планирования задач в небольших масштабах.

Вот пример, который поможет вам понять:

Скажем, у вас есть файл CSV в GCS, и, используя ваш пример, скажем, вы используете Cloud Dataflow для его обработки и вставки отформатированных данных в BigQuery. Если это одноразовая вещь, вы только что закончили ее и она стала идеальной.

Теперь предположим, что ваш CSV-файл перезаписывается в 01:00 UTC каждый день, и вы хотите запускать одно и то же задание Dataflow для его обработки каждый раз, когда он перезаписывается. Если вы не хотите вручную запускать задание точно в 01:00 UTC, независимо от выходных и праздничных дней, вам нужно периодически запускать задание для вас (в нашем примере в 01:00 UTC каждый день). Cloud Composer может помочь вам в этом случае. Вы можете предоставить конфигурацию для Cloud Composer, которая включает в себя какие задания (операторы) запускать, когда запускать (указать время начала задания) и с какой периодичностью (может быть ежедневно, еженедельно или даже ежегодно).

Однако, это уже круто, но что, если вы будете перезаписывать CSV-файл не в 01:00 UTC, а в любое время дня, как вы будете выбирать ежедневное время работы? Cloud Composer предоставляет датчики, которые могут отслеживать состояние (в этом случае время изменения файла CSV). Cloud Composer может гарантировать, что он начнет работу, только если условие выполнено.

Cloud Composer/Apache Airflow предлагает намного больше функций, включая группу обеспечения доступности баз данных для запуска нескольких заданий, повторение неудачных задач, уведомление об ошибках и красивую панель инструментов. Вы также можете узнать больше из их документации.

Для основы описанной вами задачи Cloud Dataflow - хороший выбор. Большие данные, которые могут обрабатываться параллельно, - хороший выбор для облачного потока данных.

Реальный мир обработки больших данных обычно грязный. Данные, как правило, очень грязные, поступают постоянно или большими партиями и должны обрабатываться с учетом времени. Обычно для извлечения желаемых данных требуется координация нескольких задач / систем. Подумайте о загрузке, преобразовании, объединении, извлечении и хранении типов задач. Обработка больших данных часто склеивается с использованием сценариев оболочки и / или программ на Python. Это затрудняет процессы автоматизации, управления, планирования и контроля.

Google Cloud Composer - это большой шаг вперед по сравнению с Cloud Dataflow. Cloud Composer - это инструмент кросс-платформенной оркестровки, который поддерживает AWS, Azure и GCP (и более) с возможностями управления, планирования и обработки.

Облачный поток данных обрабатывает задачи. Cloud Composer управляет целыми процессами, координируя задачи, которые могут включать BigQuery, Dataflow, Dataproc, Storage, локальные и т. Д.

Тогда мой вопрос: где Cloud Composer входит в картину? Какие дополнительные функции он может предоставить на вышеуказанном? Другими словами, зачем его использовать "поверх" облачного потока данных?

Если вам нужно / требуется больше управления, контроля, планирования и т. Д. Для задач с большими данными, тогда Cloud Composer добавляет значительную ценность. Если вы время от времени выполняете простую задачу Cloud Dataflow по требованию, Cloud Composer может оказаться излишним.

Cloud Composer Apache Airflow предназначен для планирования задач

Cloud Dataflow Apache Beam = обрабатывать задачи

Для меня Composer - это установка (большая) из Dataflow. Если бы у меня была одна задача, скажем, для обработки моего CSV-файла из хранилища в BQ, я бы / мог использовать Dataflow. Но если бы я хотел выполнять одно и то же задание ежедневно, я бы использовал Composer.

Также учитывайте затраты. Постоянная стоимость Cloud Composer составляет 500 долларов в месяц (Composer 2) или 250 долларов (Composer1), тогда как у Dataflow нет постоянных затрат, только когда он работает.

Поток данных также был расширен за счет включения «конвейера пакетных данных», который дает вам улучшенные средства планирования и мониторинга и делает его жизнеспособным вариантом для простых заданий по преобразованию данных.

У вас нет оркестра, если у вас есть только две трубы и труба... Я бы рассматривал возможность использования Cloud Composer/Airflow только в том случае, если вам нужно управлять сотнями заданий или несколькими заданиями, но со многими взаимосвязанными шагами.

(Можно также рассмотреть другие варианты, например Cloud Data Fusion, Cloud Workflows, Datastream, Cloud Functions, Cloud Run, App Engine.)

Другие вопросы по тегам