Files
mini-lakehouse-lab/README.md

6.9 KiB
Executable File
Raw Permalink Blame History

Lakehouse без магии

Практический курс, после которого ты будешь уверенно работать с Lakehouse-стеком: поднимать стенд, строить пайплайн raw -> bronze -> silver, читать одну таблицу из двух движков и не бояться изменений в данных.

Что ты получишь

После прохождения 8 модулей ты умеешь:

  1. Поднимать и диагностировать локальный Lakehouse-стенд — не по инструкции, а с пониманием, что и зачем работает.
  2. Объяснять архитектуру storage + catalog + compute — и видеть, как знакомые концепции из PostgreSQL/Greenplum ложатся на новый стек.
  3. Строить пайплайн raw -> bronze -> silver на реальном датасете NYC Taxi — с проверками качества и воспроизводимостью.
  4. Работать с двумя движками — записывать данные через Spark, читать через Trino, и понимать, почему это работает без копирования.
  5. Безопасно менять таблицы — schema evolution, time travel, rollback к предыдущему состоянию вместо паники.
  6. Обслуживать таблицы — compaction и expire_snapshots, с пониманием параллелей к VACUUM/REORGANIZE.

Курс рассчитан на ~12-15 часов самостоятельной работы. Каждый модуль: объяснение, демонстрация, самостоятельное задание, checkpoint.

Стек

Всё работает локально в Docker. Для первой сборки и скачивания учебных данных нужен интернет; облачный аккаунт не требуется.

graph TB
    U[Student / engineer]

    subgraph Access
        J[VS Code в браузере<br/>Jupyter notebooks / PySpark]
        Q[Trino UI / CLI<br/>ad hoc SQL]
    end

    subgraph Compute
        S[Spark cluster<br/>master + workers]
        T[Trino 478<br/>Iceberg connector]
    end

    subgraph Shared Services
        P[(PostgreSQL<br/>Iceberg JDBC catalog)]
        M[(MinIO<br/>S3-compatible)]
    end

    U --> J
    U --> Q
    J --> S
    Q --> T
    S --> P
    S --> M
    T --> P
    T --> M
Компонент Роль в стенде
MinIO Storage — хранит данные и служебные файлы Iceberg
PostgreSQL Catalog — метаданные JDBC-каталога lakehouse
Spark Compute — ETL, запись и чтение Iceberg-таблиц
Trino Compute — ad hoc SQL, чтение тех же таблиц
code-server VS Code в браузере — ноутбуки курса, Python и терминал внутри Docker
JupyterLab Запасной интерфейс для тех же ноутбуков

Ноутбуки подключаются к Spark-кластеру с готовыми настройками стенда.

С чего начать

  1. Открой START_HERE.md — подготовка, запуск и первый ноутбук с ожидаемым результатом.
  2. Продолжи по маршруту из восьми модулей.
  3. Между занятиями используй памятку учащегося: остановка, продолжение работы и диагностика.

Для одного учащегося рекомендуем компьютер с 16 ГБ RAM, не менее 4 CPU и ориентировочно 8 ГБ памяти для Docker, а также от 20 ГБ свободного места перед сборкой. Trino ограничен 2 ГиБ памяти контейнера и 1 ГиБ Java heap. Подробности и границы проверки — в системных требованиях.

Краткий запуск из корня репозитория после подготовки по START_HERE:

docker compose pull minio minio-init postgres trino
docker compose build
docker compose up -d
docker compose ps -a

MinIO скачивается готовым из GHCR, его версия и digest закреплены. Если какой-то источник недоступен из твоей сети, начни с инструкции по доступу к репозиториям.

После старта:

UI Адрес
VS Code в браузере http://localhost:8889
JupyterLab (запасной интерфейс) http://localhost:8888
Spark Master http://localhost:8080
Trino http://localhost:8090
MinIO Console http://localhost:9001

Открой ноутбук в браузерном VS Code и выбери Python внутри контейнера: локальный Python и venv не нужны. Оба интерфейса доступны только с хоста стенда. Первый запуск ноутбука описан в START_HERE.md.

Документы для прохождения

  • START_HERE.md — подготовка компьютера, запуск и первый результат.
  • docs/study_workflow.md — памятка для каждого занятия и помощь при ошибках.
  • docs/course_program.md — модульная структура и состав учебных материалов.
  • docs/stack_reference.md — порты, команды, конфиги, шпаргалка.
  • docs/glossary.md — справочник терминов (storage, catalog, compute, snapshot и др.).

Менторство

Курс рассчитан на самостоятельное прохождение, но если хочешь разобрать темы глубже с ментором по Data Engineering — напиши: @dementev_dev.

Лицензия

Материалы этого репозитория лицензированы на условиях Creative Commons Attribution 4.0 International (CC BY 4.0). См. LICENSE.