概要
Superset、Metabase、Jupyter 和 DataEase 都是数据可视化和分析工具,但它们各自有不同的特点和用途。以下是对这些工具的对比分析:
Superset
- 定位:Superset 是一个企业级的现代数据可视化和数据探索平台。
- 界面:提供了复杂和灵活的用户界面,适合有一定技术背景的用户。
- 数据集:强调数据集的概念,允许创建数据集并基于这些数据集创建图表和仪表盘。
- 权限管理:提供了细粒度的权限控制系统。
- 部署:部署过程相对复杂,支持多种部署方式,包括 pip、docker-compose 和 helm。
- 社区支持:在 GitHub 上有较高的 star 数,社区活跃。
Notebook
- 定位:Jupyter Notebook 主要是一个交互式笔记本,广泛用于数据科学和机器学习领域。
- 界面:基于 Web 的交互式开发环境。
- 灵活性:适合进行探索性数据分析和原型设计,支持超过 40 种编程语言。
- 社区和生态系统:拥有庞大的社区和丰富的生态系统。
Metabase
- 定位:Metabase 是一个开源的 BI 分析工具,适合非技术用户和产品经理。
- 界面:简洁直观,易于上手。
- 查询方式:允许直接在仪表盘中创建和修改查询,提供简单查询和 SQL 查询两种方式。
- 权限管理:提供了相对简单的权限管理系统。
- 部署:安装过程简单,可以通过运行一个 jar 包完成安装。
- 图表类型:提供了丰富的图表类型,支持地图和仪表盘等高级可视化。
DataEase
- 定位:DataEase 是一个开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势。
- 部署:支持多种部署方式,包括在线安装、离线安装、源码部署等,支持一键安装部署。
- 样式:样式丰富,视觉效果美观。
- 数据源:支持多种数据源,包括 Excel,易于小白用户上手操作。
- 模板市场:提供了免费且丰富的模板市场。
每种工具都有其独特的优势和适用场景,选择哪一种取决于用户的具体需求、技术背景和数据分析的目标。
Superset部署
Notebook部署
Jupyter Notebook 和 JupyterHub 是两个密切相关但又有明显区别的开源项目,它们都是 Jupyter 项目生态系统的一部分,旨在促进交互式计算。
Jupyter Notebook
Jupyter Notebook 是一个开源的 Web 应用程序,它允许用户创建和共享包含代码、方程、可视化和文本的文档。它支持超过 40 种编程语言,并且广泛应用于数据清洗和转换、数值模拟、统计建模、机器学习等领域。
JupyterHub
JupyterHub 是 Jupyter Notebook 的多用户版本,它为多个用户提供 Jupyter Notebook 的集成服务系统,每个用户相互隔离。JupyterHub 管理着每个用户的 Jupyter 环境,允许多个用户同时连接到自己的 Jupyter Notebook 实例,而不会互相干扰。它适用于教育、研究和行业等环境,可以很容易地集成到现有的基础设施中,并支持各种认证方式,如 LDAP、OAuth 等。
Jupyter Notebook 提供了一个交互式的计算环境,而 JupyterHub 则提供了一个多用户的 Jupyter Notebook 服务,使得在团队或组织中共享和协作变得更加容易。JupyterHub 可以看作是 Jupyter Notebook 的扩展,它提供了用户管理和服务管理的功能,使得 Jupyter Notebook 能够更好地服务于多用户环境。
在部署时,有几种不同的方法可以选择:
-
基于 JupyterHub 镜像安装 Jupyter Notebook:使用 JupyterHub 的 Docker 镜像作为基础,然后在其中安装和配置 Jupyter Notebook。
-
基于 JupyterNotebook 镜像安装 JupyterHub:从 Jupyter Notebook 的 Docker 镜像出发,进而安装 JupyterHub 来管理多个用户的 Notebook 实例。
-
分开镜像部署 JupyterHub 和 Jupyter Notebook:分别使用不同的 Docker 镜像独立部署 JupyterHub 和 Jupyter Notebook,使得它们运行在不同的服务或容器中。
下面,将采用第一种方法,即基于 JupyterHub 的 Docker 镜像来安装和配置 Jupyter Notebook。
-
获取JupyterHub镜像:
- 使用Docker从官方仓库拉取JupyterHub最新镜像:
docker pull jupyterhub/jupyterhub:5.0.0
- 使用Docker从官方仓库拉取JupyterHub最新镜像:
-
创建JupyterHub宿主机挂载目录:
- 在宿主机上创建一个目录用于Metabase数据的持久化存储:
mkdir -p /data/docker/jupyterhub/home /data/docker/jupyterhub/srv
- 修改权限
chmod -R 777 /data/docker/jupyterhub
- 生成
jupyterhub_config.py
文件, 并导出宿主
在docker run --rm jupyterhub/jupyterhub:5.0.0 bash -c "jupyterhub --generate-config > /dev/null && cat /srv/jupyterhub/jupyterhub_config.py" > /data/docker/jupyterhub/srv/jupyterhub_config.py
jupyterhub_config.py
增加配置信息c.Authenticator.allowed_users = set(['jupyterhub']) # 容许juupyterhub登录 c.Authenticator.admin_users = {'jupyterhub'} # 将用户jupyterhub 设置为管理员 c.Authenticator.create_system_users = True # 容许jupyterhub创建用户
- 在宿主机上创建一个目录用于Metabase数据的持久化存储:
-
启动JupyterHub容器:
-
使用以下命令启动jupyterhub 容器,并将配置文件和数据目录挂载到容器中:
docker run \ -d \ --restart=always \ --name jupyterhub \ --privileged=true \ -p 8000:8000 \ -v /data/docker/jupyterhub/srv:/srv/jupyterhub \ -v /data/docker/jupyterhub/home:/home \ jupyterhub/jupyterhub:5.0.0 jupyterhub
其中:
-d
表示后台运行容器。--restart always
设置容器的重启策略。--name jupyterhub
为容器指定一个名称。-p 8000:8000
将容器的3000端口映射到宿主机的3000端口。-v /data/docker/jupyterhub/src:/srv/jupyterhub
将宿主机的数据挂载到容器中。-v /data/docker/jupyterhub/home:/home
将宿主机用jupyterhub下home挂载到容器中,用于存放notebook。jupyterhub/jupyterhub:5.0.0
指定要使用的jupyterhub镜像和版本(5.0.0)。
-
进入容器后,下方操作都是在容器内进行的
docker exec -it jupyterhub bash
-
容器内创建用户, 根据提示设置密码
adduser jupyterhub
-
容器内安装notebook
# 设置清华源镜像地址 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 安装notebook pip install notebook --upgrade
-
容器内安装python常用的科学计算包
pip install numpy pip install pandas pip install matplotlib pip install seaborn pip install scipy
-
重启容器
docker restart jupyterhub
-
-
测试JupyterHub服务:
- 通过浏览器输入
http://<宿主机IP>:8000
即可开始访问, 输入刚才创建用户名jupyterhub
, 密码123456
- 输入代码, 运行
from matplotlib import pyplot as plt import numpy as np # Generate 100 random data points along 3 dimensions x, y, scale = np.random.randn(3, 100) fig, ax = plt.subplots() # Map each onto a scatterplot we'll create with Matplotlib ax.scatter(x=x, y=y, c=scale, s=np.abs(scale)*500) ax.set(title="Some random data, created with JupyterLab!") plt.show() ```
- 新增用户
- 进入容器修改新增用户密码
# 进入容器 docker exec -it jupyterhub bash # 修改密码 passwd jack
- 通过浏览器输入
-
使用Dockerfile构建镜像
由于上面过程较为繁琐, 可以封装成Dockerfile文件, 基于jupyterhub构建一个新的镜像。
- 创建
Dockerfile
, 增加内容# 使用官方 JupyterHub 基础镜像 FROM jupyterhub/jupyterhub:5.0.0 # 如果需要,设置清华大学TUNA镜像站以加速Python包的下载 RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 安装所需的Python包 RUN pip install --upgrade --progress-bar off notebook numpy pandas matplotlib seaborn scipy # 配置文件复制到容器中适当的位置 COPY jupyterhub_config.py /srv/jupyterhub/ # 如果需要在容器内部创建一个名为jupyterhub的用户并设置密码 RUN useradd -m jupyterhub && echo "jupyterhub:123456" | chpasswd # 暴露 JupyterHub 默认端口 EXPOSE 8000 # 定义容器启动后执行的命令 CMD ["jupyterhub"]
- 创建配置文件
jupyterhub_config.py
, 增加配置c.Authenticator.allowed_users = set(['jupyterhub']) # 容许juupyterhub登录 c.Authenticator.admin_users = {'jupyterhub'} # 将用户jupyterhub 设置为管理员 c.Authenticator.create_system_users = True
- 构建镜像
docker build -t my-jupyterhub:5.0.0 .
- 运行容器
docker run \ -d \ --restart=always \ --name my-jupyterhub \ --privileged=true \ -p 8000:8000 \ my-jupyterhub:5.0.0
- 创建
Metabase部署
-
获取Metabase镜像:
- 使用Docker从官方仓库拉取Metabase镜像:
docker pull metabase/metabase:v0.48.8
- 使用Docker从官方仓库拉取Metabase镜像:
-
创建Metabase宿主机挂载目录:
- 在宿主机上创建一个目录用于Metabase数据的持久化存储:
mkdir -p /data/docker/metabase/data
- 在宿主机上创建一个目录用于Metabase数据的持久化存储:
-
启动Metabase容器:
- 使用以下命令启动Metabase容器,并将配置文件和数据目录挂载到容器中:
其中:docker run \ -d \ --restart always \ --name metabase \ -p 3000:3000 \ -v /data/docker/metabase/data/metabase.db:/metabase.db \ metabase/metabase:v0.48.8
-d
表示后台运行容器。--restart always
设置容器的重启策略。--name metabase
为容器指定一个名称。-p 3000:3000
将容器的3000端口映射到宿主机的3000端口。-v /data/docker/metabase/data/metabase.db:/metabase.db
将宿主机的数据库挂载到容器中。metabase/metabase:v0.48.8
指定要使用的metabase镜像和版本(v0.48.8)。
- 使用以下命令启动Metabase容器,并将配置文件和数据目录挂载到容器中:
-
测试Metabase服务:
- 通过浏览器输入
http://<宿主机IP>:3000
即可开始访问
- 通过浏览器输入
DataEase部署
DataEase使用容器部署, 下载安装包执行安装命令, 会自动从官方下载dataease镜像, 并启动容器
-
下载DataEase安装包:
- 使用
wget
从github下载DataEase安装包:wget https://github.com/dataease/dataease/releases/download/v2.6.1/dataease-online-installer-v2.6.1-ce.tar.gz
- 使用
-
解压DataEase:
- 将下载好的文件解压到当前目录
tar -zxvf dataease-online-installer-v2.6.1-ce.tar.gz
- 将下载好的文件解压到当前目录
-
安装DataEase
-
安装DataEase
# 进入安装目录 cd dataease-online-installer-v2.6.1-ce/ # 执行安装命令 sh install.sh
-
-
测试DataEase服务:
- 服务控制命令
# 查看dataease服务 dectl status # 启动dataease服务 dectl start # 停止dataease服务 dectl start
- 通过浏览器输入
http://<宿主机IP>:8100
即可开始访问 - 系统登录信息如下:
- 用户名: admin
- 初始密码: DataEase@123456
- 服务控制命令
小结
- Superset:适合需要强大数据集功能和细粒度权限控制的技术用户。
- Notebook:适合数据科学家和分析师进行探索性数据分析和建模。
- Metabase:适合希望快速部署和简单易用的业务用户,特别是非技术背景的用户。
- DataEase:适合需要快速部署和美观展示的用户,特别是对小白用户友好。
参考文章
Running Metabase on Docker
JupyterHub官方文档
JupyterHub 安装、环境配置、创建多用户和使用经验
使用Docker安装JupyterHub
jupyterHub安装,docker安装JupyterHub,JupyterLub,配置JupyterHub使用JupyterLab
Docker安装多用户版JupyterHub
docker build过程pip install 提示RuntimeError: can’t start new thread