动手搭建一个 OLAP 环境 —— 使用 ClickHouse + Superset

🎯 动手搭建一个 OLAP 环境 —— 使用 ClickHouse + Superset

本教程将带你从零开始,在本地(或云服务器)搭建一个完整的 OLAP 分析环境:

  • ClickHouse:高性能列式 OLAP 数据库,用于存储和快速查询海量数据。
  • Superset:开源 BI 可视化平台,提供拖拽式仪表盘、图表和 SQL 查询界面。

🧰 一、环境准备

✅ 系统要求

  • 操作系统:Linux(推荐 Ubuntu 20.04/22.04)或 macOS,Windows 可用 WSL2
  • 内存:建议 ≥ 4GB(Superset + ClickHouse)
  • Docker & Docker Compose(推荐方式,避免环境冲突)

💡 若你没有 Docker,也可直接安装 ClickHouse 和 Superset,但 Docker 更简单、可移植。


🐳 二、使用 Docker 快速部署

我们将使用 docker-compose.yml 同时启动 ClickHouse 和 Superset。

1️⃣ 创建项目目录

mkdir olap-demo && cd olap-demo

2️⃣ 创建 docker-compose.yml

# docker-compose.yml
version: '3.8'

services:
  clickhouse:
    image: clickhouse/clickhouse-server:23.3
    container_name: clickhouse-server
    ports:
      - "8123:8123"   # HTTP 接口
      - "9000:9000"   # Native TCP 接口(可选)
    volumes:
      - ./clickhouse_data:/var/lib/clickhouse
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    environment:
      - CLICKHOUSE_USER=default
      - CLICKHOUSE_PASSWORD=
      - CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1
    restart: unless-stopped

  superset:
    image: apache/superset:latest
    container_name: superset
    ports:
      - "8088:8088"
    volumes:
      - ./superset_data:/home/superset
    environment:
      - SUPERSET_SECRET_KEY=your_secret_key_here
    restart: unless-stopped
    depends_on:
      - clickhouse

💡 默认无密码,生产环境请设置密码和 SECRET_KEY。

3️⃣ 启动服务

docker-compose up -d

等待 1~2 分钟,服务启动完成。

✅ 检查容器状态:

docker ps

你应该看到 clickhouse-serversuperset 两个容器在运行。


🧪 三、初始化 Superset

首次使用 Superset 需要初始化数据库和创建管理员用户。

1️⃣ 进入 Superset 容器

docker exec -it superset bash

2️⃣ 初始化数据库和创建管理员用户

在容器内依次执行:

# 初始化数据库
superset db upgrade

# 创建管理员用户(按提示输入用户名、邮箱、密码)
superset fab create-admin

# 加载示例数据(可选)
superset load_examples

# 初始化角色和权限
superset init

完成后输入 exit 退出容器。


🌐 四、访问 Superset Web 界面

打开浏览器访问:

👉 http://localhost:8088

使用刚才创建的管理员账号登录。


📥 五、连接 ClickHouse 到 Superset

1️⃣ 安装 ClickHouse SQLAlchemy 驱动

Superset 默认不支持 ClickHouse,需安装驱动。

进入 Superset 容器:

docker exec -it superset bash

安装驱动:

pip install clickhouse-connect

clickhouse-connect 是新一代官方推荐驱动,支持 SQLAlchemy。

重启 Superset:

exit
docker restart superset

2️⃣ 在 Superset 中添加 ClickHouse 数据库

登录 Superset → 点击右上角 Settings ⚙️ → Data → Databases → + Database

填写如下信息:

  • Database name: ClickHouse Local
  • SQLAlchemy URI:
clickhouse+connect://default:@host.docker.internal:8123/default

🔍 说明:

  • host.docker.internal 是 Docker 容器访问宿主机的特殊 DNS(适用于 macOS/Windows)
  • 如果你在 Linux 上,或容器间通信,请使用 clickhouse(服务名):
    clickhouse+connect://default:@clickhouse:8123/default
    

