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

111 阅读4分钟

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

  1. Flink概述

    1. 发展

      Hadoop(分布式) --> Spark(批处理,流处理) --> Flink(流计算,实时、更快,流批一体)

    2. 批式计算

      离线计算,静态数据集,小时/天等周期性计算

    3. 流式计算

      实时计算,快速、低延迟,无限流、动态、无边界,持续运行,流批一体

    4. 流式框架对比 Snipaste_2022-07-26_10-24-09.png

  2. Flink整体架构

    1. Flink分层架构

      1. SDK层:SQL/Table,DataStream,pyFlink
      2. 执行引擎层(Runtime层):执行引擎层提供了统一的DAG,用来描述数据处理的Pipeline,不管是流还是批,都会转化为DAG图,调度层再把DAG转化成分布式环境下的Task,Task之间通过Shuffle传输数据
      3. 状态存储层:负责存储算子的状态信息
      4. 资源调度层:目前Flink可以支持部署在多种环境 Snipaste_2022-07-26_10-42-10.png
    2. Flink整体架构

      1. 核心组件:
        1. JobManager(JM):负责整个任务的协调工作,包括:调度task、触发协调 Task做Checkpoint、协调容错回复等;
          1. Dispatcher:接收作业,拉起JobManager来执行作业,并在JobMaster挂掉之恢复作业
          2. JobMaster:管理一个job的整个生命周期,回想ResourceManager申请slot,并将task调度到对应TM上
          3. ResourceManager:负责slot资源的管理和调度,Task manager拉起之后会向RM注册
        2. TaskManager(TM):负责执行一个DataFlow Graph的各个task以及data streams的buffer和数据交换
    3. Flink作业示例

      流式的WordCount示例,从kafka中读取一个实时数据流,每10s统计一次单词出现次数,DataStream实现代码如下

      Snipaste_2022-07-26_11-00-12.png

    4. Flink如何做到流批一体

      1. why:是对与实时数据处理需要的条件下产生的,为了减少资源浪费,对于业务的相关应用

      2. 维度流式计算批式计算
        数据流无限数据集有限数据集
        时延低延迟、业务会感知运行中的情况实时性要求不高,只关注最终结果产出时间
      3. Flink对一下模块进行优化来实现流批一体

        1. SQL层;
        2. DataStreatm API层统一,批和流都可以使用DataStream API来开发;
        3. Scheduler层架构统一,支持流批场景;
        4. Failover Recovery层架构统一,支持流批场景;
        5. Shuffle Service层架构统一,流批场景选择不同的Shuffle Service;
          1. Shuffle:在分布式计算中,用来连接上下游数据交互的过程叫做Shuffle
          2. Shuffle的实现
            1. 基于文件的Pull Based Shuffle:具有较高的容错性
            2. 基于Pipeline的Push Based Shuffle:低延迟和高性能
            3. FLIP-31: Pluggable Shuffle Service - Apache Flink - Apache Software Foundation
    5. Flink调度模式

      模式特点场景
      EAGER申请一个作业所需要的全部资源,然后同时调度这个作业的全部Task,所有的Task之间采取pipeline的方式进行通信Stream作业场景
      LAZY先调度上游,等待上游产生数据或结束后再调度下游,类似Spark的Stage执行模式Batch作业场景

      由Pipeline的数据交换方式连接的Task构成为一个Pipeline Region

  3. Flink架构优化

    1. 三种业务场景的特点对比

      流式计算批式计算交互式分析
      实时计算离线计算OLAP
      延迟在秒级以内处理时间为分钟到小时级别,甚至天级别处理时间秒级
      0~1s10s~1h+1~10s
      广告推荐、金融风控搜索引擎构建索引、批式数据分析数据分析 BI报表

      OLAP计算是一种特殊的批式计算,他对并发性实时性要求更高

    2. Flink OLAP 架构现状

      1. Client:提交SQL Query
      2. Gateway:接受Client提交的SQL Query,对SQL进行语法解析和查询优化,生成Flink作业执行计划,提交给Session集群
      3. Session Cluster:执行作业调度及计算,并返回结果
  4. 实践

    1. 对于前面提到的Flink案例实习,引用学院预习手册里的连接,对相关操作进行复现,理解Flink运行

      稀土掘金 (juejin.cn)

[一文读懂Apache Flink技术 - 掘金 (juejin.cn)