centos7.5下superset3.0 单机安装

最近想试用开源BI superset,网上好多文章很好,但版本低,照之安装易错。
记录一路安装过程中的问题,已安装成功。
运行环境:Centos7.5+miniconda+pythom3.9+superset3.0

1. 安装OS 依赖包

1.1 将在centos7.5安装最新superset,其它OS参考官网去找指令

# please install it by your OS as offical document guide, centos as follows:
sudo yum install gcc gcc-c++ libffi-devel python3-devel python3-pip python3-wheel openssl-devel cyrus-sasl-devel openldap-devel

1.2 升级 pip

pip3 install --upgrade pip

2. Python 虚拟环境

2.1 下载Miniconda(Python3版本)
下载地址:https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
2.2 安装Miniconda

执行以下命令进行安装,并按照提示操作,直到安装完成

bash Miniconda3-latest-Linux-x86_64.sh
2.3 配置环境变量

修改/etc/profile.d/env.sh文件,内容如下

export CONDA_HOME=/opt/module/miniconda3
export PATH=$PATH:$CONDA_HOME/bin

修改保存之后:

source /etc/profile`
2.4 配置conda国内镜像
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --set show_channel_urls yes
# please install miniconda or virtualenv, we will install miniconda.

conda create -n superset python=3.9
conda activate superset
## 升级 setuptools, pip
pip install --upgrade setuptools pip  -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host  mirrors.aliyun.com

3. 安装和初始化 Superset

3.1 安装superset最新3.0,从阿里云安装非常快
pip install apache-superset -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

安装之后看到的包

pip list
Babel-2.12.1 Flask-Babel-2.0.0 Flask-JWT-Extended-4.5.2 Flask-Limiter-3.5.0 Flask-SQLAlchemy-2.5.1 Jinja2-3.1.2 Mako-1.2.4 MarkupSafe-2.1.3 PyJWT-2.8.0 alembic-1.12.0 amqp-5.1.1 apache-superset-3.0.0 apispec-6.3.0 async-timeout-4.0.3 attrs-23.1.0 backoff-2.2.1 bcrypt-4.0.1 billiard-4.1.0 blinker-1.6.2 brotli-1.1.0 cachelib-0.10.2 celery-5.3.4 certifi-2023.7.22 cffi-1.16.0 click-8.1.7 click-didyoumean-0.3.0 click-option-group-0.5.6 click-plugins-1.1.1 click-repl-0.3.0 colorama-0.4.6 convertdate-2.4.0 cron-descriptor-1.4.0 croniter-1.4.1 cryptography-39.0.2 deprecated-1.2.14 deprecation-2.1.0 dnspython-2.4.2 email-validator-1.3.1 exceptiongroup-1.1.3 flask-2.3.3 flask-appbuilder-4.3.7 flask-caching-1.11.1 flask-compress-1.14 flask-login-0.6.2 flask-migrate-3.1.0 flask-talisman-1.1.0 flask-wtf-1.1.1 func-timeout-4.3.5 geographiclib-2.0 geopy-2.4.0 greenlet-2.0.2 gunicorn-21.2.0 h11-0.14.0 hashids-1.3.1 hijri-converter-2.3.1 holidays-0.23 humanize-4.8.0 idna-3.4 importlib-metadata-6.8.0 importlib-resources-6.1.0 isodate-0.6.1 itsdangerous-2.1.2 jsonschema-4.19.1 jsonschema-specifications-2023.7.1 kombu-5.3.2 korean-lunar-calendar-0.3.1 limits-3.6.0 markdown-3.4.4 markdown-it-py-3.0.0 marshmallow-3.20.1 marshmallow-sqlalchemy-0.26.1 mdurl-0.1.2 msgpack-1.0.7 nh3-0.2.14 numpy-1.23.5 ordered-set-4.1.0 outcome-1.2.0 packaging-23.1 pandas-1.5.3 paramiko-3.3.1 parsedatetime-2.6 pgsanity-0.2.9 polyline-2.0.0 prison-0.2.1 prompt-toolkit-3.0.39 pyarrow-12.0.1 pycparser-2.21 pygments-2.16.1 pymeeus-0.5.12 pynacl-1.5.0 pyparsing-3.1.1 pysocks-1.7.1 python-dateutil-2.8.2 python-dotenv-1.0.0 python-geohash-0.8.5 pytz-2023.3.post1 pyyaml-6.0.1 redis-4.6.0 referencing-0.30.2 rich-13.5.3 rpds-py-0.10.3 selenium-4.9.1 shortid-0.1.2 simplejson-3.19.1 six-1.16.0 slack-sdk-3.22.0 sniffio-1.3.0 sortedcontainers-2.4.0 sqlalchemy-1.4.49 sqlalchemy-utils-0.38.3 sqlparse-0.4.4 sshtunnel-0.4.0 tabulate-0.8.10 trio-0.22.2 trio-websocket-0.11.1 typing-extensions-4.8.0 tzdata-2023.3 urllib3-2.0.5 vine-5.0.0 wcwidth-0.2.6 werkzeug-2.3.7 wrapt-1.15.0 wsproto-1.2.0 wtforms-3.0.1 wtforms-json-0.3.5 xlsxwriter-3.0.9 zipp-3.17.0
3.2 初始化 db

*** 请安装python所需 mysql编译环境,请看本文下面第5小节,这样一步到位元数据及样例数据装到mysql8上,其缺省装在sqlite上。

遇到提示安全错,请照提示生成密串,或者用本手册的。

cd $envs/superset/lib/python3.9/  ### 新建superset_config.py  $env是你建的虚拟环境的目录的实际路径,请按你的环境修改
vi superset_config.py 

# Superset specific config
# SS 相关的配置
# 行数限制 5000 行
ROW_LIMIT = 5000
 
# 网站服务器端口 8088
SUPERSET_WEBSERVER_PORT = 8787
 
# Flask App Builder configuration
# Your App secret key will be used for securely signing the session cookie
# and encrypting sensitive information on the database
# Make sure you are changing this key for your deployment with a strong key.
# You can generate a strong key using `openssl rand -base64 42`
# Flask 应用构建器配置
# 应用密钥用来保护会话 cookie 的安全签名
# 并且用来加密数据库中的敏感信息
# 请确保在你的部署环境选择一个强密钥
# 可以使用命令 openssl rand -base64 42 来生成一个强密钥
 
SECRET_KEY = "ZT2uRVAMPKpVkHM/QA1QiQlMuUgAi7LLo160AHA99aihEjp03m1HR6Kg" 
 
# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
# SQLAlchemy 数据库连接信息
# 这个连接信息定义了 SS 元数据库的路径(切片、连接、表、数据面板等等)
# 注意:需要探索的数据源连接及数据库连接直接通过网页界面进行管理
# SQLALCHEMY_DATABASE_URI = 'sqlite:home/atguigu/.super/superset.db'
 SQLALCHEMY_DATABASE_URI = 'mysql://<user>:<passwd>@<ip>:<host>/superset?charset=utf8'
 #MYSQL URL请照你的实际环境修改,请事先在mysql上建库建用户并授权,验证能访问
 
# Flask-WTF flag for CSRF
# 跨域请求攻击标识
#WTF_CSRF_ENABLED = True
WTF_CSRF_ENABLED = False

# Add endpoints that need to be exempt from CSRF protection
# CSRF 白名单
WTF_CSRF_EXEMPT_LIST = []
 
# A CSRF token that expires in 1 year
# CSFR 令牌过期时间 1 年
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365
 
# Set this API key to enable Mapbox visualizations
# 接口密钥用来启用 Mapbox 可视化
MAPBOX_API_KEY = ''

安装缺失包

pip install pillow
# Create an admin user in your metadata database (use `admin` as username to be able to load the examples
superset fab create-admin
# Load some data to play with,先不导,以后再导入
# superset load_examples 

# Create default roles and permissions
superset init

4. 启动

4.1 启动
# 启动
 superset run -p 8787 -h 192.168.2.11 --with-threads --reload --debugger ##本机IP 192.168.2.11
4.2 安装gunicorn
(superset) $ pip install gunicorn  -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

4.3 启动gunicorn
(superset) $  gunicorn --workers 5 --timeout 120 --bind 10.5.106.215:8787  "superset.app:create_app()" --daemon
4.4 停止gunicorn
(superset) $ ps -ef | awk '/superset/ && !/awk/{print $2}' | xargs kill -9

5. 安装mysql8 编译包

5.1 安装mysql包,从oracle下载
pip install pymysql
#提示:若之前在安装过 msyql 或 自带的mariadb 会报错,需删除
rpm -aq | grep mysql
rpm -qa | grep mariadb
rpm -e mariadb-devel-5.5.68-1.el7.x86_64
rpm -e mariadb-libs-5.5.68-1.el7.x86_64

# 安装mysql编译包,在此之前需要安装 yum install python3-devel mysql-devel pkgconfig
@@ 从oracle官网下载 mysql bundle包,centos->redhat 的包,展开后按次序安装如下
mysql-community-common-8.1.0-1.el7.x86_64.rpm
mysql-community-client-plugins-8.1.0-1.el7.x86_64.rpm
mysql-community-libs-8.1.0-1.el7.x86_64.rpm
mysql-community-libs-compat-8.1.0-1.el7.x86_64.rpm
mysql-community-devel-8.1.0-1.el7.x86_64.rpm
#安装成功后,在 /usr/lib64/mysql 目录下有.so

pip install mysqlclient

5.2 修改无数据为mysql, SQLALCHEMY_DATABASE_URI
cd $envs/superset/lib/python3.9
vi superset_config.py  #修改此行
SQLALCHEMY_DATABASE_URI = 'mysql://superset:superset@192.168.0.50:3306/superset?charset=utf8'
5.3 错误处理
    from . import _mysql
ImportError: /home/atguigu/miniconda3/envs/superset/bin/../lib/libstdc++.so.6: cannot allocate memory in static TLS block

vi .bashrc  #增加,请根据本机 所在的实际路径修改之
export LD_PRELOAD=/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so:$LD_PRELOAD
5.4 反复登录, unable to login to welcome page
cd $envs/superset/lib/python3.9/site-packages/superset
vi config.py
# 修改如下台下KEY
TALISMAN_ENABLED = utils.cast_to_boolean(os.environ.get("TALISMAN_ENABLED", False))  ## True 改为 False
SESSION_COOKIE_SAMESITE = None
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_HTTPONLY = False
WTF_CSRF_ENABLED = False
#不懂flask 框架,不明白参数的作用

6. 导入软件包的exampes到 mysql

从github下载安装太慢,下载到本机安装

6.1 下载数据
https://github.com/apache-superset/examples-data
解压后放到临时文件夹中:/opt/data/superset/examples-data
6.2 启动文件服务
cd /opt/data/susperset/examples-data-master
 python3 -m http.server --bind 192.168.2.11  8001
Serving HTTP on 192.168.2.11 port 8001 (http://192.168.2.11:8001/) ...
#请在数据解开zip所在的目录启动 http,可以从WEB上看到example文件,模拟github上的例子数据
6.3 修改 example的路径
vi $envs/superset/lib/python3.9/site-packages/superset/examples
#BASE_URL = "https://github.com/apache-superset/examples-data/blob/master/"
BASE_URL = "http://192.168.2.11:8001/""  #此路径与启动http.server所在的目录有关,要让load时能看到文件即可, 注意是http://

执行

superset load_examples
#数据文件将在 登录用户的 .superset/examples.db

<完>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值