这是我参与「第四届青训营 」笔记创作活动的第3天
一:Flink概述
1.1 Apach Flink诞生背景
1.1.1大数据介绍
概念:大数据是指无法在一定时间内用常规软件工具对其进行获取,存储,管理和处理的数据集合
特点:
1:海量化:数据的量巨大
2:多样化:数据源和数据种类多样化
3:快速化:数据产生和处理速度快
4:价值化:单个数据价值低,整体价值高
1.1.2大数据计算架构发展历史
1.1.3为什么需要流式计算
大数据实时性所带来的价值更大,也因为大数据实时性的需求,导致大数据计算架构的模式需要变化。数据处理由之前的批式计算变为流式计算
1.2 Apache Flink的优点
1.2.1流式计算引擎对比
1.2.2 Flink概念
Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。
1.3 Flink开源生态
二:Flink整体架构
2.1 Flink分层架构
- SDK层:主要有三类:SQL/Table、DataStream、PythonFlink;
- 执行引擎层:提供统一DAG描述数据处理的Pipline,将其转化为DAG,之后调度层将DAG转化为分布式环境下的Task,通过Shuffle传输数据
- 状态存储层:负责存储算子状态信息
- 资源调度层:Flink支持部署在多种环境
2.2 Flink整体架构
Flink集群包括俩个核心组件
- JobManager(JM)负责整个任务的调度协调工作
- TaskManager(TM)负责执行一个DataFlow Graph的各个Task及DataStreams的buffer和数据交换
2.3 Flink怎样做到流批一体
- 批式计算是流式计算的特例,(有界数据集)批数据是一种特殊的数据流,因此可以用一套可拓展的引擎架构解决
- Flink可以将无边界数据流按时间分为有边界的数据流,因此在Flink在API到底层处理的机制是一致的
Flink从5个模块实现流批一体
- SQL层
- DataStream API层统一,流和批都可以用它来开发
- Scheduler层架构,支持流批的场景,主要负责将作业的DAG转化成在分布式环境执行的Task
- Faillover Recovery层架构统一,支持流批场景
- Shuffle Service层架构统一,流批场景选择不同的Shuffle Service,主要用来连接上下流数据的交互
- shffle有俩种不同实现
- 基于文件的Push Based Shuffle,如spark,MR,优点是有较高的容错性,适合较大规模的批处理作业
- 基于Pipeline 的Push Based Shuffle,如Flink,Storm,Presto,特点是低延迟和高性能,由于shuff为保存如果是batch任务,需要重跑恢复
三:Flink架构优化
3.1流/批/OLAP场景概述
三种业务场景的特点
三种业务场景的挑战
3.2 三种业务场景为什么可以用一套引擎解决
1:批式计算是流式计算的特例 2:OLAP计算是一种特殊的批式计算,但对并发和实时性要求更高