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

88 阅读2分钟

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

本节课主要讲了Flink的相关介绍,包括概述、整体构架、构架优化与案例讲解。

1. Flink 概述 (Apache Flink)

  1. 诞生背景

    大数据:价值化,海量化,多样化,快速化

    大数据计算架构发展历史:2006 -> Hadoop -> Spark -> Flink(实时,更快)

    流式计算:价值更大(e.g. 实时监控,推荐,风控)

    批式计算->流式计算

  2. 为什么脱颖而出?

    流式计算对比:Storm vs Spark Streaming vs Flink

    Flink:流批一体;Exactly-once;状态容错;Dataflow编程模型

    开源生态

2. Flink 整体构架

  1. 分层架构

(1)SDK层:SQL/Table, DataStream, Python

(2)执行引擎层:转化为DAG,Task

(3)状态储存层

(4)资源调度层

  1. 总体架构

    JobManager:整个任务的协调工作

    TaskManager:负责task执行和buffer的数据交换

    JobManager包括:

graph TD
Dispatcher --> JobMaster --> ResourceManager

Dispatcher : 接受作业

JobMaster:向RS申请slot

ResourceManager:负责资源调度

  1. 作业示例

  2. 如何做到流批一体

    为什么需要:实时统计相关数据

流式计算批式计算
实时计算离线计算
延迟在秒级以内处理时间为分钟到小时,甚至天
0~1s10s~1h+
广告推荐,金融风控搜索引擎构建索引,批式数据分析
无限数据集有限数据集
低延迟,会感知运营中的情况对实时性要求不高

怎么做到:everything is stream(基础)

(1)SQL层

(2)DataStream API层统一

(3)Scheduler:DAG转化为Task

EAGERLAZY
申请全部资源,调度所有Task,Pipeline通信先上游后下游
Stream作业场景Batch作业场景
task一起调度最小一个task

(4)Failover Recovery

(5)Shuffle Service

shuffle:上下游数据交换

基于文件基于pipeline
较高容错与稳定性低延迟高性能

3. Flink 架构优化

  1. 业务场景概述

    不同场景,数据处理要求不同

    OLPA : 要求高并发查询,查询延迟在秒级

  2. 为什么三种场景可以用一套引擎来解决

    • 批式计算是流式计算的特例
  3. Flink如何支持OLAP场景

    优势:引擎统一;既有优势;生态支持

    挑战:秒级和毫秒级->作业频繁启停->Latency+QPS的要求

    构架现状:Client->Gateway->Session Cluster

4. 精选案例

  1. 电商流批一体实践

  2. 字节Flink OLAP实践