基于FLINK搭建实时数仓技术调研

  • 基于FLINK搭建实时数仓技术调研
  • 确定适合的OLTP数据库
  • 结合OLTP和OLAP的实时数仓架构
  • 实时数仓ETL流程
  • 总结


基于FLINK搭建实时数仓技术调研

____数据仓库(DATA WAREHOUSE),是做大数据基本都会去涉及的项目。简单来说,数仓是数据结构化存储和查询,并利用分布式计算引擎进行计算得到业务需要的指标,以支持企业商业智能,通过充分挖掘数据价值,形成数据资产。
____传统的数据仓库偏离线处理,通过定时调度实现数据的ETL,指标的更新依赖于调度的频率,常见于T+1场景。对于时效性要求较高的指标,则依赖于OLAP系统实现数据实时加工和查询,市面上常用的OLAP数据库有:Kylin、Druid.io、ClickHouse、Greenpulm、DorisDB、Es等,目前公司采用的OLAP技术方案为:kafka+flink+druid.io
____但是随着业务的发展,OLAP系统里的数据表越来越多,统计SQL和指标数量成爆炸式增长,以前很清晰的建表方式也越来越模糊。为系统化的对实时指标进行管理,个人调研了数仓的方式,针对OLAP中的表进行ODS、DWD、DWS、ADS维度建模。同时个人采用了OLTP数据库,通过OLTP和OLAP的结合,实现指标分钟级、秒级更新,同时保留较强的实时分析能力。具体方式如下:

确定适合的OLTP数据库

个人对OLTP数据库的技术选型考虑点如下:

  1. 支持SQL,能满足数仓建模需要
  2. 满足ACID特性,数据要么写失败要么写成功,成功后立即可查
  3. 具有CDC机制,以实现数据增量订阅并触发实时计算
  4. 读写性能满足大数据量场景

经筛选,目前Newsql数据库比较符合需要,例如tidb和cockroachdb等。tidb很强大,支持HTAP,直接搞定OLTP和OLAP,但是由于目前公司已实现OLAP流程,故考虑采用cockroachdb这样的OLTP数据库就行。

结合OLTP和OLAP的实时数仓架构

按照维度建模理论,架构如下:

实时数仓Kappa 架构 实时数仓技术方案_大数据

说明: 数据处理和管道使用flink,没啥说的。存储ODS层支持OLTP数据库、OLAP数据库、kafka,具体咋存按使用需要。DWS层的维表、大宽表通过管道同步至OLAP数据库,然后可以在OLAP上用统计SQL查询需要的指标,这充分利用了OLAP数据库的分析能力,同时部分指标存储在ADS层以支持秒级更新。

实时数仓ETL流程

利用OLTP数据库CDC机制,etl流程也比较简单:

实时数仓Kappa 架构 实时数仓技术方案_技术调研_02

说明: 一个完整ETL任务最多需要运行4个flink job,每个flink job只需要关心从kafka上读,并写入OLTP数据库就行,比较简单。这里的source需要实现DynamicTableSource, sink需要实现JdbcUpsertTableSink.

总结

经过1个月的技术调研和测试环境运行测试,目前实时数仓已正式上线使用,在满足指标实时更新的同时,也保留传统数仓建模的方式。剩下的就是原统计SQL和指标的环境迁移了^^!