Этот документ не обязателен для прохождения лабораторных, но полезен, если вы:
- хотите понять, как устроен стенд “под капотом”;
- меняете конфиги/зависимости и пересобираете образы;
- отлаживаете проблемы со стартом Greenplum/PXF или Connections в Airflow.
Если make не установлен, можно пользоваться docker compose ....
Но с make команды короче и проще.
Установка make (если нужно):
- Linux (Debian/Ubuntu):
sudo apt install -y make - macOS:
brew install make - Windows:
- WSL:
sudo apt install -y make - Chocolatey:
choco install make - Scoop:
scoop install make
- WSL:
Примеры:
make up
make logs
make gp-psqlГотовые DAG по умолчанию подключаются к БД через Airflow Connections:
greenplum_conn— Greenplum;bookings_db— демо‑БД bookings (bookings-db).
В docker-compose.yml Connections задаются через переменные окружения AIRFLOW_CONN_...,
поэтому они могут не отображаться в UI — для DAG это нормально.
Если нужно завести вручную:
- Airflow UI → Admin → Connections → Add a new record
- Пример для Greenplum:
- Conn Id:
greenplum_conn - Conn Type:
Postgres - Host:
greenplum - Schema:
gp_dwh - Login/Password:
gpadmin/gpadmin - Port:
5432
- Conn Id:
PXF (Platform Extension Framework) — компонент Greenplum для работы с внешними источниками.
В этом стенде PXF используется для чтения таблицы bookings.bookings из Postgres прямо из Greenplum
через внешнюю таблицу stg.bookings_ext. Поэтому загрузка в stg.bookings выглядит как обычный
INSERT ... SELECT без промежуточных файлов.
Greenplum собирается из собственного Dockerfile.greenplum, чтобы:
- не ловить проблемы с правами/
chownпри bind‑mount конфигов; - держать PXF‑конфиги и JDBC‑драйвер внутри образа;
- делать старт контейнера идемпотентным.
При старте контейнера:
- seed‑конфиги PXF докладываются в
PXF_BASEна persistent volume; - создаются каталоги
PXF_BASE/runиPXF_BASE/logs; - расширение
pxfсоздаётся автоматически, когда Greenplum становится доступен (с ретраями).
Полезные команды:
make build # пересобрать образы
docker compose ps # проверить healthПерезапись seed‑файлов в PXF_BASE:
PXF_SEED_OVERWRITE=1— перезаписать конфиги при старте;PXF_SYNC_ON_START=1— выполнитьpxf cluster syncпри старте.
Подробнее: см. ветку solution (docs/reference/pxf_bookings.md).
Airflow тоже собирается из собственного Dockerfile.airflow, чтобы зависимости ставились при сборке,
а не во время старта контейнеров.
Если меняли airflow/requirements.txt или Dockerfile.airflow, пересоберите образы:
make build
make upЛокальным окружением управляет uv — он создаёт .venv из pyproject.toml / uv.lock.
uv sync
make test
make lint
make fmtНе устанавливайте зависимости через pip install --user ... — это часто ломает окружение и IDE.
Все настройки лежат в .env (шаблон: .env.example).
AIRFLOW_WEB_PORT— Airflow UI (по умолчанию8080)PGMETA_PORT— мета‑БД Airflow (по умолчанию5433, обычно нужно только для диагностики)BOOKINGS_DB_PORT— bookings-db (по умолчанию5434)GP_HOST_PORT— Greenplum (по умолчанию5435)
GP_USER,GP_PASSWORD,GP_DBGP_PORT— внутренний порт в Docker-сети (обычно5432)GP_HOST_PORT— внешний порт на хосте (по умолчанию5435)
BOOKINGS_DB_USER,BOOKINGS_DB_PASSWORDBOOKINGS_DB_PORT— внешний порт (по умолчанию5434)BOOKINGS_START_DATE— стартовая дата модельного времениBOOKINGS_INIT_DAYS— сколько дней генерировать приmake bookings-generate(генерация с нуля)BOOKINGS_JOBS— число джобов генератора (по умолчанию1)