Поднимаем BI Apache Superset в 2023 году — гайд с последними обновлениями

Спасибо @ivolake за «Поднимаем Apache Superset — необходимый и достаточный гайд». Больше года назад для меня новичка он стал базой, но спустя год было выпущено несколько обновлений SS и процесс его развёртывания претерпел важные изменения.

Наша среда обитания Superset 

  • Ubuntu 22.04

  • Docker 24.06 и Docker-compose 2.22.0

  • Postgres 14 и PgAdmin (ставиться отдельно)

  • Redis 7

  • Python 3.10 (есть в стандартной сборка Ubuntu 22.04)

  • Текстовый редактор Nano (есть в стандартной сборка Ubuntu 22.04)

    Сам Superset мы будем ставить свежей версии 3.0.1 https://github.com/apache/superset

Список полезных ссылок

Установка docker и docker-compose на Ubuntu

Обновляем существующий список пакетов:

sudo apt update

Устанавливаем пакеты для apt:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Настраиваем путь репозитория Docker в источники apt:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Далее добавим ключ GPG для официального репозитория Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Обновляем ещё раз существующий список пакетов:

sudo apt update

Устанавливаем Docker:

sudo apt install docker-ce

Проверим статус Docker:

sudo systemctl status docker

Нам важно active (running)

Нам важно active (running)

Загружаем версию Docker Compose (2.22.0)

 sudo curl -L "https://github.com/docker/compose/releases/tag/v2.22.0-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose  

Команда на скачивание актуальна для версии v2.22.0

Команда на скачивание актуальна для версии v2.22.0

Применяем разрешения для исполняемого файла к двоичному файлу:

sudo chmod +x /usr/local/bin/docker-compose

Ну и на конец финальная проверка:

docker compose version

Как-то так

Как-то так

Установка Apache Superset

Клонируем проект из github:

git clone https://github.com/apache/superset.git

Переходим в директорию:

cd superset

Переключаемся на ветку нужного релиза (2.1.0 — версия постабильней (рекомендована), 3.0.1 — последняя версия)

git checkout 2.1.0

Версию выбираем на своё усмотрение. Проверить статус можно командой git status

Версию выбираем на своё усмотрение. Проверить статус можно командой git status

Установка редактора Nano (опционально)

Nano есть в стандартной сборке, но если по каким-то причинам его нет, то установим:

sudo apt update
sudo apt upgrade

sudo apt install nano

nano --version

Отредактируем через nano файл docker-compose-non-dev.yml (можно пропустить, если нужна последняя версия 0.0.0 dev) :

x-superset-image: &superset-image apache/superset:${TAG:-latest-dev}

Меняем на:

x-superset-image: &superset-image apache/superset:2.1.0   (или 3.0.1)

Переходим в папку docker:

cd docker

Открываем важный файл настройки конфигураций superset_config.py

nano superset_config.py

Добавим / Заменим в него текст:

# Superset specific config

ROW_LIMIT = 25000

# Flask App Builder configuration
# Your App secret key will be used for securely signing the session cookie
# and encrypting sensitive information on the database
# Make sure you are changing this key for your deployment with a strong key.
# Alternatively you can set it with `SUPERSET_SECRET_KEY` environment variable.
# You MUST set this for production environments or the server will not refuse
# to start and you will see an error in the logs accordingly.

SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY'

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI

# Flask-WTF flag for CSRF

WTF_CSRF_ENABLED = True

# Add endpoints that need to be exempt from CSRF protection

WTF_CSRF_EXEMPT_LIST = []

# A CSRF token that expires in 1 year

WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations

MAPBOX_API_KEY = ''

Тут нам нужно настроить SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY' — это параметр безопасности, по новым требованиям для успешной установки требуется задать свой уникальный СЕКРЕТНЫЙ КОД.

Генерируем свой уникальный SECRET_KEY:

openssl rand -base64 42

Вставляем результат в параметр выше и будет что-то типа:

SECRET_KEY = 'QWDSAB8DhYr63dBsqfrLTxMzG+Z6FNF1uyrsjaSfFk9yXMqeZ8tlndKia'

Сохраняем наши правки (ctrl + S) и выходим из редактора

Выполняем команды:

sudo docker-compose -f docker-compose-non-dev.yml pull

sudo docker-compose -f docker-compose-non-dev.yml up

Если спустя пару минут установка ещё будет не окончена, то можно попробовать прервать установку …

Проверяем, что всё ок:

docker ps -a

Заходим в браузер и переходим по адресу нашего сервера на порт 8088 (, а может вы настроили другой, 8080 либо другой).

Ура, успех! На скрине нестандартная сборка

Ура, успех! На скрине нестандартная сборка

Стандартные логин и пароль (их можно задать в файле docker-init.sh перед запуском установки):

Пользователь: admin

Пароль: admin

Позже можно поменять в приложении.

Дальше, как быть с БД и СУБД

БД можно подключить на своё усмотрение через настройки на портале BI.

По умолчанию, мы установили БД Postgres на порт 5432, для использования её нужно подключить через настройки на портале BI.

Если нужна СУБД, то подойдёт PgAdmin,  её Docker-файл можно найти на https://hub.docker.com/r/dpage/pgadmin4

Если нужен будет коннект к Mssql, то потребуется доп.драйвер и залезть в докер-файл SS:

Введём команду, чтобы увидеть список запущенных контейнеров:

docker ps

Найдём номер нужного нам контейнер superset_app и зайдём в этот контейнер:

sudo docker exec -it <номер_нашего_контейнера> bash

Там установим нужный драйвер и выйдем из контейнера (ctrl + z):

sudo apt update

sudo apt upgrade

pip install -U pip 

pip install pymssql

© Habrahabr.ru