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

130 阅读3分钟

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

一:Flink概述

1.1 Apach Flink诞生背景

1.1.1大数据介绍

概念:大数据是指无法在一定时间内用常规软件工具对其进行获取,存储,管理和处理的数据集合
特点:
      1:海量化:数据的量巨大
      2:多样化:数据源和数据种类多样化
      3:快速化:数据产生和处理速度快
      4:价值化:单个数据价值低,整体价值高

大数据特点.png

1.1.2大数据计算架构发展历史

大数据架构发展历史.png

1.1.3为什么需要流式计算

大数据实时性所带来的价值更大,也因为大数据实时性的需求,导致大数据计算架构的模式需要变化。数据处理由之前的批式计算变为流式计算

大数据架构模式的对比.png

1.2 Apache Flink的优点

1.2.1流式计算引擎对比

流式计算框架对比.png

1.2.2 Flink概念

Apache Flink 是一个框架分布式处理引擎,用于在无边界有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。

1.3 Flink开源生态

Flink生态.png

二:Flink整体架构

2.1 Flink分层架构

  1. SDK层:主要有三类:SQL/Table、DataStream、PythonFlink;
  2. 执行引擎层:提供统一DAG描述数据处理的Pipline,将其转化为DAG,之后调度层将DAG转化为分布式环境下的Task,通过Shuffle传输数据
  3. 状态存储层:负责存储算子状态信息
  4. 资源调度层:Flink支持部署在多种环境

2.2 Flink整体架构

Flink集群包括俩个核心组件

  1. JobManager(JM)负责整个任务的调度协调工作
  2. TaskManager(TM)负责执行一个DataFlow Graph的各个Task及DataStreams的buffer和数据交换

2.3 Flink怎样做到流批一体

  1. 批式计算是流式计算的特例,(有界数据集)批数据是一种特殊的数据流,因此可以用一套可拓展的引擎架构解决
  2. Flink可以将无边界数据流按时间分为有边界的数据流,因此在Flink在API到底层处理的机制是一致的 批流一体.png Flink从5个模块实现流批一体
  • SQL层
  • DataStream API层统一,流和批都可以用它来开发
  • Scheduler层架构,支持流批的场景,主要负责将作业的DAG转化成在分布式环境执行的Task
  • Faillover Recovery层架构统一,支持流批场景
  • Shuffle Service层架构统一,流批场景选择不同的Shuffle Service,主要用来连接上下流数据的交互
  • shffle有俩种不同实现
  1. 基于文件的Push Based Shuffle,如spark,MR,优点是有较高的容错性,适合较大规模的批处理作业
  2. 基于Pipeline 的Push Based Shuffle,如Flink,Storm,Presto,特点是低延迟和高性能,由于shuff为保存如果是batch任务,需要重跑恢复

三:Flink架构优化

3.1流/批/OLAP场景概述

三种业务场景的特点

大数据业务场景特点.png 三种业务场景的挑战

大数据业务场景挑战.png

3.2 三种业务场景为什么可以用一套引擎解决

1:批式计算是流式计算的特例 2:OLAP计算是一种特殊的批式计算,但对并发和实时性要求更高

大数据三种业务.png