前言
最近在准备一个小的项目,需要对 Hive 的数据进行展示,所以想到了把 Hive 的数据导出到 MySQL 然后用 Superset 进行展示。
Superset
1.1 Superset概述
Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用,可对接各种数据源(比如 Hive、Durid),包括很多现代的大数据分析引擎,拥有丰富的图表展示形式,并且支持自定义仪表盘。
1.2 Superset安装
1.2.1、安装Python环境
这里废话少说,按照某谷的配置文档配的话一堆问题,毕竟当时的版本和现在可能不一样,以及镜像地址有的已经不能用了。
1、安装 Miniconda
下载地址:https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
安装命令:
bash Miniconda3-latest-Linux-x86_64.sh
2、加载环境变量配置文件,使之生效
source ~/.bashrc
3、取消激活 base 环境(conda 自己的 python 环境)
Miniconda安装完成后,每次打开终端都会激活其默认的base环境,我们可通过以下命令,禁止激活默认base环境。
conda config --set auto_activate_base false
4、配置 Python 环境
CentOS 7 自带的是 2.7 版本的,明显太低,但是又不能把它删了或者覆盖,我们得在 conda 下再建一个 python 环境。
修改镜像源:
vi ~/.condarc
然后把下面的东西直接复制进去(文件里原本有的配置留一个就行):
channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/fastai/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/ show_channel_urls: true ssl_verify: false
5、创建Python3.9环境!
注意:是 3.9 !别用 3.7 了,不然一堆报错,我觉得是教程出的那会 superset 版本比较低,所以 3.7 安装的时候没问题,但是我今天安装一堆毛病,换了3.9还没出问题。
conda create --name superset python=3.9
安装完了 pythpn -V 看一下
6、激活 superset 环境
注意:之后所有关于 superset 的操作尽量都在 superset 环境下操作!!!
(base) [lyh@hadoop102 ~]$ conda activate superset
1.2.2、Superset 部署
1、安装 Superset 需要的依赖
(superset) [lyh@hadoop102 ~]$ sudo yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel python-setuptools openssl-devel cyrus-sasl-devel openldap-devel
2、更新 setuptools 和 pip
直接用下面这个命令:
(superset) [lyh@hadoop102 ~]$ pip install --upgrade setuptools pip -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn
不行就换源!
3、安装 Superset
(superset) [lyh@hadoop102 ~]$ pip install apache-superset pip -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn
4、初始化 Superset 数据库
(superset) [lyh@hadoop102 ~]$ export FLASK_APP=superset (superset) [lyh@hadoop102 ~]$ superset db upgrade
这里容易报错,如果自己是 python 3.7 我反正是换了 3.9 后就没报错了。
5、创建管理员用户
(superset) [lyh@hadoop102 ~]$ superset fab create-admin
这里会让我们创建用户名和密码
6、superset 初始化
(superset) [lyh@hadoop102 ~]$ superset init
1.2.3、启动 Superset
1、安装gunicorn
(superset) [lyh@hadoop102 ~]$ pip install gunicorn -i https://pypi.douban.com/simple/
我是自带的(提示已存在),还是那句话:不行就去换源(-i 镜像源地址)!
2、启动 Superset
注意:一定要确保当前 conda 环境为 superset !!!
(superset) [lyh@hadoop102 ~]$ gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 "superset.app:create_app()" --daemon
- workers:指定进程个数
- timeout:worker进程超时时间,超时会自动重启
- bind:绑定本机地址,即为Superset访问地址
- daemon:后台运行
3、登录 Superset
打开 hadoop102:8087 ,用上面创建的用户名和密码登录
4、停止 superset
(superset) [lyh@hadoop102 ~]$ ps -ef | awk '/superset/ && !/awk/{print $2}' | xargs kill -9
1.2.4、Superset 启停脚本
#!/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 conda activate superset ; gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 --daemon 'superset.app:create_app()' 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
1.2.5、退出 Superset
superset.sh stop conda deactivate
1.3、Superset 的使用
Superset 的使用太简单了,都是简单的拖拉拽,这里不再废话。 这里写一点我在使用时候遇到的小疑惑和解决办法。
1.3.1、地图精度
需要使用魔法去国外的 mapbox 免费注册一个账号获得秘钥(注册就有),但是得用魔法和国外邮箱(谷歌不行,最好用 Proton Mail)来注册。
1.3.2、多折线图
多折线图需要多加几个聚合指标就可以了。
总结
这是我安装过最麻烦的软件了,让我把 Hadoop、Flink、Spark 全重装我不怕,但这东西是真tm恶心啊。
无法打开网页问题解决
打不开网页的话在 conda 的 superset 环境下输入下面的命令:
superset run --host 0.0.0.0
发现报错:
export FLASK_APP=superset
继续测试,还有警告:
export SUPERSET_SECRET_KEY=“oh-so-secret”
所以:建议把这两个环境变量放到启动脚本中去!!!!
解决!不得不说,这是第一次把我恶心到的软件,版本依赖是真的多,配置起来是真麻烦。