欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

开源商业智能工具研究:Superset、Metabase、Redash、DataEase (II) - 本地部署

最编程 2024-04-11 10:56:59
...

导读

第一篇文章 已经对基本数据进行了统计,下面就是开始正式体验产品了,除了 DataEase 之外,想体验另外的几个,都需要在本地部署才能体验。所以本文的主题就是如何本地部署并启动这几个服务。以下内容以本地 Ubuntu 20.04 lts 环境为基础,服务器或其他环境请酌情修改。

因为只是实验性质,所以大多采用较方便的一键安装功能,与实际部署还有差距,所以切莫将下列方式用于生产。强烈建议大家用虚拟机,并且在安装它们之前打好快照,方便回滚重试。可参考笔者 Ubuntu 一行命令装软件 系列。

正文

Docker + MySQL

因为不管哪个产品,都需要连接数据库,所以要先准备好数据库和测试数据,我们就以 MySQL 为例。另外还需要安装 Docker,这里只给出安装的命令。具体方式详见 DockerMySQL(推荐 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 的配置),容易卡在连接数据库这步。如果按照上文的说明安装了,选数据库时的参数为:

  1. 数据库类型 MySQL
  2. 数据库填 employees
  3. 用户名密码都填 test
  4. 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
  5. 其他看着填。

如果还没准备好数据库。在选择数据源时可以选择最下面的“稍后添加”,不注意很容易忽略。

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),上面的命令很可能就失效了,所以请慎重使用。原理已经说清楚了,各位按照这个思路微调应该就行了。

总结

  1. 从部署上来看,Metabase 和 Superset 干净一些,只会启动一个容器,也可以较方便的设置服务的端口号;
  2. 相对的,DataEase 最后会启动 dataease、mysql 两个容器,似乎还可以接受。但是启动 mysql 容器时有可能出现与本机 mysql 冲突的情况。而且 dataease 服务默认会占用 80 端口。要想解决的话需要用离线安装模式,修改配置文件,稍微繁琐一些;
  3. Redash 一下起 7 个容器,单从数量来说的话有点多,而且也会占用 80 端口。不过这些应该通过 docker-compose 的配置来解决,相对更繁琐一些;
  4. 除了 Redash,其他 3 个都支持在自己没有安装数据库的前提下体验 demo,DataEase 甚至提供了在线体验地址,这个必须给个好评。

综上,单就体验 demo 便利性方面,个人的排序为:DataEase > Metabase > Superset > Redash。

部署方面综合看 Metabase > Superset > DataEase > Redash,但是差距不大,不足以影响最终的技术选型。

“检验一流智力的标准,就是在头脑中同时存在两种截然相反的想法时,仍能保持行动能力。” —— F.Scott Fitzgerald