一 安装 Miniconda3 (环境管理工具)
1.1 下载安装
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
1.2 配置国内镜像源
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/
source ~/.bashrc
1.3 常用命令
# 禁止激活默认base环境
conda config --set auto_activate_base false
# 创建一个环境
conda create --name <环境名称> python=3.10
# 查看所有环境。
conda info --envs
# 激活一个环境
conda activate <环境名称>
# 退出当前环境、
conda deactivate
# 删除指定名称的虚拟环境,并删除所有环境相关的包及其依赖。
conda remove --name <环境名称> --all
# 删除指定名称的虚拟环境,同时保留已安装的包和依赖,以备以后重新创建虚拟环境时使用。
conda env remove --name <环境名称>
二 安装 Superset
2.1 安装系统依赖
sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel
2.2 创建python 虚拟环境
[root@fe01 ~]# conda create --name superset python=3.10
[root@fe01 ~]# conda activate superset
(superset) [root@fe01 ~]#
此处需要指定python=3.10 别的版本有点bug
2.3 安装 superset
(superset) [root@fe01 ~]# pip install apache-superset
2.4 配置 superset
-
首先创建一个 mysql 数据库
create database superset
-
生成一个强密钥
(superset) [root@fe01 ~]# openssl rand -base64 42 cxIZVIt6VDeKqlBhDd1jAtfYPYdIEhLf2YqHuA2WjS+3shkHOQ+MLoYg
-
打开配置文件并配置
vim /path/to/miniconda3/envs/superset/lib/python3.10/site-packages/superset/config.py
# Superset specific config SECRET_KEY = 'W26oCWUu49V66dfgMQ8mzMTl4oCJKnhWOZVuBXLjBAEdo3PtNkwlE3UA' # 数据库配置 SQLALCHEMY_DATABASE_URI = 'mysql://user:passwd@127.0.0.1:3306/superset'
2.5 初始化数据库
在初始化之前,需要设置环境变量,flask是一个python web框架,Superset使用的就是flask
export FLASK_APP=superset
初始化数据库:
(superset) [root@fe01 ~]# superset db upgrade
2.6 创建管理员用户
(superset) [root@fe01 ~]# superset fab create-admin
2.7 superset 初始化
(superset) [root@fe01 ~]# superset init
三 Super启停
3.1 安装 gunicorn
(superset) [root@fe01 ~]# pip install gunicorn -i https://pypi.tuna.tsinghua.edu.cn/simple
3.2 启动
(superset) [root@fe01 ~]# gunicorn --workers 5 --timeout 120 --bind 0.0.0.0:8038 --daemon 'superset.app:create_app()'
- –works:指线程数
- –timeout:worker 进程超时时间,超时会自动重启
- –bind:绑定本机地址,即Superset访问地址。这里绑定的地址需要设置为:0.0.0.0:8088,这样将会使gunicorn监听在所有网络接口上,而不仅仅是localhost。
- –daemon:后台运行
3.3 停止
(superset) [root@fe01 ~]# ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9
(superset) [root@fe01 ~]# conda deactivate
四 问题
-
superset db upgrade报错:
flask_appbuilder.security.sqla.manager:DB Creation and initialization failed
如果caching_sha2_password插件无法在你的环境中使用,你可以尝试更改MySQL用户的认证方法来避开这个问题。你可以使用以下命令来更改用户的认证方法:
ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
-
pip install superset
报错:
AttributeError: module ‘pkgutil‘ has no attribute ‘ImpImporter‘. Did you mean: ‘zipimporter‘?
解决方法:
conda create --name superset python=3.10
指定python版本为3.10 解决,具体原因不明,可能为: python 3.12 时,由于自带的 pip (22.3.1) 版本较低,使用了在 python 3.12 中删除的废弃 API pkgutil.ImpImporter,其在 python 3.3 中标记为 deprecated。但是升级了pip为34.0 也没有解决。
- pip install pydoris
错误:
Exception: Can not find valid pkg-config name.
Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually
解决方案:
sudo dnf install gcc mysql-devel python3-devel
- superset db upgrade
报错:
ImportError: /root/app/anaconda3/envs/superset/bin/../lib/libstdc++.so.6: cannot allocate memory in static TLS block
解决方案:
export LD_PRELOAD=/usr/lib64/libstdc++.so.6