Flink概述、整体架构学习记录 | 青训营笔记

118 阅读2分钟

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

一、本堂课重点内容:

  • 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;

三、引用参考&推荐书目

学习资料:juejin.cn/post/712275…