Files
mini-lakehouse-lab/README.md
T
ddadmin 1bf8a16111 fix(jupyter): исправлено подключение из VS Code
- Зачем: VS Code через Remote-SSH не мог создать kernel из-за XSRF-проверки при отключённой аутентификации.
- Что: Jupyter ограничен loopback-интерфейсом, а локальный режим без auth и XSRF задан в Docker Compose; документация синхронизирована.
- Проверка: docker compose config; JupyterLab GET 200; kernel POST 201 и DELETE 204 без token/XSRF; порт слушает только 127.0.0.1.
2026-09-14 11:02:49 -04:00

99 lines
5.0 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. Никаких облаков, внешних зависимостей и регистраций.
```mermaid
graph TB
U[Student / engineer]
subgraph Access
J[JupyterLab<br/>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, чтение тех же таблиц |
| `JupyterLab` | Точка входа — практические ноутбуки курса |
## С чего начать
1. Открой [START_HERE.md](./START_HERE.md) — запуск стенда, диагностика, первый ноутбук.
2. Пройди `notebooks/01_environment_and_smoke_test.ipynb`.
3. Дальше по порядку: [docs/course_program.md](./docs/course_program.md).
Краткий запуск из корня репозитория:
```bash
docker compose build
docker compose up -d
docker compose ps
```
После старта:
| UI | Адрес |
| --- | --- |
| JupyterLab | `http://localhost:8888` |
| Spark Master | `http://localhost:8080` |
| Trino | `http://localhost:8090` |
| MinIO Console | `http://localhost:9001` |
JupyterLab опубликован только на loopback-интерфейсе хоста и рассчитан на локальный одно-пользовательский стенд. Подключение через VS Code Remote-SSH описано в [START_HERE.md](./START_HERE.md#как-работать-в-jupyter).
## Документы для прохождения
- [START_HERE.md](./START_HERE.md) — первый маршрут: prerequisites, запуск, диагностика.
- [docs/course_program.md](./docs/course_program.md) — модульная структура и состав учебных материалов.
- [docs/stack_reference.md](./docs/stack_reference.md) — порты, команды, конфиги, шпаргалка.
- [docs/glossary.md](./docs/glossary.md) — справочник терминов (storage, catalog, compute, snapshot и др.).
## Менторство
Курс рассчитан на самостоятельное прохождение, но если хочешь разобрать темы глубже с ментором по Data Engineering — напиши: [@dementev_dev](https://t.me/dementev_dev).
## Лицензия
Материалы этого репозитория лицензированы на условиях Creative Commons Attribution 4.0 International (`CC BY 4.0`).
См. [LICENSE](./LICENSE).