Прежде чем строить графики, создавать дашборды и анализировать данные, необходимо подготовить рабочее окружение. В реальных проектах Apache Superset обычно работает отдельно от базы данных и взаимодействует с ней через сетевое подключение.
В рамках курса мы будем использовать Docker. Такой подход позволяет быстро развернуть готовое окружение без установки большого количества зависимостей на операционную систему. Кроме того, Docker широко используется в компаниях, поэтому знакомство с ним будет полезно и за пределами этого курса.
Сразу хочу сказать, что знания Docker для развертывания Apache Superset не нужно. В этом конспекте вы найдете подробную инструкцию с командами и выполнив все в верном порядке у вас все запустится.
В этом уроке мы установим Apache Superset и PostgreSQL в отдельных контейнерах, создадим сетевое взаимодействие между ними, выполним первоначальную настройку Superset и познакомимся с интерфейсом платформы.
После завершения урока у вас будет полностью готовое окружение для дальнейшей работы.
Ключевые термины
- Docker — платформа для запуска приложений в изолированных контейнерах.
- Container — изолированное окружение, внутри которого работает приложение.
- Image — шаблон, на основе которого создается контейнер.
- Docker Network — виртуальная сеть для взаимодействия контейнеров между собой.
- Volume — постоянное хранилище данных контейнера.
- PostgreSQL — реляционная система управления базами данных.
- Apache Superset — BI-платформа для анализа данных и создания дашбордов.
- Port Mapping — механизм публикации порта контейнера наружу.
- Admin User — учетная запись администратора Superset.
Почему мы используем Docker
Установка Superset вручную может оказаться достаточно сложной задачей. Необходимо установить Python, настроить зависимости, подготовить внутреннюю базу данных, выполнить инициализацию сервиса и решить множество технических вопросов.
Для курса гораздо удобнее использовать Docker. Docker позволяет запускать приложения в контейнерах. Каждый контейнер содержит все необходимые зависимости и работает независимо от операционной системы пользователя. Для нас это означает, что весь процесс установки сводится к запуску нескольких команд.
Кроме того, такой подход максимально приближен к реальной практике. Во многих компаниях Superset и базы данных также запускаются в контейнерах.
Архитектура нашего проекта
В рамках курса мы будем использовать два контейнера.
- Первый контейнер будет содержать PostgreSQL. Именно в этой базе данных будут храниться данные интернет-магазина электроники, которые мы будем анализировать.
- Второй контейнер будет содержать Apache Superset.
Контейнеры будут работать независимо друг от друга, но при этом смогут взаимодействовать через общую сеть Docker. Superset будет получать данные из PostgreSQL и отображать их через веб-интерфейс.
Установка Docker
Перед началом работы необходимо установить Docker на виртуальную машину. Для этого используйте инструкцию по установке Docker . После завершения установки рекомендуется проверить работоспособность Docker: docker --version. Если команда выполнилась успешно и вывела версию Docker, можно переходить дальше. Также желательно проверить возможность запуска контейнеров: docker ps. Если ошибок нет, значит окружение готово к работе.
Создаем сеть для контейнеров
Контейнеры Docker по умолчанию изолированы друг от друга. Чтобы Superset смог подключаться к PostgreSQL, необходимо создать общую сеть. Выполним команду: docker network create app_net. После выполнения команды Docker создаст новую виртуальную сеть с именем app_net. В дальнейшем оба контейнера будут подключены именно к ней. Это позволит Superset обращаться к PostgreSQL по имени контейнера.
Создаем постоянное хранилище данных
Контейнеры являются временными объектами. Если контейнер удалить, данные внутри него также исчезнут. Для базы данных такое поведение недопустимо. Мы не хотим потерять данные после перезапуска контейнера. Поэтому создадим отдельное хранилище: docker volume create postgres_1_vol. Теперь данные PostgreSQL будут храниться в отдельном Docker Volume и сохранятся даже после удаления контейнера.
Запускаем PostgreSQL
Теперь создадим контейнер с PostgreSQL.
Выполним команду:
docker run -d \
--name postgres_1 \
-p 5432:5432 \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD='123' \
-e POSTGRES_DB=test_app \
-v postgres_1_vol:/var/lib/postgresql/data \
postgres:15
Разберем основные параметры. Параметр --name postgres_1 задает имя контейнера.
Переменные окружения POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB используются для создания пользователя и базы данных. Именно эти параметры понадобятся позже при подключении Superset к PostgreSQL.
Обратите внимание на значения:
Логин: postgres
Пароль: 123
База данных: test_app
Их необходимо сохранить. После запуска контейнера можно убедиться, что он работает docker ps. В списке должен появиться контейнер postgres_1.
Запускаем Apache Superset
Теперь создадим контейнер Superset.
Выполним команду:
docker run -d \
-p 8080:8088 \
-e "SUPERSET_SECRET_KEY=$(openssl rand -base64 42)" \
--name superset \
apache/superset:latest-dev
Наиболее важный параметр здесь -p 8080:8088. Он означает, что внутренний порт Superset будет доступен на порту 8080 нашей виртуальной машины. Именно через него мы будем открывать веб-интерфейс.
После запуска контейнера также проверим список активных контейнеров docker ps.
Теперь в списке должны присутствовать два контейнера: postgres_1, superset.
Первоначальная настройка Superset
После запуска контейнер еще не готов к работе. Необходимо создать администратора и выполнить инициализацию платформы.
Сначала создадим пользователя:
docker exec -it superset superset fab create-admin \
--username admin \
--firstname Superset \
--lastname Admin \
--email admin@superset.com \
--password admin
Для курса будем использовать:
Логин: admin
Пароль: admin
После этого обновим внутреннюю базу данных Superset docker exec -it superset superset db upgrade. Команда создает и обновляет системные таблицы, которые используются самой платформой.
Затем выполним инициализацию docker exec -it superset superset init. После завершения команды Superset будет полностью готов к работе.
Подключаем контейнеры к общей сети
Сейчас контейнеры существуют отдельно друг от друга. Чтобы Superset смог подключиться к PostgreSQL, необходимо добавить оба контейнера в ранее созданную сеть.
- Подключаем PostgreSQL
docker network connect app_net postgres_1. - Подключаем Superset
docker network connect app_net superset.
Теперь контейнеры смогут взаимодействовать между собой. Позже именно благодаря этой настройке Superset сможет подключиться к PostgreSQL по имени контейнера.
Открываем Superset
После завершения настройки можно открыть браузер. Используйте адрес http://localhost:8080. Появится страница авторизации.
Используйте учетные данные:
Логин: admin
Пароль: admin
После успешного входа откроется главная страница Apache Superset.
Первое знакомство с интерфейсом
После входа не стоит пытаться изучить весь интерфейс сразу. На данном этапе достаточно понимать назначение нескольких основных разделов.
- Раздел Dashboards содержит готовые дашборды. Именно здесь пользователи обычно проводят большую часть времени.
- Раздел Charts используется для хранения и управления визуализациями.
- Раздел Datasets содержит наборы данных, которые используются при построении графиков.
- Раздел SQL Lab позволяет выполнять SQL-запросы непосредственно из интерфейса Superset.
- Раздел Settings содержит различные настройки платформы.
На протяжении курса мы будем регулярно возвращаться к этим разделам, поэтому постепенно интерфейс станет привычным.
Наиболее частые ошибки
-
Забыть сохранить логин и пароль PostgreSQL.
Позже эти данные понадобятся для подключения базы данных к Superset. -
Не создать Docker Volume.
В этом случае данные базы могут потеряться после удаления контейнера. -
Не подключить контейнеры к общей сети.
Тогда Superset не сможет увидеть PostgreSQL. -
Использовать неправильный порт при открытии Superset.
В нашем случае необходимо использовать порт 8080, а не 8088. -
Не выполнить команды db upgrade и init.
Без них Superset не завершит первоначальную настройку. -
Перепутать логин администратора Superset и пользователя PostgreSQL.
Это разные учетные записи для разных задач. -
Не проверить состояние контейнеров после запуска.
Если контейнер завершился с ошибкой, дальнейшая настройка окажется невозможной.
Наиболее частые вопросы
-
Почему мы запускаем PostgreSQL отдельно от Superset?
В реальных проектах база данных и BI-платформа обычно являются независимыми сервисами. Такой подход упрощает сопровождение и масштабирование системы. -
Можно ли использовать другую СУБД вместо PostgreSQL?
Да. Superset поддерживает множество различных баз данных. В курсе используется PostgreSQL как один из наиболее популярных вариантов. -
Что произойдет после перезапуска контейнера?
Благодаря Docker Volume данные PostgreSQL сохранятся. -
Почему контейнеры нужно подключать к сети вручную?
По умолчанию контейнеры не имеют гарантированной возможности обращаться друг к другу. Общая сеть решает эту проблему. -
Зачем нужен пользователь admin в Superset?
Он используется для входа в интерфейс платформы и выполнения административных действий. -
Можно ли установить Superset без Docker?
Да, но процесс установки становится заметно сложнее. Для курса Docker является наиболее удобным вариантом. -
Что делать, если страница Superset не открывается?
Необходимо проверить состояние контейнера через командуdocker ps, а также убедиться, что используется правильный IP-адрес и порт.
Итоги
В этом уроке мы подготовили рабочее окружение для дальнейшего изучения Apache Superset. Мы установили PostgreSQL и Superset в отдельных Docker-контейнерах, создали постоянное хранилище данных, настроили сетевое взаимодействие между контейнерами и выполнили первоначальную настройку платформы. Кроме того, мы познакомились с основными разделами интерфейса Superset и убедились, что система готова к работе.
В следующем уроке начнем работать с данными: создадим первый Dataset, разберемся с его устройством и подготовим основу для будущих визуализаций.