大数据BI分析工具——superset的安装部署
此文章分别介绍了直接在Linux中安装和基于docker安装supersetLinux下直接安装部署前准备创建test用户,不建议在root用户下安装部署创建用户# useradd test为新用户创建密码# passwd test修改sudoers文件# visudo找到 rootALL=(ALL:ALL) ALL一行,在下方加一行testALL=(ALL:ALL) NOPASSWD:ALL//
·
此文章分别介绍了直接在Linux中安装和基于docker安装superset
Linux下直接安装
部署前准备
创建test用户,不建议在root用户下安装部署
创建用户
# useradd test
为新用户创建密码
# passwd test
修改sudoers文件
# visudo
找到 root ALL=(ALL:ALL) ALL一行,在下方加一行
test ALL=(ALL:ALL) NOPASSWD:ALL
//说明:新加入的这一行中有4个ALL
//表示用户test可以从任何地方(第一个ALL)登录后执行任何用户组的任何用户(第二个ALL-任何用户,第三个ALL-任何用户组)的任何指令(第四个ALL),NOPASSWD表示该用户执行sudo时可以不需要重复输入密码。
# 设置test用户组的所有用户权限
%test ALL=(ALL:ALL) NOPASSWD:ALL
# 设置test用户可以sudo执行的命令列表,比如关闭或者重启服务器
test ALL=(ALL:ALL) NOPASSWD:/sbin/shutdown,/usr/bin/reboot
切换用户操作
# su - 用户名
安装python环境
一般情况下,服务器会自带python环境,输入python3可查看版本信息
Superset是由Python编写的Web应用,安装与项目开发团队对应的python版本,此处为Python3.6环境。
下载安装Miniconda
conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同Python版本的软件包及其依赖,并能够在不同的Python环境之间切换,Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等,Miniconda包括Conda、Python。本次部署选择conda,是为了不影响系统本身的python环境,本次部署不需要过多工具包,所以选择MiniConda。
1、下载Miniconda3最新版
# wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
2、安装Miniconda3
# bash Miniconda3-latest-Linux-x86_64.sh
In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue # [是否继续] 回车
>>>
Do you accept the license terms? [yes|no]
[no] >>>
Please answer 'yes' or 'no':' # [是否同意一些条款] yes
>>> yes
Miniconda3 will now be installed into this location:
/home/wangting/miniconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/home/wangting/miniconda3] >>> /opt/module/miniconda3 # [在此处直接输入自定义安装路径 默认家目录]
Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no] # 运行conda初始化 yes
[no] >>> yes
Thank you for installing Miniconda3! # 出现这条提示,即为安装完成
//脚本运行过程中会自动在用户家目录的bashrc环境文件中添加环境参数
//此处不需要任何操作,浏览了解即可
__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
3、引用脚本修改的家目录的bashrc文件,运行以下命令后,命令行最前面会出现(base)
# source ~/.bashrc
退出base环境
# conda deactivate
base环境设置
取消每次登陆激活base环境(每次登陆终端,采用命令行登陆环境)
Miniconda安装完成后,每次打开终端都会激活默认的base环境,通过以下命令,禁止自动激活默认base环境。
# conda config --set auto_activate_base false
配置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
创建python环境
# conda create --name superset python=3.6
# Proceed ([y]/n)? y # 遇到此处输入y即可安装
# To activate this environment, use
#
# $ conda activate superset
#
# To deactivate an active environment, use
#
# $ conda deactivate
// 看到如上内容证明创建完成
注意:如果在执行上面conda create创建时提示 WARNING: A newer version of conda exists.
update更新一下conda即可
# conda update -n base -c defaults conda # 执行此命令即可
conda常用命令
1.查看所有conda环境
# conda info --envs
// 显示如下
# conda environments:
#
base * /opt/module/miniconda3
superset /opt/module/miniconda3/envs/superset
2.激活登陆对应conda环境,运行以下命令后,命令行最前面出现(superset)
# conda activate superset
3.查看当前python版本
# python
Python 3.6.13 |Anaconda, Inc.| (default, Jun 4 2021, 14:25:59)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> // 在此输入exit(),即可退出当前状态
4.退出当前conda环境
# conda deactivate
验证
# conda activate superset // 此处进入superset环境(即命令行最前方有superset字样)
# python // 可查看python版本,exit()可退出python状态
// 在conda中使用pip命令安装模块 -i指定资源地址,默认是官方地址;验证pip
# pip install gunicorn -i https://pypi.douban.com/simple/
superset部署
因为此次部署是在阿里云服务器中进行的,为了部署完成后可以顺利访问,需要在阿里云服务器控制台--网络与安全--安全组--配置规则中添加 8787/8787 端口,否则访问不到
退出上述的superset环境
# conda deactivate
安装superset之前,先安装依赖
注意,此处有坑,如果系统是CentOS8的话,命令中的python后面要加数字“3”,如下
# sudo yum install -y python3-setuptools
# sudo yum install -y gcc gcc-c++ libffi-devel python3-devel python3-pip python3-wheel openssl-devel cyrus-sasl-devel openldap-devel
进入superset环境进行安装部署
# conda activate superset
安装(更新)setuptools和pip
# pip install --upgrade setuptools pip -i https://pypi.douban.com/simple/
// 出现如下字样即安装成功
Installing collected packages: setuptools, pip
Attempting uninstall: setuptools
Found existing installation: setuptools 58.0.4
Uninstalling setuptools-58.0.4:
Successfully uninstalled setuptools-58.0.4
Attempting uninstall: pip
Found existing installation: pip 21.2.2
Uninstalling pip-21.2.2:
Successfully uninstalled pip-21.2.2
Successfully installed pip-21.3.1 setuptools-59.6.0
安装superset
# pip install apache-superset -i https://pypi.douban.com/simple/
初始化superset数据库
# superset db upgrade
执行上述命令后报错 // ModuleNotFoundError: No module named 'dataclasses'
# pip install dataclasses // 报错解决办法
完成安装 // Successfully installed dataclasses-0.8
# superset db upgrade // 再次初始化,完成
创建管理员账户
# export FLASK_APP=superset
# flask fab create-admin
Username [admin]: // 回车 用于登陆管理页面的管理用户
User first name [admin]: // 回车 用户信息
User last name [user]: // 回车 用户信息
Email [admin@fab.org]: // 回车 邮箱信息
Password: // 设置密码 123456 用于登陆管理页面的管理用户密码
Repeat for confirmation: // 再次输入密码 123456
logging was configured successfully
INFO:superset.utils.logging_configurator:logging was configured successfully
/home/test/miniconda3/envs/superset/lib/python3.6/site-packages/flask_caching/__init__.py:202: UserWarning: Flask-Caching: CACHE_TYPE is set to null, caching is effectively disabled.
"Flask-Caching: CACHE_TYPE is set to null, "
No PIL installation found
INFO:superset.utils.screenshots:No PIL installation found
Recognized Database Authentications.
Admin User admin created. // 管理员账户创建完成
superset初始化
# superset init
// 见到如下字样,初始化完成
Cleaning faulty perms
INFO:superset.security.manager:Cleaning faulty perms
安装gunicorn用来提供http服务
# pip install gunicorn -i https://pypi.douban.com/simple/
启动supetset
// 端口号前的名字是主机名,在/etc/hosts中有主机名的ip解析,可用 cat hosts 命令查看
# gunicorn --workers 5 --timeout 120 --bind chenxi:8787 "superset.app:create_app()" --daemon
查看superset运行状态
# netstat -tnlpu|grep 8787
// 见到如下字样是正确的
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 172.22.154.62:8787 0.0.0.0:* LISTEN 7984/python
# ps -ef | grep 8787 | grep -v grep
// 输出如下格式是没有问题的
test 7984 1 0 13:18 ? 00:00:00 /home/test/miniconda3/envs/superset/bin/python /home/test/miniconda3/envs/superset/bin/gunicorn --workers 5 --timeout 120 --bind chenxi:8787 superset.app:create_app() --daemon
test 7987 7984 5 13:18 ? 00:00:02 /home/test/miniconda3/envs/superset/bin/python /home/test/miniconda3/envs/superset/bin/gunicorn --workers 5 --timeout 120 --bind chenxi:8787 superset.app:create_app() --daemon
test 7988 7984 5 13:18 ? 00:00:02 /home/test/miniconda3/envs/superset/bin/python /home/test/miniconda3/envs/superset/bin/gunicorn --workers 5 --timeout 120 --bind chenxi:8787 superset.app:create_app() --daemon
test 7989 7984 5 13:18 ? 00:00:02 /home/test/miniconda3/envs/superset/bin/python /home/test/miniconda3/envs/superset/bin/gunicorn --workers 5 --timeout 120 --bind chenxi:8787 superset.app:create_app() --daemon
test 7990 7984 5 13:18 ? 00:00:02 /home/test/miniconda3/envs/superset/bin/python /home/test/miniconda3/envs/superset/bin/gunicorn --workers 5 --timeout 120 --bind chenxi:8787 superset.app:create_app() --daemon
test 7992 7984 5 13:18 ? 00:00:02 /home/test/miniconda3/envs/superset/bin/python /home/test/miniconda3/envs/superset/bin/gunicorn --workers 5 --timeout 120 --bind chenxi:8787 superset.app:create_app() --daemon
浏览器访问superset
首先确保防火墙处于关闭状态
# systemctl status firewalld // 查看防火墙状态
# systemctl stop firewalld // 关闭防火墙
superset访问使用,浏览器输入URL地址
// 推荐使用 IP+端口号 访问,主机名+端口号访问需要做IP解析
// 主机名+端口号需要在 C:\Windows\System32\drivers\etc\hosts 文件中做Linux主机名的ip解析
http://你的服务器IP:8787/login/
http://你的服务器IP:8787/login/
停止superset服务,此操作需要停止superset运行时在使用(当于把上面对应的进程id逐个kill掉,服务自身没有提供命令行停服)
# ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9
superset使用
// 以连接MySQL为例
mysql://root:123456@你的服务器IP/gmall?charset=utf8
root:数据库账户
123456:数据库密码
你的服务器IP:数据库所在服务器IP
gmall:数据库名
常用的数据源pip安装方式和连接格式
Database | PyPI package | Connection String |
---|---|---|
Apache Hive | pip install pyhive | hive://hive@{hostname}:{port}/{database} |
Apache Impala | pip install impyla | impala://{hostname}:{port}/{database} |
Apache Kylin | pip install kylinpy | kylin://<username>:<password>@<hostname>:<port>/<project>?<param1>=<value1>&<param2>=<value2> |
Apache Spark SQL | pip install pyhive | hive://hive@{hostname}:{port}/{database} |
Big Query | pip install pybigquery | bigquery://{project_id} |
Elasticsearch | pip install elasticsearch-dbapi | elasticsearch+http://{user}:{password}@{host}:9200/ |
MySQL | pip install mysqlclient | mysql://<UserName>:<DBPassword>@<Database Host>/<Database Name> |
Oracle | pip install cx_Oracle | oracle:// |
PostgreSQL | pip install psycopg2 | postgresql://<UserName>:<DBPassword>@<Database Host>/<Database Name> |
Presto | pip install pyhive | presto:// |
SQLite | sqlite:// | |
SQL Server | pip install pymssql | mssql:// |
基于docker安装supetset
下载superset镜像
查看下载量最多的镜像,运行命令后第一个就是
# docker search superset
下载镜像
# docker pull amancevice/superset
查看镜像是否下载成功
# docker images
创建superset容器
创建挂载目录
# mkdir /opt/superset
创建容器,注意端口号
# docker run --name mysuperset -d -p 8787:8787 -v /opt/superset:/home/superset amancevice/superset
查看进程
# docker ps -a
进入docker镜像
# docker exec -it mysuperset /bin/bash
在superset容器中初始化
superset安装目录:/usr/local/lib/python3.8/site-packages/superset
数据库初始化(进入容器后执行命令)
# superset db upgrade
superset初始化(进入容器后执行命令)
# superset init
设置管理员账号(进入容器后执行命令)
# export FLASK_APP=superset
# flask fab create-admin
username: admin
uesr first name: zhang
user last name: zhaoyang
Email: 3060331937@qq.com
Password: 123456
Repeat for confirmation: 123456 // 再一次输入密码
Admin User admin created. // 出现此行证明管理员用户创建成功
加载superset样例命令:(进入容器后执行命令)
# superset load_examples
启动superset命令:(进入容器后执行命令)一般不使用,初始化init后,就可以访问了
# superset run -p 8787
访问superset
服务器IP+端口号访问
http://192.168.171.126:8787/login/
停止与开启superset服务
停止superset服务
# docker stop mysuperset
查找运行superset的容器ID
# docker ps -a
开启superset服务
# docker start mysuperset
superset汉化
进入supetset容器
docker exec -it --user root mysuperset /bin/bash
修改配置文件/usr/local/lib/python3.8/site-packages/superset/config.py,
修改BABEL_DEFAULT_LOCALE的取值从"en"为"zh"
修改后可用命令查看文件(此命令查看的是指定的BABEL_DEFAULT_LOCALE,只显示一行)
cat /usr/local/lib/python3.8/site-packages/superset/config.py | grep BABEL_DEFAULT_LOCALE
重新编译设计到国际化的文件(有报错也没关系)
pybabel compile -d /usr/local/lib/python3.8/site-packages/superset/translations
退出容器后重启容器
docker restart my_superset
再次访问登录就是汉化的了
更多推荐
已为社区贡献1条内容
所有评论(0)