Глава 1. Установка Apache Superset 4.1.2 на Ubuntu 24.04

Author

Artem A. Golubnichiy

В данной главе мы рассмотрим пошаговую установку Superset версии 4.1.2 на сервере под управлением Ubuntu 24.04. Инструкция ориентирована на пользователей, имеющих базовые знания работы с Linux и системами управления пакетами.

Создание виртуального сервера (опционально)

Apache Superset можно развернуть на локальном сервере, однако в данном примере будет рассмотрено развертывание на облачном виртуальном сервере. Для этого можно воспользоваться услугами одного из хостинг-провайдеров, например, Beget.

После регистрации на платформе перейдите во вкладу “Облако” и выберите опцию “Создать виртуальный сервер”. На этапе создания сервера необходимо выбрать конфигурацию, соответствующую требованиям Apache Superset. Минимальные рекомендуемые параметры:

  • 1 CPU;
  • 1 ГБ оперативной памяти;
  • 10 ГБ дискового пространства.

Для корректной загрузки примеров может потребоваться файл подкачки объемом не менее 1 ГБ. В качестве операционной системы рекомендуется выбрать Ubuntu 24.04. Также для удобства можно задать имя сервера и пароль, который будет использоваться для пользователя root.

Подĸлючение ĸ виртуальному серверу

После создания виртуального сервера подключение осуществляется через SSH. Для этого можно использовать специализированное программное обеспечение, такое как SSH Term или аналогичные клиенты. При подключении укажите следующие параметры:

  • IP-адрес сервера (указывается в интерфейсе хостинга);
  • Порт: 22 (по умолчанию для SSH);
  • Имя пользователя: root;
  • Пароль, указанный при создании сервера.

Переход в screen

При работе с сервером через SSH возможны отключения, связанные с нестабильностью соединения и длительным бездействием, для того чтобы весь процесс установки прошел корректно рекомендуется использовать screen:

screen -S superset
  • команда создает новую сессию с именем superset в терминальном мультиплексоре screen, позволяя работать с Superset в фоне, даже если вы отключитесь от сервера.

Для повторного входа в screen необходимо использовать команду:

screen -r superset

Команда восстановит доступ к ранее созданной сессии superset.

Добавление репозитория Python и установĸа Python 3.11

Ubuntu 24.04 по умолчанию включает интерпретатор Python версии 3.12. Однако, учитывая возможные зависимости, это может вызвать сложности при установке Apache Superset. Одним из наиболее простых решений данной проблемы является установка более ранней версии интерпретатора, например Python 3.11. Для этого необходимо сначала добавить PPA-репозиторий deadsnakes:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

Во всех примерах кода ниже, включая этот, используется флаг -y, который упрощает процесс установки, автоматически подтверждая действия, такие как загрузка дополнительных данных на диск.

sudo apt install python3.11 python3.11-venv python3.11-dev -y

В данном коде устанавливаются три ключевых пакета:

  • python3.11 - версия Python, совместимая с Apache Superset;
  • python3.11-venv - модуль для создания виртуального окружения;
  • python3.11-dev - разработческие заголовочные файлы, необходимые для компиляции зависимостей.

Создание и аĸтивация виртуального оĸружения

Для обеспечения корректной работы Apache Superset необходимо создать и активировать изолированное виртуальное окружение:

python3.11 -m venv superset
source superset/bin/activate

Виртуальное окружение позволяет изолировать зависимости Apache Superset от системных библиотек. Такой подход особенно важен при развертывании нескольких сложных систем на одном сервере.

Обновление системы и установĸа необходимых библиотеĸ

На данном этапе требуется обновить систему и установить дополнительные зависимости:

sudo apt install -y build-essential libssl-dev libffi-dev libpq-dev
pip install --upgrade pip setuptools

Первая команда устанавливает системные библиотеки и компиляторы, необходимые для того, чтобы pip (менеджер Python-пакетов) смог собрать и установить библиотеки, содержащие нативный (C/C++) код.

  • build-essential - Набор базовых инструментов сборки: включает компилятор gcc, make и др. Без него невозможно собрать некоторые Python-библиотеки (например, psycopg2, cryptography).
  • libssl-dev - Заголовочные файлы для OpenSSL — необходимы для библиотек, использующих шифрование (например, cryptography, requests, flask).
  • libffi-dev - Используется при работе с вызовами функций из нативного кода. Нужна для некоторых криптографических и сетевых библиотек.
  • libpq-dev - Клиентская библиотека для PostgreSQL. Необходима при установке psycopg2, чтобы Python мог подключаться к PostgreSQL.