✅ 点击 Test Connection,成功后点击 Save


🧱 六、导入示例数据到 ClickHouse

我们导入一个简单的销售数据表示范分析。

1️⃣ 进入 ClickHouse 命令行

docker exec -it clickhouse-server clickhouse-client

2️⃣ 创建数据库和表

CREATE DATABASE IF NOT EXISTS sales;

USE sales;

CREATE TABLE sales_data (
    id UInt32,
    region String,
    product String,
    sales_amount Float64,
    sale_date Date
) ENGINE = MergeTree()
ORDER BY (sale_date, id);

3️⃣ 插入模拟数据

INSERT INTO sales_data VALUES
(1, 'North', 'Laptop', 1200.00, '2024-01-10'),
(2, 'South', 'Phone', 800.00, '2024-01-12'),
(3, 'East', 'Tablet', 600.00, '2024-01-15'),
(4, 'West', 'Laptop', 1100.00, '2024-01-18'),
(5, 'North', 'Phone', 750.00, '2024-02-05'),
(6, 'South', 'Laptop', 1300.00, '2024-02-10'),
(7, 'East', 'Phone', 820.00, '2024-02-15'),
(8, 'West', 'Tablet', 550.00, '2024-02-20');

输入 exit 退出客户端。


📊 七、在 Superset 中创建图表和仪表盘

1️⃣ 创建数据集(Dataset)

  • 进入 Datasets → + Dataset
  • 选择数据库 ClickHouse Local
  • 选择表 sales.sales_data
  • 点击 Save

2️⃣ 创建第一个图表(Chart)

  • 点击 Charts → + Chart
  • 选择刚创建的 Dataset
  • 选择可视化类型,如 “Bar Chart”
  • 设置:
    • X 轴:region
    • Y 轴(指标):SUM(sales_amount)
  • 点击 Run → Save

3️⃣ 创建仪表盘(Dashboard)

  • 点击 Dashboards → + Dashboard
  • 输入名称,如 “Sales Analysis”
  • 点击刚保存的图表,拖拽到画布
  • 保存并查看效果!

🎉 你已成功搭建并使用 OLAP 环境进行可视化分析!


🚀 八、进阶建议

✅ 数据持续导入

  • 使用 clickhouse-client --query="INSERT INTO ..." 脚本批量导入
  • 或使用 Kafka + MaterializedMySQL / Kafka Engine 实现实时摄入

✅ 性能优化

  • 对大表使用 PARTITION BY toYYYYMM(sale_date)
  • 添加物化视图预聚合
  • 使用 PROJECTION 加速特定查询

✅ 安全加固

  • 设置 ClickHouse 用户密码和权限
  • 配置 Superset 的 LDAP/OAuth 认证
  • 使用 Nginx 反向代理 + HTTPS

✅ 接入真实数据源

  • 将 MySQL/PostgreSQL 数据通过 ETL(如 Airflow)导入 ClickHouse
  • 使用 clickhouse-localclickhouse-copier 迁移数据

🧾 九、常用命令速查

功能命令
启动服务docker-compose up -d
查看日志docker logs supersetclickhouse-server
进入 ClickHousedocker exec -it clickhouse-server clickhouse-client
进入 Superset 容器docker exec -it superset bash
重启 Supersetdocker restart superset
停止服务docker-compose down

📌 十、学习资源推荐

  • ClickHouse 官方文档:https://clickhouse.com/docs
  • Superset 官方文档:https://superset.apache.org/docs
  • ClickHouse 中文社区:https://clickhouse.com/cn
  • GitHub 示例项目:搜索 “clickhouse superset demo”

✅ 至此,你已完成一个生产可用的 OLAP 环境搭建!

你可以基于此架构:

  • 接入企业真实数据
  • 构建销售/用户/运营分析看板
  • 实现自助式 BI 分析平台
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值