流/批/OLAP 一体的 Flink 引擎介绍|青训营笔记

220 阅读2分钟

流/批/OLAP 一体的 Flink 引擎介绍|青训营笔记

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

1.Flink概述

史前阶段~2006-->hadoop 有俩个算子 MAP、Rreduce-->Spark出现SQL高阶API代替了-->Flink更快

需要流计算的原因:实时计算价值大

实时计算的需求:

  • 批式计算--》流式计算
  • 离线非实时,静态数据集,周期性计算--》实时计算、快速、低延时、无限流、动态、无边界、724H持续运行、流批一体*

Storm 最少一次,可能多一次处理 、 不支持SQL

Spark Streaming是mini-batch(微批处理)、支持SQL、Exactly-精确一次的计算语义

Flink 可做到一条一条的处理、支持SQL、Exactly-精确一次的计算语义

Flink是一个基于无边界、有边界的数据流的计算引擎(流批一体)

1.2 Apache Flink 开源生态

集成较高,支持很多数据引擎

2.Flink整体架构

  • 分层架构:SDK层、执行引擎层、状态存储层、资源调度层
  • 总体架构:JobManager(JM)、TaskManager(TM)、Dispatcher、JobMater、ResourceManager
  • Flink作业示例:source、transformation、sink ;operator chain(source map作为一个task)

2.4 Flink如何做到流批一体

  • 将批式计算视为流式计算的特例
  • 流批一体的Scheduler层在Flink1.12之前支持两种调度模式:EAGER、LAZY
  • pipeline region:抽象能同时对流和批进行调度,数据是直接过去,中间不落盘
  • BLOCKING:中间要落盘
  • SHUFFLE:只要设计上下游数据交换(数据重分布)都可以理解为shuffle
  • Flink的目标是实现统一的shuffle

3.fLINK架构优化

  • OLAP高并发查询时保持低延迟、高实时
  • OLAP可视为特殊的批式计算
  • 高并发支持,极致的处理性能

3.3 Flink的OLAP的优化之路

  • Flink中OLAP的调整 作业频繁启停,资源碎片化等等
  • 架构现状:提交SQL Query 、Gateway(问答)、Session Cluster

4.Flink案例

  • 如何由之前的离线、实时到统一为FLINK

  • 业务数据源放在kafka里-->一部分放在hive里面

  • 业务数据源放在kafka里-->Flink直接进行流处理