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

71 阅读1分钟

流/批/OLAP 一体的Flink引擎

01.Flink概述

1.1 Apache Flink 的诞生背景

·大数据的意义:指无法在一定时间内用常规软件工具对其进行获取、存储、管理和处理的数据集合。

·Hadoop。分布式。Map-Reduce。离线计算

·Spark。批处理。流处理。SQL高阶API。内存迭代计算

·Flink。流计算。实时、更快。流批一体。Batch SQL/Streaming

·批式计算:

离线计算,非实时

静态数据集

小时/天等周期性计算

·流式计算:

实时计算,快速,低延迟

无限流、动态、无边界

流批一体

2. Flink 整体架构

2.1 Flink 分层架构

1.SDK层:Flink的SDK目前分三类,SQL/Table,DataStream,Python

2.执行引擎层(Runtime层):执行引擎层提供了统一的DAG,用来描述数据处理的Pipeline,不管是流还是批,都会转化为DAG图,调度层再把DAG转化成分布式环境下的Task,Task之间通过Shuffle传输数据。

3.状态存储层:负责存储算子的状态信息

4,资源调度层:目前Flink可以支持部署在多种环境。

2.2 Flink 整体架构

一个Flink集群,主要包含以下两个核心组件:

1.JobManager(JM):负责整个任务的协调工作,包括:调度task、触发协调Task做Checkpoint、协调容错恢复等。

职责:

·Dispatcher:接收作业,拉起JM来执行作业,并且在JM挂掉之后恢复作业。

·JM:管理一个Job的整个生命周期,会向ResourceManager申请slot,并将task调度到对应TM上。

·ResourceManager:负责slot资源的管理和调度,Task manager拉起之后会向RM注册。 2.TaskManager(TM): 负责执行一个DataFlow Graph的各个task以及data streams的buffer和数据交换。