BI分析工具 Apache Superset 安装部署

晋安国
2023-12-01

1 Superset概述

https://superset.apache.org
https://github.com/apache/superset

superset是一个开源的、现代的、轻量级BI分析工具,支持多种数据源、拥有丰富的图表展示形式、支持自定义仪表盘。
superset能够对接常用的大数据分析工具,如Hive、Kylin、Durid等,支持自定义仪表盘,可作为数仓的可视化工具。

2 Superset安装部署

superset是由python语言开发的web应用,要求python3.6环境

2.1 安装Miniconda

conda是一个开源的包、环境管理器,可以用于在一个机器上安装不同python版本的软件包及其依赖,并且能够在不同的python环境之间切换。
Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等,Miniconda包括Conda、Python。我们不需要如此多的工具包,故选择MiniConda。


1.下载Miniconda(python3版本)

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

2.安装 Miniconda

bash Miniconda3-latest-Linux-x86_64.sh
Please, press ENTER to continue 回车即可

Do you accept the license terms? [yes|no] 输入yes

Miniconda3 will now be installed into this location:
/root/miniconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/root/miniconda3] >>> 可以直接回车,使用默认安装路径


Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]
[no] >>> 输入 yes

加载环境变量配置文件,使之生效

source ~/.bashrc

取消激活base环境
miniconda安装完成后,再次启动会话窗口会进入到base环境,需要禁止激活base环境

conda config --set auto_activate_base false

2.2 创建Python3.6环境

superset开发测试使用的是python3.6环境,支持python3.6和python3.7的环境

1.配置conda国内镜像

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --set show_channel_urls yes

2.创建python3.6环境

conda create --name superset python=3.6

3.激活superset环境

-- 列出所有conda 中的python环境
conda info --envs
(base) [root@localhost ~]# conda info --envs
# conda environments:
#
base                  *  /root/miniconda3
superset                 /root/miniconda3/envs/superset

切换到superset

conda activate superset 

退出当前环境

conda deactivate

2.3 superset 部署

1.安装依赖

sudo yum install -y python-setuptools
sudo yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel

2.安装(更新)setuptools和pip
pip是python的包管理工具,可以和centos中的yum类比

pip install --upgrade setuptools pip -i https://pypi.douban.com/simple/

3.安装superset
-i的作用是指定镜像,这里选择的是国内的镜像

pip install apache-superset -i https://pypi.douban.com/simple/
pip3 install sqlalchemy==1.3.24 -i https://pypi.douban.com/simple/
pip3 install dataclasses -i https://pypi.douban.com/simple/

4.初始化superset数据库

superset db upgrade

5.创建管理员账户
flask是一个python web框架,superset使用的就是flask

 export FLASK_APP=superset
 flask fab create-admin

6.superset初始化

superset init

2.4 启动superset

1.安装gunicorn

说明:gunicorn是一个Python Web Server,可以和java中的TomCat类比

pip install gunicorn -i https://pypi.douban.com/simple/

2.启动superset
注意!确保当前conda环境为superset

  • –workers:指定进程个数
  • –timeout:worker进程超时时间,超时会自动重启
  • –bind:绑定本机地址,即为superset访问地址
  • –daemon:后台运行

IP 地址要写服务器IP,不要写localhost 或127.0.0.1

gunicorn --workers 5 --timeout 120 --bind IP:8787  "superset.app:create_app()" --daemon 

3.登录
http://IP:8787

4.停止superset
1.停止superset进程

ps -ef | awk '/superset/ && !/awk/{print $2}' | xargs kill -9

2.退出superset环境

conda deactivate

2.5 superset 启停脚本

#!/bin/bash

superset_status(){
    result=`ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | wc -l`
    if [[ $result -eq 0 ]]; then
        return 0
    else
        return 1
    fi
}
superset_start(){
        # 该段内容取自~/.bashrc,所用是进行conda初始化
        # >>> conda initialize >>>
        # !! Contents within this block are managed by 'conda init' !!
        __conda_setup="$('/opt/module/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
        if [ $? -eq 0 ]; then
            eval "$__conda_setup"
        else
            if [ -f "/opt/module/miniconda3/etc/profile.d/conda.sh" ]; then
                . "/opt/module/miniconda3/etc/profile.d/conda.sh"
            else
                export PATH="/opt/module/miniconda3/bin:$PATH"
            fi
        fi
        unset __conda_setup
        # <<< conda initialize <<<
        superset_status >/dev/null 2>&1
        if [[ $? -eq 0 ]]; then
            conda activate superset ; gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 --daemon 'superset.app:create_app()'
        else
            echo "superset正在运行"
        fi

}

superset_stop(){
    superset_status >/dev/null 2>&1
    if [[ $? -eq 0 ]]; then
        echo "superset未在运行"
    else
        ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9
    fi
}


case $1 in
    start )
        echo "启动Superset"
        superset_start
    ;;
    stop )
        echo "停止Superset"
        superset_stop
    ;;
    restart )
        echo "重启Superset"
        superset_stop
        superset_start
    ;;
    status )
        superset_status >/dev/null 2>&1
        if [[ $? -eq 0 ]]; then
            echo "superset未在运行"
        else
            echo "superset正在运行"
        fi
esac

3.使用

说明:对接不同的数据源,需安装不同的依赖,以下地址为官网说明
http://superset.apache.org/installation.html#database-dependencies

以下以 starrocks 为例
starrocks 使用的是mysql 驱动,需要在conda环境中安装 mysql 驱动

conda install mysqlclient

重启 superset

./superset.sh restart

数据源配置,例子为starrocks URI

mysql://root:123456@IP:9030/ssb?charset=utf8
 类似资料: