Contents
Введение
На рынке появились ряд open-source решений, которые могут конкурировать в рамках небольших задач с промышленными BI системами (ввиду их условной бесплатности, условной т.к. зарплату разработчикам никто не отменял).
В этой статье я опишу процесс инсталляции Apache Superset на VPS от Beget (это не реклама, просто сам пользуюсь ими). Инсталляцию выполним двумя способами — при помощи Docker и Docker-Compose.
Канал в телеграме Apache Superset BI:
Краткий экскурс в Docker и Docker-Compose
В первую очередь рекомендую почитать статьи:
- Основы Docker за Х часов и Y дней
- Руководство по Docker Compose для начинающих
- Learn Docker in Y minutes
- Архитектура Docker и ее компоненты для начинающих
Docker — это инструмент контейнеризации с открытым исходным кодом, используемый для упрощения создания и развертывания приложений с использованием концепции контейнеров.
Контейнеры позволяют нам упаковать все части приложения и развернуть его как единое целое.
Docker Compose — это инструмент Docker, который используется для развертывания многоконтейнерных приложений.
Разница между Docker и Docker-Compose
Docker используется для управления отдельным контейнером (службой) вашего приложения.
Docker-Compose используется для управления несколькими контейнерами одновременно для одного и того же приложения. Этот инструмент предлагает те же функции, что и Docker, но позволяет создавать более сложные приложения.
Docker (индивидуальный контейнер) VS Docker-Compose (несколько контейнеров):
Список команд для Docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes to files or directories on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on Docker objects kill Kill one or more running containers load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container pause Pause all processes within one or more containers port List port mappings or a specific mapping for the container ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart one or more containers rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive (streamed to STDOUT by default) search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop one or more running containers tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE top Display the running processes of a container unpause Unpause all processes within one or more containers update Update configuration of one or more containers version Show the Docker version information wait Block until one or more containers stop, then print their exit codes |
Список команд для Docker-Compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
build Build or rebuild services config Validate and view the Compose file create Create services down Stop and remove resources events Receive real time events from containers exec Execute a command in a running container help Get help on a command images List images kill Kill containers logs View output from containers pause Pause services port Print the public port for a port binding ps List containers pull Pull service images push Push service images restart Restart services rm Remove stopped containers run Run a one-off command scale Set number of containers for a service start Start services stop Stop services top Display the running processes unpause Unpause services up Create and start containers version Show version information and quit |
Где хранятся контейнеры и образы Docker?
Содержимое /var/lib/docker
каталога зависит от драйвера, который Docker использует для хранения.
- Контейнеры лежат в каталоге
/var/lib/docker/containers
/var/lib/docker/{driver-name}
будет содержать специфичное для драйвера хранилище для содержимого images.
Видео-подборка по теме Docker
Docker-compose что это? Первое знакомство
Docker compose — группы контейнеров. Docker
Docker Compose in 12 Minutes
Основы Docker. Большой практический выпуск
Установка Apache Superset на VPS с помощью image Docker
Создаем VPS
Регистрируемся на beget.com, в разделе VPS есть кнопка создать VPS:
Для теста можете использовать простой тариф
Прописываем hostname, запоминаем пароль и нажимаем создать сервер. Через минуту сервер готов.
Подключаемся через ssh и подготавливаем среду Docker
На винде есть встроенный ssh, чтобы через встроенный ssh подключиться, необходимо открыть консоль cmd и вбить команду:
1 |
ssh root@45.67.58.178 |
Далее необходимо запустить набор команд для инсталляции Docker
1 Обновляем существующий список пакетов
1 |
sudo apt update |
2 Далее устанавливаем пакеты, которые позволят apt
использовать пакеты через HTTPS:
1 |
sudo apt install apt-transport-https ca-certificates curl software-properties-common |
3 Далее добавим ключ GPG для официального репозитория Docker:
1 |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
4 Добавляем ремозиторий докер в источники apt
1 |
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" |
5 Обновляем базу данных пакетов и добавим в нее пакеты Docker из недавно добавленного репозитория:
1 |
sudo apt update |
6 Далее проверим, что установка будет выполняться из репозитория Docker, а не из репозитория Ubuntu по умолчанию:
1 |
apt-cache policy docker-ce |
Мы должны получить следующий ответ (номер версии Docker может отличаться):
1 2 3 4 5 6 7 8 9 10 11 12 13 |
root@apache1superset:~# apt-cache policy docker-ce docker-ce: Installed: (none) Candidate: 5:20.10.6~3-0~ubuntu-focal Version table: 5:20.10.6~3-0~ubuntu-focal 500 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 5:20.10.5~3-0~ubuntu-focal 500 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 5:20.10.4~3-0~ubuntu-focal 500 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 5:20.10.3~3-0~ubuntu-focal 500 ... |
или картинка
docker-ce
пока еще не установлен (Installed: none), но является кандидатом на установку из репозитория Docker для Ubuntu 20.10.4 (версия focal
).
Далее устанавливаем докер командой (на доп.вопрос отвечаем «yes«):
1 |
sudo apt install docker-ce |
Docker будет автоматически установлен, также запустится демон-процесс и будет активирован запуск при загрузке. Проверьте статус докера (что он running/active):
1 |
sudo systemctl status docker |
Теперь у вас есть доступ к службе Docker (демон-процесс) и к утилите командной строки docker
.
Как установить и настроить Apache Superset Docker
Ссылка на официальный докер образ https://hub.docker.com/r/apache/superset
Запускаем команду:
1 |
docker pull apache/superset |
Начнется процесс скачивания последнего образа
Результат команды:
Для того, чтобы посмотреть список образов Docker, которые были загружены на ваш сервер VPS, введите команду:
1 |
docker images |
Результат:
Далее необходимо стартовать superset instance для порта 8080. Запускаем команду:
1 |
docker run -d -p 8080:8088 --name superset apache/superset |
Результат:
Теперь мы можем зайти по url в Superset, в моем случае это http://45.67.58.178:8080/login/. Отображается
Теперь нам нужно донастроить наш инстанс.
Устанавливаем админский аккаунт
1 2 3 4 5 6 |
docker exec -it superset superset fab create-admin \ --username admin \ --firstname Superset \ --lastname Admin \ --email admin@superset.com \ --password admin |
Результат:
Далее обновляем local DB до последней версии:
1 |
docker exec -it superset superset db upgrade |
Загружаем примеры в наш инстанс:
1 |
docker exec -it superset superset load_examples |
Загрузился один пример:
Далее устанавливаем роли:
1 |
docker exec -it superset superset init |
результат:
Теперь заходим на страницу http://45.67.58.178:8080/login/ с логином и паролем (я установил стандартный admin/admin для презентации).
Установилась старая версия
Развернуть исправно образ с более новой версией 1.1.0 с помощью команды:
1 |
docker pull apache/superset:1.1.0 |
у меня не вышло. Для ознакомления с возможностями Apache Superset можете воспользоваться версией 0.999.0dev, по-крайней мере развертывание этой версии самое простое.
Далее рассмотрим более сложный пример с docker-compose.
Как остановить контейнер, удалить образ Docker
1 2 3 4 5 |
docker stop superset docker rm -v superset docker image rm apache/superset |
Как развернуть Apache Superset с помощью Docker-Compose
Для разворачивания Apache-Superset рекомендую увеличить мощности сервера VPS, мне 1 ядра и 1 Гб памяти не хватило. По ощущениям должно хватить 2 ядра и 2 Гб памяти:
Видео по инсталляции Apache Superset с помощью Docker-Compose:
Устанавливаем Docker (все как в предыдущем разделе)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" sudo apt update apt-cache policy docker-ce sudo apt install docker-ce sudo systemctl status docker |
Устанавливаем docker-compose
Загружаем текущую стабильную версию Docker Compose:
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Результат команды:
docker-compose файл на сервере:
Применяем разрешения для исполняемого файла к двоичному файлу:
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Чтобы протестировать docker-compose (установилась версия или нет), запустим команду:
1 |
docker-compose --version |
Результат команды:
Устанавливаем Apache Superset версии 1.1.0 через docker-compose
Пример инсталляции из youtube:
Клонируем репозиторий, переключаемся на версию 1.1.0, проверяем статус.
1 2 3 4 5 6 7 |
git clone https://github.com/apache/superset.git cd superset git checkout 1.1.0 git status |
Результат:
Через менеджер в папке root/superset в файле docker-compose-non-dev.yml меняем версию latest-dev на 1.1.0
Заходим в директорию superset:
1 |
cd superset |
Запускаем процесс зарвертывания контейнеров через docker-compose:
1 |
docker-compose -f docker-compose-non-dev.yml up |
или устанавливаем в фоновом режиме:
1 |
docker-compose -f docker-compose-non-dev.yml up -d |
Вывести информацию по контейнерам и логи:
1 2 3 |
docker ps docker logs -f superset_app |
Результат:
Установка Apache Superset на VPS на чистую Ubuntu 20.04
Для установки Apache Superset требуется Python версии 3.7.9. Пока не удалось до конца настроить Apache Superset через Anaconda3, но приведу код, который позволил успешно инсталлировать Superset (без запуска).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
//Install Anaconda3 на Ubuntu 20.04 sudo apt update sudo apt install build-essential cd /tmp curl https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh --output anaconda.sh sha256sum anaconda.sh bash anaconda.sh source ~/.bashrc conda list //Create and activate an conda environment conda create --name py379 python=3.7.9 conda activate py379 python --version pip install apache-superset superset db upgrade export FLASK_APP=superset superset fab create-admin superset load_examples superset init |
1 Comment