系列文章目录
superset 1.4的安装请参考superset安装使用说明_冰帆<的博客-CSDN博客
文章目录
目录
前言
申请了一台阿里云云主机,今天从头安装重新安装下superset,旧版本的请参考:
superset安装使用说明_冰帆<的博客-CSDN博客
本文只针对安装过程中出现的问题进行简要介绍。
一、环境准备
阿里云主机一台:centos 7.9
python 环境:3.9.12
mysql:8.0.31
安装后:superset:2.0.1
二、superset安装过程中出现的问题解决
1.python 库的版本不一致
执行superset db upgrade 出现的问题
1:Error: Could not locate a Flask application. Use the 'flask --app' option, 'FLASK_APP' environment variable, or a 'wsgi.py' or 'app.py' file in the current directory.
解决:export FLASK_APP=superset
2:修改setuptools版本
pip3 install setuptools==65.5.0 pip -i https://pypi.douban.com/simple/ --trusted-host pypi.douban.com
3:ModuleNotFoundError: No module named 'cryptography.hazmat.backends.openssl.x509'
hazmat.backends.openssl.x509 模块找不到
cryptography默认安装的39.0.0版本,将cryptography版本加到38.0.0
pip3 install cryptography==38.0.0 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
4:“ModuleNotFoundError: No module named 'wtforms.ext'”
修改WTForms版本
pip3 install WTForms==2.3.3 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
2.安装mysql 8.0
1、安装后修改root 密码
sudo grep 'temporary password' /var/log/mysqld.log
2023-01-13T08:47:22.564620Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: R:+GqaOQy4*l
使用默认初始化密码登陆:
mysql -uroot -pR:+GqaOQy4*l
use mysql;
#更新root密码,root 是用户名,20230113是密码,
alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '20230113';
#创建superset用户 superset 是用户名,20230113是密码,%,不限制登陆ip
CREATE USER 'superset'@'%' IDENTIFIED BY '20230113';
#更改superset密码
alter user 'superset'@'%' IDENTIFIED WITH mysql_native_password BY '20230113';
flush privileges;
quit;
错误代码如下
"Authentication plugin 'caching_sha2_password' cannot be loaded:
原因:MySQL8.0之前的版本中加密规则是mysql_native_password,
而在MySQL8.0之后,加密规则是caching_sha2_password。
使用上述修改用户的加密规则。
3、修改使用mysql库
superset 不更改默认使用的是sqlite,更改为使用mysql库
vi superset/config.py
vi superset/superset_config.py
找到对应的地方:
#SQLALCHEMY_DATABASE_URI = 'sqlite:path/to/superset.db'
SQLALCHEMY_DATABASE_URI = 'mysql://superset:password@hadoop001/superset?charset=utf8'
4、加载example数据
下载 GitHub - apache-superset/examples-data
解压后放到临时文件夹中:/opt/data/superset/examples-data
启动文件服务
python3 -m http.server --port=8001
vi superset/examples/helper.py
#BASE_URL = "https://github.com/apache-superset/examples-data/blob/master/"
BASE_URL = "http://127.0.0.1:8001/examples-data-master/"
执行:superset load_examples
执行加载examples,需要创建admin用户
superset fab create-admin
5、修改使用中文
superset/config.py
#BABEL_DEFAULT_LOCALE = "en"
BABEL_DEFAULT_LOCALE = "zh"
6、使用gunicorn启动
vi gunicorn_config.py
#内容开始
import multiprocessing
bind = '0.0.0.0:8888' #绑定ip和端口号
backlog = 512 #监听队列
timeout = 120 #超时
#worker_class = 'gevent'
workers = 5
worker_connections = 1000
#threads = 2 #指定每个进程开启的线程数
loglevel = 'info' # 日志级别
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"' #设置gunicorn访问日志格式,错误日志无法设置
pidfile = '/opt/servers/python3/venv/logs/pidfile'
errorlog = '/opt/servers/python3/venv/logs/gunicorn_error.log'
accesslog = '/opt/servers/python3/venv/logs/gunicorn_access.log'
print("IP and PORT:"+bind)
print("pid_file:"+pidfile)
print("error_log:"+errorlog)
print("access_log:"+accesslog)
#内容结束
vi superset.sh
#内容开始
#!/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(){
#source ~/.bashrc
superset_status >/dev/null 2>&1
if [[ $? -eq 0 ]]; then
#. venv/bin/activate; gunicorn --workers 5 --timeout 120 --bind 59.42.255.239:8088 --daemon 'superset.app:create_app()'
. venv/bin/activate; gunicorn -c ./gunicorn_config.py --daemon 'superset.app:create_app()' > ./venv/logs/logs.log
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
#内容结束
chmod 777 superset.sh
启动:superset.sh start
停止:superset.sh stop
状态:superset.sh status
总结
安装与1.4.2基本一致,中间出现遇到的一些坑,可以参考,大家尽量少踩坑。