Flink 实时数仓-思考与总结

缺乏、安全感 2023-07-03 04:40 54阅读 0赞

1,什么是Flink实时数仓。

大家做离线开发是的时候数据存储在hdfs或者hive,基于此,不管用什么组件,数据源都是hive,然后定时执行脚本,跑离线任务啥的。

实时数仓大家可以理解为数据都存储在kafka,Flink消费kafka的数据然后进行逻辑处理,然后再下发到kafka,这么延迟是秒或者分钟级别的,对于不同的业务效果更好,更实时。

2,为什么要做实时数仓呢?

我的理解是因为业务,大家想想,离线数据处理的都是什么数据,简单总结之就是流量数据,从大量的数据最后得到几个需要的维度的值,而实时数仓效果更快,这是技术的进步,更能提高效率

3,实时数仓的缺点?

缺点可能的话还是资源吧,消耗更多。

与其说是缺点,不如说是难点,痛点。 大概是资料不是很多,坑还需要人来趟。

4,之前我在接触实时数仓的时候,有个想法。

我之前想整合 Nifi + Flink+Druid的,目前都了解了一下之后发现不行。

首先Nifi 使用有局限,没我想象的那么简单和容易上手,Druid就不说了,吃资源大户,类似kylin,而且也是需要时间去设计数据结构,存储等等,难点不是使用。这两者都不是很流行,说白了用的人没那么多,对于公司来讲,成本未知。

5,还是聊聊Flink实时数仓吧。

1)美团实时数仓

  1. 平台架构:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70

案例:流量数仓

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 1

使用效果:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 2

实践总结:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 3

传统数仓:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 4

Flink实时数仓:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 5

准实时数仓:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 6

准实时数仓与实时数仓的对比:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 7

实时数仓平台架构:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 8

2)美团:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 9

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 10

ODS层:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 11

保证kafka分区数据有序:

2020021122095352.png

DW层的建设:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 12

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 13

维度建设:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 14

维度数据使用:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 15

汇总层的建设:

注意点:去重的时候可能会占用过大的资源导致程序死掉,我们可以使用一些算法或者办法,比如布隆过滤器

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 16

仓库的质量保证:

Flink sql校验怎么做?

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 17

一定建立血缘关系,如果任务或者作业修改了,下游要准确的保持一致,所以需要血缘关系。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 18

数据质量验证:

就是将中间表数据写入hive,通过离线数据的结果统计比对实时数仓的结果是否正确,验证差异。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY2Nzkz_size_16_color_FFFFFF_t_70 19

3)拉链表的意思:

https://blog.csdn.net/saqin6255/article/details/80362248

4)

6,大家可以参考的文章或者视频了解一下

发表评论

表情:
评论列表 (有 0 条评论,54人围观)

还没有评论,来说两句吧...

相关阅读

    相关 基于Flink实时

    转自博客园大佬:[鼬手牵佐手][Link 1]   实时数仓主要解决传统数仓数据时效性低的问题,实时数仓通常会用在实时的OLAP分析,实时大屏展示,实时监控报警各个场景。虽

    相关 实时计算实时对比

    实时计算与实时数仓比较 普通的`实时计算优先考虑时效性`,所以从数据源采集经过实时计算直接得到结果。如此做`时效性更好`,但是弊端是由于计算过程中的`中间结果没有沉淀`下