Flink相关原理与实践|青训营笔记

255 阅读4分钟

Flink原理与实践|青训营笔记

这是我参与「第四届青训营 」笔记创作活动的第2天

一、复习前一节课的主要知识点

1、常见的几种查询优化器

(1)Top-down Optimizer
从目标输出开始,由上往下遍历计划树,找到完整的最优执行计划。
(2)Button-up Optimizer
从零开始,由上往下遍历计划树,找到完整的执行计划。
(3)Rule-based Optimizer,简称RBO
根据关系代数的等价语义,重写查询,基于启发式规则,会访问表的元信息(catalog),不会涉及具体的表数据。使得目标处理数据更小,查询数据最小。
(4)Cost-based Optimizer,简称CBO
使用一个模型估计执行计划的代价,选择代价最小的执行计划,执行计划的代价等于所有算子的执行代价之和,通过RBO得到所有可能的等价执行计划。

2、RBO的几种优化规则

(1) RBO-列剪裁
(2) RBO-谓词下推
(3) RBO-传递闭包
(4) RBO-Runtime Filter

3、CBO优化推导规则:

(1)基表统计信息
表或者分区级别、列级别
(2)推导统计信息
选择率、基数
详细可见我的上一篇笔记
萌新学习大数据的第一天|青训营笔记

二、了解流/批/OLAP一体——Flink引擎

1、了解流批一体的 Apache Flink 架构

(1)为什么需要流式计算

大数据实时性带来的价值更大吗,流式计算能广泛应用于监控场景,金融风控,实时推荐等其他地方,正因为大数据的实时性需求,带来了大数据计算架构模式的变化。从批式计算的离线非实时、静态数据集,周期性九三时间长到流式计算的实时计算做到快速低延迟、无限流、动态无边界、长时间持续运行以及做到流批一体。

image.png

这里给出官网和推荐的文章
官网
大数据Hadoop之——实时计算流计算引擎Flink(Flink环境部署)

(2)Apache Flink 开源生态

Apache Flink 在开源生态上的能力比较强大,可以支持:

  1. 流批一体:支持流式计算和批式计算;
  2. OLAP:Flink 可以支持 OLAP 这种短查询场景;
  3. Flink ML:pyFlink、ALink、AIFlow 等生态支持 Flink 在 ML 场景的应用;
  4. Gelly:图计算;
  5. Stateful Function:支持有状态的 FAAS 场景;
  6. ...

image.png

(3)Flink支持流批一体和OLAP

支持流批一体

  • 批式计算是流式计算的特例,Everything is Streams,有界数据集(批式数据)也是一种数据流、一种特殊的数据流;
  • 站在 Flink 的角度,Everything is Streams,无边界数据集是一种数据流,一个无边界的数据流可以按时间切段成一个个有边界的数据集,所以有界数据集(批式数据)也是一种数据流。因此,不管是有边界的数据集(批式数据)还是无边界数据集,Flink 都可以天然地支持,这是 Flink 支持流批一体的基础。并且 Flink 在流批一体上,从上面的 API 到底层的处理机制都是统一的,是真正意义上的流批一体。

Flink做OLAP

  • Flink 做 OLAP 的优势
  1. 统一引擎:流处理、批处理、OLAP 统一使用 Flink 引擎;
  2. 既有优势:利用 Flink 已有的很多特性,使 OLAP 使用场景更为广泛;
  3. 相互增强:OLAP 能享有现有引擎的优势,同时也能增强引擎能力 image.png

三、总结

Flink经过相应改造和优化后Flink也在其架构设计上完成对流和批的支持和相关优化,在现在的大数据场景上也已经可以非常成熟的使用了,而在OLAP上还需要更多研究面临一些为解决的挑战比如说毫秒级的小作业、频繁启停、Latency+高APS要求等等。
推荐文章Flink社区文档集合

本文参考主要为
青训营学员手册
个人笔记

ps:笔记记得很早但发布的很晚