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