我理解的数仓项目
我理解的数仓项目
我会从数据的流向来梳理整个架构.
-
离线数仓:(对产生的数据进行处理,一般处理T+1数据.)
-
订单数据保存在mysql数据库中,通过kettle进行ETL
(进行数据的抽取,基本的预处理 转换装载到HDFS中) -
这里用到hive数据仓库工具,hive 数据保证在hdfs中,运用hsql对数据进行操作,
底层进行mapreduce. -
对数仓进行分层.
-
ods 层 预处理后的数据
dw 层 对数据进行拉宽 确定事实表 维度表 这里用到一个星型模型 -
dm 层 数据集市层 根据部门需求 可以不同的指标计算
-
ADS 层 指标数据 供BI工具进行调用.
-
以后可以通过存储到hsql,web前段连接数据库进行展示.
-
为应对不同需求,指标会频繁发生变更,但确不能及时迅速的调取数据ods指标数据.引入了一款kylin组件.
-
kylin 只需要调用hive 中dw层,指定事实表,指定维度.生成模块,在生成cube.
现在支持mapreduce 和spark 引擎. -
kylin 可以 根据事实表 维度 生成不同维度的数据.而且支持类sql 查询.
前端可以直接连接,前端工程师可以通过写简单的sql得到想要的指标. -
实时数仓:(数据流时刻都在产生,要求数据产生后就能到想要的指标数据,可以得到毫秒级)
-
数据源1.Nginx服务器采集用户的点击流日志保存到本地文件,使用Flume对日志采集,
数据源2:Canal通过读写binlog日志读取mysql的数据. -
两类数据连接到kafka中,(kafka消息队列起到消峰限流的作用)
-
在kafka中,建两个topic
-
数据源1: topic_click_log
据源2 :topic_canal -
通过flinkkafkaconsumer011 整合kafka消费数据
-
Flink 流处理系统 计算访问指标 实时ETL 订单的明细数据拉宽 这里redis存储指标数据
实时ETL 处理后的数据推回到kafka 中 这里即为topic_dws -
这里用到专用大数据存储数据工具 hbase列式存储 支持rowkey字段查询.
为了解决这个问题,这里用到phonenix 这是一款sql执行引擎 通过建立关联视图 实现了二级索引. -
同样为了解决需求指标变更频繁的问题,这里用到一个新的Druid框架
-
可以对接kafaka 中 topic_dws 提供sql引擎进行数据分析.
-
最后可视化工具 这里用到的是superset
-
对接kylin 对接 redis 对接 druid 这样就完成了整个数仓项目的搭建.
最后附上整个项目的架构图,希望给看到这篇文章的小伙伴有所帮助.
这样就完成了整个数仓项目的搭建.
最后附上整个项目的架构图,希望给看到这篇文章的小伙伴有所帮助.