基于Flink和ClickHouse打造轻量级点击流实时数仓

Flink 和 ClickHouse 分别是实时计算和(近实时)OLAP 领域的翘楚 , 也是近些年非常火爆的开源框架 , 很多大厂都在将两者结合使用来构建各种用途的实时平台 , 效果很好 。
点击流数仓分层设计点击流实时数仓的分层设计仍然可以借鉴传统数仓的方案 , 以扁平为上策 , 尽量减少数据传输中途的延迟 。 简图如下 。
基于Flink和ClickHouse打造轻量级点击流实时数仓文章插图
* DIM 层:维度层 , MySQL 镜像库 , 存储所有维度数据 。
* ODS 层:贴源层 , 原始数据由 Flume 直接进入 Kafka 的对应 topic 。
* DWD 层:明细层 , 通过 Flink 将 Kafka 中数据进行必要的 ETL 与实时维度 join 操作 , 形成规范的明细数据 , 并写回 Kafka 以便下游与其他业务使用 。 再通过 Flink 将明细数据分别写入 ClickHouse 和 Hive 打成大宽表 , 前者作为查询与分析的核心 , 后者作为备份和数据质量保证(对数、补数等) 。
【基于Flink和ClickHouse打造轻量级点击流实时数仓】* DWS 层:服务层 , 部分指标通过 Flink 实时汇总至 Redis , 供大屏类业务使用 。 更多的指标则通过 ClickHouse 物化视图等机制周期性汇总 , 形成报表与页面热力图 。 特别地 , 部分明细数据也在此层开放 , 方便高级 BI 人员进行漏斗、留存、用户路径等灵活的 ad-hoc 查询 , 这些也是 ClickHouse 远超过其他 OLAP 引擎的强大之处 。