Без этих системных библиотек pip не сможет установить часть Python-библиотек, выдав ошибку при сборке (error: command 'gcc' failed with exit status 1 и др.).

Вторая команда обновляет менеджер пакетов pip и инструмент setuptools, который нужен для сборки и установки Python-пакетов.

Установĸа Apache Superset и зависимостей

После подготовки окружения производится установка Apache Superset, а также дополнительных пакетов. В приведенном примере мы подключаем драйверы для работы с ClickHouse и PostgreSQL, библиотеку prophet, используемую в качестве инструмента для прогнозирования временных рядов, а также библиотеку для обработки изображений — Pillow.

pip install apache-superset clickhouse-sqlalchemy==0.2.4 psycopg2-binary prophet Pillow marshmallow==3.19.0

Примечание: Для ClickHouse используется драйвер версии 0.2.4, поскольку эта версия обеспечивает стабильную работу с текущими настройками Apache Superset.

Примечание: Библиотека marshmallow необходимая для работы Apache Superset недавно была обновлена до версии 4.0, таким образом после установки Apache Superset возникает ошибка при создании пользователей и начале работы, для устранения этой ошибки необходимо откатиться на более старую версию библиотеки, версия 3.19 подходит для этих целей.

Обязательные и вариативные настройки

Apache Superset требует наличие секретного ключа для обеспечения безопасности. Для его генерации можно использовать следующую команду:

openssl rand -base64 42

Сгенерированный ключ будет выглядеть примерно так: 2smnPpP1TpTylu5bQ6yxRA21VM2Qlvsf3G0RiSGIVSl/np+TtBY4JAGh.

Скопируйте ключ и добавьте его в конфигурационный файл Superset — superset_config.py. Для того, чтобы не изменять исходный конфигурационный файл Apache Superset рекомендуется создать дополнительные настройки, правящие исходный файл. Для создания этого файла используется команду:

nano ~/superset/superset_config.py

Пример заполнения файла представлен ниже:

import os
# Установка секретного ключа - обязательно
SECRET_KEY = os.environ.get('SUPERSET_SECRET_KEY', '+oqRGoLYaLjQ6v85IKjKStBop5pAM7IZNj4FSOvFK1j8PUnOA1hGN5fx')
# Установка ключа токена для корректной работы с картами через MAPBOX - вариативно
MAPBOX_API_KEY = os.environ.get('SUPERSET_MAPBOX_API_KEY', 'pk.ey...')

# Дополнительные настройки по желанию:
FEATURE_FLAGS = {
    "ENABLE_TEMPLATE_PROCESSING": True, # Для включения шаблонов Jinja 
}

HTML_SANITIZATION = False # Отключение HTML-фильтрации (для работы с Handlebars-чартами)

TALISMAN_ENABLED = True # Talisman — это расширение Flask, которое добавляет заголовки безопасности

TALISMAN_CONFIG = {
    "content_security_policy": {
        "default-src": ["'self'"],
        "style-src": ["'self'", "'unsafe-inline'"],
        "img-src": ["'self'", "data:"],
        "worker-src": ["'self'", "blob:"],
        "connect-src": [
            "'self'",
            "https://api.mapbox.com",
            "https://events.mapbox.com",
        ],
        "object-src": ["'none'"],
        "script-src": ["'self'", "'strict-dynamic'", "'unsafe-eval'"],
    },
    "content_security_policy_nonce_in": ["script-src"],
    "force_https": False,
    "session_cookie_secure": False,
}

Важно помнить, что файл superset_config.py имеет формат Python, поэтому следует соблюдать синтаксис данного языка. Например:

  • Строковые значения должны быть заключены в одинарные или двойные кавычки;
  • Логические переменные принимают только два значения: True или False.

Конфигурация файла superset_config.py напрямую зависит от задач, для которых используется Apache Superset. Например, если требуется работа с инструментом Jinja, необходимо включить соответствующий флаг через включение в файл:

FEATURE_FLAGS = {
    "ENABLE_TEMPLATE_PROCESSING": True,
}

После завершения правок в редакторе nano изменения необходимо сохранить. Самый простой способ — это завершить редактирование с помощью сочетания клавиш Ctrl+X, затем подтвердить сохранение, нажав Y, и окончательно зафиксировать изменения клавишей Enter.

