此文章分别介绍了直接在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安装方式和连接格式

DatabasePyPI packageConnection String
Apache Hivepip install pyhivehive://hive@{hostname}:{port}/{database}
Apache Impalapip install impylaimpala://{hostname}:{port}/{database}
Apache Kylinpip install kylinpykylin://<username>:<password>@<hostname>:<port>/<project>?<param1>=<value1>&<param2>=<value2>
Apache Spark SQLpip install pyhivehive://hive@{hostname}:{port}/{database}
Big Querypip install pybigquerybigquery://{project_id}
Elasticsearchpip install elasticsearch-dbapielasticsearch+http://{user}:{password}@{host}:9200/
MySQLpip install mysqlclientmysql://<UserName>:<DBPassword>@<Database Host>/<Database Name>
Oraclepip install cx_Oracleoracle://
PostgreSQLpip install psycopg2postgresql://<UserName>:<DBPassword>@<Database Host>/<Database Name>
Prestopip install pyhivepresto://
SQLitesqlite://
SQL Serverpip install pymssqlmssql://

基于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

再次访问登录就是汉化的了
Logo

更多推荐