docs(course): make JupyterLab the primary notebook interface

This commit is contained in:
ddadmin committed 2026-10-21 10:22:00 +02:00
1 parent 863d658a5f
commit db8f275ea0
8 files changed
+138 -88

No files matched your search

+24 -25
View File
@@ -12,7 +12,7 @@
1. Подготовь Docker, ресурсы и локальную копию репозитория.
2. Скачай образы, собери окружение и проверь запуск сервисов.
3. Открой первый ноутбук в браузерном VS Code и проверь результат вычисления.
3. Открой первый ноутбук в JupyterLab и проверь результат вычисления.
4. Продолжи по [программе курса](./docs/course_program.md#маршрут-по-модулям).
Датасет Taxi понадобится перед Модулем 3, DBeaver необязателен и понадобится
@@ -23,13 +23,13 @@
## Что подготовить
- Docker с запущенным движком и Docker Compose 2.17+ с BuildKit.
- Современный браузер; основной интерфейс курса — VS Code на `localhost:8889`.
- Современный браузер; основной интерфейс курса — JupyterLab на `localhost:8888`.
- Git для скачивания репозитория или его распакованную ZIP-копию.
- Свободные порты из таблицы ниже и доступ к источникам образов и зависимостей.
Команды ниже рассчитаны на Bash: терминал Linux/macOS или терминал Linux
в WSL2 на Windows с включенной интеграцией Docker Desktop. Выполняй их на
машине, где работает Docker. Терминал внутри браузерного VS Code для запуска
машине, где работает Docker. Терминал внутри JupyterLab для запуска
`docker compose` не подходит.
### Системные требования
@@ -94,8 +94,8 @@ docker compose config --quiet
| Trino UI | `http://localhost:8090` | Проверка координатора Trino |
| MinIO API | `http://localhost:9000` | S3-compatible endpoint |
| MinIO Console | `http://localhost:9001` | Просмотр бакетов и файлов |
| VS Code в браузере | `http://localhost:8889` | Основная точка входа в практику |
| JupyterLab | `http://localhost:8888` | Запасной интерфейс для ноутбуков |
| JupyterLab | `http://localhost:8888` | Основная точка входа в практику |
| VS Code в браузере | `http://localhost:8889` | Альтернативный интерфейс, по желанию |
| PostgreSQL | `localhost:5432` | JDBC-каталог Iceberg, нужен для диагностики |
## Быстрый запуск
@@ -165,15 +165,15 @@ docker compose ps -a
| --- | --- |
| [Spark Master](http://localhost:8080) | Два worker-а в состоянии `ALIVE` |
| [MinIO Console](http://localhost:9001) | После входа `minioadmin` / `minioadmin` виден бакет `lakehouse` — контейнер для файлов курса |
| [VS Code](http://localhost:8889) | Слева папки **Ноутбуки**, **Примеры (только чтение)**, **Документация (только чтение)** |
| [JupyterLab](http://localhost:8888) | Слева список ноутбуков `01_…` — `08_…` |
В [Trino UI](http://localhost:8090) для входа достаточно имени, например `student`;
пароль в стенде не задан. Сейчас достаточно проверить, что интерфейс открывается.
Чтение общих таблиц через Trino разберем в Модуле 6.
Этот маршрут предполагает Docker на твоем компьютере: `localhost` относится
к машине с браузером. Доступ к VS Code на удаленном сервере описан отдельно
в [инструкции по SSH-туннелю](./docs/stack_reference.md#vs-code-в-браузере).
к машине с браузером. Доступ к JupyterLab на удаленном сервере описан отдельно
в [инструкции по SSH-туннелю](./docs/stack_reference.md#jupyterlab).
## Роли сервисов в стенде
@@ -183,26 +183,23 @@ docker compose ps -a
| `PostgreSQL` | `catalog`: хранит метаданные JDBC-каталога Iceberg |
| `Spark` | `compute`: выполняет PySpark и Spark SQL задания |
| `Trino` | `compute`: читает те же таблицы через общий каталог |
| `VS Code / JupyterLab` | Интерфейсы для учебных ноутбуков |
| `JupyterLab` | Интерфейс для учебных ноутбуков |
## Как работать с ноутбуками
Ноутбук — файл с пояснениями, кодом и сохраненным выводом. Ядро — процесс Python,
который исполняет код и хранит переменные до остановки.
1. Открой `http://localhost:8889` в отдельной вкладке браузера.
2. Если сверху виден **Restricted Mode**, нажми **Manage → Trust** и закрой окно
Workspace Trust. Подтверди доверие только к своей копии этого учебного
репозитория: в Restricted Mode запуск ноутбуков ограничен.
3. В папке **Ноутбуки** открой `01_environment_and_smoke_test.ipynb`.
4. Нажми **Select Kernel → Python Environments** и выбери Python с путём
`/usr/bin/python3`. Он находится внутри контейнера `ide`, где уже есть
зависимости курса. Пункт **Existing Jupyter Server** здесь не нужен.
5. Запусти первую кодовую ячейку кнопкой слева или `Shift+Enter`, затем остальные
1. Открой `http://localhost:8888` в отдельной вкладке браузера.
2. Дважды нажми на `01_environment_and_smoke_test.ipynb` в списке файлов слева.
3. Если появится выбор ядра, выбери **Python 3 (ipykernel)**. Изменить ядро можно
через **Kernel → Change Kernel…**. Оно работает внутри контейнера `jupyter`,
где уже есть зависимости курса. Дождись состояния **Idle** в нижней панели.
4. Выдели первую кодовую ячейку и запусти её через `Shift+Enter`, затем остальные
ячейки по порядку. Результат появится под ячейкой. Сохрани ноутбук через
**File → Save** (`Ctrl+S`; на macOS — `Cmd+S`).
**File → Save Notebook** (`Ctrl+S`; на macOS — `Cmd+S`).
Терминал VS Code тоже работает внутри контейнера. Команды `docker compose`
Терминал JupyterLab тоже работает внутри контейнера. Команды `docker compose`
выполняй в терминале хоста, откуда запускал стенд.
### Как понять, что первый запуск прошел
@@ -228,17 +225,19 @@ expected_sum=499999500000
Правила запуска ячеек, перехода между модулями и сохранения данных собраны в
[памятке учащегося](./docs/study_workflow.md).
Запасной интерфейс — JupyterLab на `http://localhost:8888`. Файлы ноутбуков общие,
а ядра и переменные Python отдельные. Перед переходом сохрани ноутбук и заверши
Spark-сессию через `spark.stop()`; не редактируй один файл в двух интерфейсах
одновременно.
По желанию можно работать в [VS Code на `localhost:8889`](./docs/stack_reference.md#vs-code-в-браузере):
он запускается вместе со стендом. Некоторые сочетания браузера, расширений и
средств защиты мешают открытию ноутбуков в VS Code. В таком случае продолжи
курс в JupyterLab. Файлы общие, а ядра Python отдельные: перед сменой интерфейса
сохрани ноутбук, выполни `spark.stop()` и останови ядро. Не редактируй один файл
в двух интерфейсах одновременно.
## Базовая диагностика
Начни с `docker compose ps -a` и логов проблемного сервиса, например:
```bash
docker compose logs --tail=100 ide
docker compose logs --tail=100 jupyter
```
Выбери свой симптом в [таблице диагностики](./docs/study_workflow.md#если-что-то-не-работает).