1、Apache Flink集群的核心架构:
1、client(作业客户端):提交任务的地方叫做客户端
2、JobManager(作业管理器):作用是用于管理集群中任务
3、TaskManager(任务管理器):负责执行Task的任务
2、Apache Flink的架构:
1、JobManager:
1、主要的作用是负责任务的调度,资源的分配以及将Task任务发送到TaskManager上去执行,会收集TaskManager的Heartbeat和统计信息
2、Scheduler:负责的是资源的调度
3、Checkpoint Coordinator:因为Flink中会做checkpoint,所以Checkpoint Coordinator的主要的工作就是负责定期做checkpoint。
2、TaskManager:
1、Task Solt(任务槽):slot是flink中从资源层面进行调度的单位,是用来执行Task任务的。
2、Memory & I/O Manager :是用于管理内存数据
3、Network Manager:负责管理网络连接的。在flink中,多个TaskManager之间也是有连接的,数据会以Data Streams的形式(数据流形式)将Flink中的上游的数据传输到下游。
4、Actor System:负责远程调用的,是负责与JobManager之间进行通信的一个接口,工具,flink中不同的角色之间都是通过Actor来通信,程序拿到Client之后会通过Akka客户端来通信
Flink的主要的调度的流程:
1、首先在client端,编写一段Program Code,然后在本地client端,构建出来一个Daraflow graph图,客户端就会将构建好的Daraflow graph(数据流图)图以dataflow的形式提交到JobManager上面
2、此时JobManager端接收到客户端传输过来的Daraflow graph图,然会就会根据有没有shuffle,将图进行切分,转化成一个一个的Task
3、JobManager会不断接收TaskManager的心跳消息,从而可以获取到有效的TaskManager
4、然后将切分好的Task分发到TaskManager上面去执行。