1,什么是Flink实时数仓。
大家做离线开发是的时候数据存储在hdfs或者hive,基于此,不管用什么组件,数据源都是hive,然后定时执行脚本,跑离线任务啥的。
实时数仓大家可以理解为数据都存储在kafka,Flink消费kafka的数据然后进行逻辑处理,然后再下发到kafka,这么延迟是秒或者分钟级别的,对于不同的业务效果更好,更实时。
2,为什么要做实时数仓呢?
我的理解是因为业务,大家想想,离线数据处理的都是什么数据,简单总结之就是流量数据,从大量的数据最后得到几个需要的维度的值,而实时数仓效果更快,这是技术的进步,更能提高效率
3,实时数仓的缺点?
缺点可能的话还是资源吧,消耗更多。
与其说是缺点,不如说是难点,痛点。 大概是资料不是很多,坑还需要人来趟。
4,之前我在接触实时数仓的时候,有个想法。
我之前想整合 Nifi + Flink+Druid的,目前都了解了一下之后发现不行。
首先Nifi 使用有局限,没我想象的那么简单和容易上手,Druid就不说了,吃资源大户,类似kylin,而且也是需要时间去设计数据结构,存储等等,难点不是使用。这两者都不是很流行,说白了用的人没那么多,对于公司来讲,成本未知。
5,还是聊聊Flink实时数仓吧。
1)美团实时数仓
平台架构:
案例:流量数仓
使用效果:
实践总结:
传统数仓:
Flink实时数仓:
准实时数仓:
准实时数仓与实时数仓的对比:
实时数仓平台架构:
2)美团:
ODS层:
保证kafka分区数据有序:
DW层的建设:
维度建设:
维度数据使用:
汇总层的建设:
注意点:去重的时候可能会占用过大的资源导致程序死掉,我们可以使用一些算法或者办法,比如布隆过滤器
仓库的质量保证:
Flink sql校验怎么做?
一定建立血缘关系,如果任务或者作业修改了,下游要准确的保持一致,所以需要血缘关系。
数据质量验证:
就是将中间表数据写入hive,通过离线数据的结果统计比对实时数仓的结果是否正确,验证差异。
3)拉链表的意思:
https://blog.csdn.net/saqin6255/article/details/80362248
4)
6,大家可以参考的文章或者视频了解一下