开源商业智能工具研究:Superset、Metabase、Redash、DataEase (II) - 本地部署
导读
第一篇文章 已经对基本数据进行了统计,下面就是开始正式体验产品了,除了 DataEase 之外,想体验另外的几个,都需要在本地部署才能体验。所以本文的主题就是如何本地部署并启动这几个服务。以下内容以本地 Ubuntu 20.04 lts 环境为基础,服务器或其他环境请酌情修改。
因为只是实验性质,所以大多采用较方便的一键安装功能,与实际部署还有差距,所以切莫将下列方式用于生产。强烈建议大家用虚拟机,并且在安装它们之前打好快照,方便回滚重试。可参考笔者 Ubuntu 一行命令装软件 系列。
正文
Docker + MySQL
因为不管哪个产品,都需要连接数据库,所以要先准备好数据库和测试数据,我们就以 MySQL 为例。另外还需要安装 Docker,这里只给出安装的命令。具体方式详见 Docker 和 MySQL(推荐 Docker 模式)。
注意:一定要生成 test
@%
用户,并且生成 employees
测试数据库,下面要用。
Superset
可使用官方提供的 docker 镜像 进行本地部署。具体命令如下:
sudo docker pull apache/superset && \
sudo docker run -d -p 8080:8088 --name superset apache/superset && \
sudo docker exec -it superset superset fab create-admin \
--username admin \
--firstname Superset \
--lastname Admin \
--email admin@superset.com \
--password admin && \
sudo docker exec -it superset superset db upgrade && \
sudo docker exec -it superset superset load_examples && \
sudo docker exec -it superset superset init
访问 localhost:8080
,输入用户名密码 admin,开始体验。
Metabase
参考官网给出的 Docker 方式部署。如果要改端口号,改前面的那个 3000。
sudo docker pull metabase/metabase:latest && \
sudo docker run -d -p 3000:3000 --name metabase metabase/metabase && \
# sudo docker logs -f metabase # logs
等几分钟启动成功后,访问 localhost:3000
进行初始化。信息随便填(选择困难症的可以参考 Superset 的配置),容易卡在连接数据库这步。如果按照上文的说明安装了,选数据库时的参数为:
- 数据库类型
MySQL
; - 数据库填
employees
; - 用户名密码都填
test
; - host 注意:
- 如果是 Docker 版的 MySQL,用
sudo docker inspect <mysql container id/name> | grep IP
,查看其IPAddress
,通常是172.17.0.2
; - 如果是本机安装的 MySQL,用
ifconfig
查看 docker0 的 ip 是多少,填上即可。通常是172.17.0.1
;
- 如果是 Docker 版的 MySQL,用
- 其他看着填。
如果还没准备好数据库。在选择数据源时可以选择最下面的“稍后添加”,不注意很容易忽略。
DataEase
有个在线体验地址:用户名: demo 密码: dataease 每晚 00:00 重置数据,体验的话用这个就可以。
本地部署的话,DataEase 的文档给了一个命令,笔者稍微改了一下,直接运行即可。
curl -sSL https://github.com/dataease/dataease/releases/latest/download/quick_start.sh | sudo bash
安装完成后会启动两个 docker 容器,一个 mysql 一个 dataease。访问 localhost
,用户名:admin,密码:dataease,即可体验。
但是,想要用这一行命令就成功安装,其实是小概率的,要不是笔者用的虚拟机,环境特别干净,真不敢保证能一次成。而且还占用了 80 端口,有点霸道。如果想解决这个问题,需要用到 离线安装 的方式,稍微麻烦一点点,笔者整理如下:
curl -SLO https://github.com/dataease/dataease/releases/download/v1.9.1/dataease-v1.9.1-online.tar.gz && tar zxvf dataease-v1.9.1-online.tar.gz && \
cd dataease-v1.9.1-online && \
# 如果需要,可以修改 install.conf 中的 ED_PORT 为 8888
sudo bash install.sh
取巧版,修改 8888 即可。有风险慎用,原理参考下文 Redash 的说明:
curl -sSL https://github.com/dataease/dataease/releases/latest/download/quick_start.sh | sed '$i sed -ri "s/DE_PORT=80/DE_PORT=8888/" install.conf' | sudo bash
Redash
运行命令后可能会空白一会,不要急,耐心等一下。
curl -sSL https://raw.githubusercontent.com/getredash/setup/master/setup.sh | sudo bash
完成后会启动 7 个 docker 容器(nginx、redis、postgres、redash*4),访问 localhost
就能进入初始化界面了,配置参考其他的就行了。
另外,它也会占用 80 端口,要想改的话需要参考 docker-compose.yml 手动处理一下,笔者稍微改进了一下命令:
curl -sSL https://raw.githubusercontent.com/getredash/setup/master/setup.sh | sed '63a sed -ri "s/80:80/8081:80/" docker-compose.yml' | sudo bash
要想修改服务 port,修改命令中的 8081
即可。注意,使用前请查看 setup.sh 文件更新日期是否是 2019.11.28
,如果不是请按照下面的说明适当修改。
说明
命令中的 63a
那段意思是,在下载了 setup.sh
后,在第 63 行之后插入一行,内容就是后面跟着的 sed 命令,然后再用 bash 运行。
原 63 行的内容是用 sed 命令修改 docker-compose.yml
中 redash 镜像的版本号,而插入的 sed 命令是修改 docker-compose.yml
文件中 nginx 服务的端口号,参考了源代码的思路。
所以,如果远程 setup.sh 文件的内容更新了(非 2019.11.28),上面的命令很可能就失效了,所以请慎重使用。原理已经说清楚了,各位按照这个思路微调应该就行了。
总结
- 从部署上来看,Metabase 和 Superset 干净一些,只会启动一个容器,也可以较方便的设置服务的端口号;
- 相对的,DataEase 最后会启动 dataease、mysql 两个容器,似乎还可以接受。但是启动 mysql 容器时有可能出现与本机 mysql 冲突的情况。而且 dataease 服务默认会占用 80 端口。要想解决的话需要用离线安装模式,修改配置文件,稍微繁琐一些;
- Redash 一下起 7 个容器,单从数量来说的话有点多,而且也会占用 80 端口。不过这些应该通过 docker-compose 的配置来解决,相对更繁琐一些;
- 除了 Redash,其他 3 个都支持在自己没有安装数据库的前提下体验 demo,DataEase 甚至提供了在线体验地址,这个必须给个好评。
综上,单就体验 demo 便利性方面,个人的排序为:DataEase > Metabase > Superset > Redash。
部署方面综合看 Metabase > Superset > DataEase > Redash,但是差距不大,不足以影响最终的技术选型。
“检验一流智力的标准,就是在头脑中同时存在两种截然相反的想法时,仍能保持行动能力。” —— F.Scott Fitzgerald