На следующем этапе необходимо экспортировать путь к файлу конфигурации и мгновенно применим изменения, которые мы только что внесли в .bashrc, не дожидаясь, когда пользователь заново откроет терминал.:

echo 'export SUPERSET_CONFIG_PATH=superset/superset_config.py' >> ~/.bashrc
source ~/.bashrc

Данная конструкция добавляет строчку в специальный файл настроек терминала (.bashrc), чтобы при каждом запуске терминала переменная SUPERSET_CONFIG_PATH автоматически задавалась.

Повторно активируем окружающую среду для продолжения работы с системой:

source superset/bin/activate

Установĸа ĸонтеĸста для работы и миграция базы данных

Apache Superset построен на основе микрофреймворка Flask. Для связывания переменной окружения FLASK_APP с Superset необходимо установить её значение равным superset. Для этого используется следующая команда:

export FLASK_APP=superset

На следующем этапе производится инициализация базы данных, используемой Superset. Для миграции базы данных выполните команду:

superset db upgrade

После выполнения данной команды в базе данных будут созданы все необходимые таблицы, и она будет готова к использованию с Superset.

Создание администратора

Для работы с системой необходимо создать пользователя с правами администратора. Данный пользователь сможет выполнять все необходимые настройки системы, а также добавлять новых пользователей через графический интерфейс Apache Superset.

Для создания аккаунты администратора выполните следующую команду:

superset fab create-admin

После выполнения команды система запросит ввод следующих данных: имя пользователя (логин), его имя и фамилию, адрес электронной почты, пароль и его подтверждение. После корректного заполнения будет выведено сообщение по типу:

Recognized Database Authentifications.
Admin User admin created.

Создание и аĸтивация файла подĸачĸи (опционально)

Если сервер работает с ограниченными ресурсами оперативной памяти, можно увеличить её объем за счет создания файла подкачки. В данном примере рассмотрен процесс выделения дополнительного 1 ГБ памяти.

На первом этапе необходимо определить место расположения файла подкачки и его размер. Для создания файла размером 1 ГБ в корневой директории (/swapfile) выполните следующую команду:

sudo fallocate -l 1G /swapfile

Так как файл подкачки может содержать чувствительные данные из оперативной памяти, рекомендуется ограничить доступ к нему, разрешив чтение и запись только суперпользователю (root). Для этого выполните команду:

sudo chmod 600 /swapfile

Далее, для использования файла подкачки операционной системой, его необходимо инициализировать и активировать, выполнив две команды:

sudo mkswap /swapfile
sudo swapon /swapfile

Для проверки активных областей подкачки можно использовать следующую команду:

sudo swapon --show

Если все этапы выполнены ĸорреĸтно, результат будет аналогичен поĸазанному:

NAME      TYPE  SIZE   USED PRIO
/swapfile file 1024M 100.3M   -2

Для того чтобы файл подкачки активировался автоматически при каждой перезагрузке системы, его необходимо добавить в конфигурационный файл /etc/fstab. Для этого выполните следующую команду:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Загрузĸа примеров в Superset (опционально)

Для загрузки примеров дашбордов и чартов в Apache Superset необходимо выполнить команду:

superset load_examples

Данная команда загружает 11 дашбордов и 120 чартов, которые можно использовать в качестве учебных примеров.

Запусĸ Superset и настройĸа доступа

Для запуска Apache Superset и обеспечения возможности подключения ĸ нему без ограничений по IP-адресу выполните следующий набор команд:

superset init
superset run -h 0.0.0.0 -p 5000
  • superset init - инициализирует базовые настройки Apache Superset, вĸлючая создание необходимых таблиц в базе данных.
  • superset run -h 0.0.0.0 -p 5000 - запускает сервер Superset. Параметр -h 0.0.0.0 позволяет подключаться к серверу с любого IP-адреса, -p 5000 указывает порт, на котором будет доступен Superset

Доступ ĸ Apache Superset

Для доступа к Apache Superset откройте веб-браузер и перейдите по IP-адресу сервера с указанием порта. Пример ссылки для подключения - http://45.153.189.66:5000. При успешном переходе откроется страница входа в систему, пример которой показан на рисунке:

Пример отображения стартовой страницы Apache Superset

Выход из сессии screen без остановĸи Superset

Чтобы выйти из текущей сессии screen, не останавливая работу Superset, нажмите сочетание клавиш Ctrl + A, затем D. Данное действие позволяет отключиться от сессии, сохраняя её активной в фоне.