Привет, Хабр!

Давайте признаемся: порог входа в Data Engineering довольно высок. И дело не только в знании SQL или Python. Настоящая боль начинается, когда ты пытаешься собрать на своей машине хотя бы простенький пайплайн.

Нужно поднять Kafka, рядом поставить Zookeeper (или обойтись Kraft, если ты хипстер), прикрутить Debezium для CDC, развернуть Spark для обработки, где-то хранить результат (привет, MinIO!), а потом всё это оркестрировать через Airflow и визуализировать в Superset. Каждый инструмент — это отдельный Docker-контейнер, своя конфигурация, свои порты и свои зависимости. Через пару часов борьбы с docker-compose.yml и сетевыми настройками желание учиться и экспериментировать улетучивается.

Знакомо? А что, если я скажу, что весь этот зоопарк можно поднять одной командой, и он просто... заработает?

Сегодня я хочу рассказать о проекте, который стал для меня настоящей находкой — Data Forge. Это готовая песочница для дата-инженера, или, как называет её автор, "Data Engineering Playground".

Что такое Data Forge?

Если коротко, Data Forge — это pre-конфигурированный набор Docker-контейнеров с самыми популярными open-source инструментами для построения данных, готовый к запуску одной командой.

Это не просто набор разрозненных сервисов. Это полноценная экосистема, где все компоненты уже настроены для совместной работы. Вам не нужно думать, как подключить Spark к Kafka или как настроить коннектор Debezium. Вы просто запускаете docker compose up и начинаете строить свои пайплайны.

Это ваш личный дата-центр в миниатюре, прямо на вашем ноутбуке.

Для кого это всё?

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

  • Для опытных инженеров. Нужно быстро проверить гипотезу, отладить сложный Spark-джоб или протестировать новый коннектор Kafka? Data Forge разворачивается за 5 минут и экономит кучу времени.

  • Для разработчиков бэкенда и аналитиков. Хотите понять, как работает стриминг данных, CDC или как строятся витрины данных? Эта песочница — ваш лучший друг.

Что под капотом? ?️

А теперь самое интересное — из каких "кирпичиков" собран этот конструктор. Набор впечатляет:

  • Источники данных:

    • PostgreSQL: Классическая реляционная база как источник правды.

  • Стриминг и обработка в реальном времени:

    • Kafka: Нервная система всего стека. Брокер сообщений для потоковой передачи данных.

    • Debezium (через Kafka Connect): Магия Change Data Capture (CDC). Следит за изменениями в PostgreSQL и отправляет их в Kafka в реальном времени.

    • ksqlDB: "SQL-движок" поверх Kafka. Позволяет писать SQL-запросы к потокам данных.

  • Batch-обработка:

    • Spark: Рабочая лошадка для ETL/ELT. В комплекте идёт JupyterLab, так что можно писать и запускать PySpark-джобы прямо из браузера.

  • Хранилище данных (Data Lake/DWH):

    • MinIO: Ваше личное S3-совместимое объектное хранилище. Идеально для создания Data Lake.

  • Движок запросов:

    • Trino (ранее PrestoSQL): Универсальный ключ ко всем данным. Позволяет выполнять федеративные SQL-запросы к PostgreSQL, MinIO (Hive Connector) и Kafka одновременно.

  • Трансформации и качество данных:

    • dbt (Data Build Tool): Стандарт де-факто для T в ELT. Помогает строить надёжные и тестируемые модели данных.

    • Great Expectations: Фреймворк для тестирования и документирования качества данных.

  • Оркестрация и визуализация:

    • Airflow: Дирижёр всего этого оркестра. Планирует и запускает пайплайны по расписанию.

    • Superset: Мощный open-source BI-инструмент для создания дашбордов и визуализации данных.

Только вдумайтесь: всё это поднимается и связывается друг с другом автоматически!

(Здесь могла бы быть ваша диаграмма, показывающая, как данные текут из Postgres через Debezium в Kafka, обрабатываются Spark, складываются в MinIO и запрашиваются через Trino)

Как запустить это чудо? ?

Проще некуда. Вам понадобится только Git и Docker с Docker Compose.

  1. Клонируем репозиторий:

    git clone https://github.com/fortiql/data-forge.git
    cd data-forge
    
  2. Запускаем магию:

    docker compose up -d
    

Всё! Идите заварите себе кофе. Через 5-10 минут (в зависимости от мощности вашего компьютера и скорости интернета) все 12 контейнеров будут запущены и готовы к работе.

Важное замечание: Эта штука довольно прожорлива. Для комфортной работы рекомендуется иметь минимум 16 ГБ оперативной памяти, а лучше — 32 ГБ.

После запуска все сервисы будут доступны по стандартным портам на localhost. Например, JupyterLab на 8888, Superset на 8088, а MinIO на 9001.

Типичный сценарий использования

Представьте, что вы хотите построить пайплайн, который отслеживает новые заказы в интернет-магазине и строит витрину для аналитики. С Data Forge это будет выглядеть так:

  1. Шаг 1: Источник. Вы добавляете новую запись в таблицу orders в PostgreSQL.

  2. Шаг 2: Захват изменений. Debezium тут же замечает это изменение, формирует событие и отправляет его в топик Kafka.

  3. Шаг 3: Обработка. Вы пишете PySpark-джоб в JupyterLab, который читает данные из этого топика, обогащает их (например, добавляет информацию о клиенте) и агрегирует.

  4. Шаг 4: Хранение. Результат обработки (например, агрегаты по дням) Spark сохраняет в формате Parquet в бакет в MinIO.

  5. Шаг 5: Доступ к данным. С помощью Trino вы можете одним SQL-запросом объединить "сырые" данные из Kafka и агрегаты из MinIO.

  6. Шаг 6: Визуализация. В Superset вы подключаетесь к Trino как к источнику данных и строите красивый дашборд, который обновляется в реальном времени.

  7. Шаг 7: Оркестрация. Весь этот пайплайн вы заворачиваете в DAG в Airflow, чтобы он запускался каждый час.

И всё это — не покидая пределов своего ноутбука. Фантастика!

Ложка дёгтя

Конечно, это не серебряная пуля.

  • Это не для продакшена. Data Forge — это песочница для обучения, прототипирования и отладки. Не пытайтесь развернуть на этом свой бизнес.

  • Требования к ресурсам. Как я уже говорил, для запуска всего стека нужно довольно мощное железо. На слабом ноутбуке придётся запускать только часть сервисов.

Заключение

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

Если вы давно хотели погрузиться в мир Data Engineering, но не знали, с чего начать, — это ваш шанс. Попробовать Data Forge — дело пяти минут, а пользы можно извлечь на многие недели вперёд.

Огромный респект автору проекта fortiql за проделанную работу!

Комментарии (0)