这是我参与「第四届青训营 」笔记创作活动的的第二天
一、本堂课重点内容:
- Flink概述:流式计算的需求
- Flink整体架构:一个Flink作业调度和运行,流批一体特性
- Flink架构优化:流/批/OLAP业务场景分析
- Flink案例讲解
二、详细知识点介绍:
实时计算的业务场景需求、流式计算特点
- 数据实时价值更大;
- 大数据批式处理分钟级、小时级、天极,部分业务场景无法接受;
流式计算特点:
- 实时计算、快速、低延迟;
- 无限流、动态、无边界;
- 7*24 持续运行;
Flink 架构的概念
Flink分层架构
-
SDK 层
-
执行引擎层(Runtime 层):执行引擎层提供了统一的 DAG,用来描述数据处理的 Pipeline,不管是流还是批,都会转化为 DAG 图,调度层再把 DAG 转化成分布式环境下的 Task,Task 之间通过 Shuffle 传输数据;
- 调度
- Task 生命周期
- Flink Failover 机制
- Flink 反压概念及监控
- Flink HA 机制
-
状态存储层:负责存储算子的状态信息
Flink整体架构
-
JobManager(JM)负责整个任务的协调工作,包括:调度 task、触发协调 Task 做 Checkpoint、协调容错恢复等,核心有下面三个组件:
- Dispatcher: 接收作业,拉起 JobManager 来执行作业,并在 JobMaster 挂掉之后恢复作业;
- JobMaster: 管理一个 job 的整个生命周期,会向 ResourceManager 申请 slot,并将 task 调度到对应 TM 上;
- ResourceManager:负责 slot 资源的管理和调度,Task manager 拉起之后会向 RM 注册;
- TaskManager(TM):负责执行一个 DataFlow Graph 的各个 task 以及 data streams 的 buffer 和数据交换。
Apache Flink 主要从以下几个模块来做流批一体:
- SQL 层;
- DataStream API 层统一,批和流都可以使用 DataStream API 来开发;
- Scheduler 层架构统一,支持流批场景;
- Failover Recovery 层 架构统一,支持流批场景;
- Shuffle Service 层架构统一,流批场景选择不同的 Shuffle Service;