流/批/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和数据交换。