Docker部署常见应用之BI报表


在这里插入图片描述

概要

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。

  1. 获取JupyterHub镜像:

    • 使用Docker从官方仓库拉取JupyterHub最新镜像:
      docker pull jupyterhub/jupyterhub:5.0.0
      
  2. 创建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创建用户
      
  3. 启动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
      
  4. 测试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
      
  5. 使用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部署

  1. 获取Metabase镜像:

    • 使用Docker从官方仓库拉取Metabase镜像:
      docker pull metabase/metabase:v0.48.8
      
  2. 创建Metabase宿主机挂载目录:

    • 在宿主机上创建一个目录用于Metabase数据的持久化存储:
      mkdir -p /data/docker/metabase/data
      
  3. 启动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)。
  4. 测试Metabase服务:

    • 通过浏览器输入http://<宿主机IP>:3000即可开始访问
      在这里插入图片描述

DataEase部署

DataEase使用容器部署, 下载安装包执行安装命令, 会自动从官方下载dataease镜像, 并启动容器

  1. 下载DataEase安装包:

    • 使用wget从github下载DataEase安装包:
      wget https://github.com/dataease/dataease/releases/download/v2.6.1/dataease-online-installer-v2.6.1-ce.tar.gz
      
  2. 解压DataEase:

    • 将下载好的文件解压到当前目录
      tar -zxvf dataease-online-installer-v2.6.1-ce.tar.gz
      
  3. 安装DataEase

    • 安装DataEase

      # 进入安装目录
      cd dataease-online-installer-v2.6.1-ce/
      # 执行安装命令
      sh install.sh
      
  4. 测试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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值