yangyang12138

导航

flink(一)

jobgraph
包含若干个jobvertex,每个jobvertex包含若干个operatorId,一个operatorId包含一个操作,jobvertex的输入来自jobedge,然后将结果输出到IntermediateDataSet。
heartbeat
心跳监视程序,HeartbeatTarget可以发送和接收心跳包的基类,HeartbeatManager一个用于管理HeartbeatTarget和其他心跳包目标的基类,包含若干个listener和
一系列monitor,一个monitor代表对一个心跳目标的监控。

leaderelection
主要实现jobmaster的选主逻辑,LeaderContender被选举信息,选举的主要参数,LeaderElectionService接口完成选主逻辑,主要包括StandaloneLeaderElectionService单点实现和ZooKeeperLeaderElectionServices实现

leaderretrieval
主要实现master变更功能,LeaderRetrievalListener用于响应主节点变更事件,LeaderRetrievalService接口主要完成对LeaderRetrievalListener的通知,主要包括StandaloneLeaderRetrievalService单点的实现和ZooKeeperLeaderRetrievalService实现

concurrent
主要增加了ExecutorService的实现,submit一个task后是直接调度,以及带定时的调度ScheduledExecutor

deployment
任务的一些调度信息,jobmaster调度taskmanager是的一些参数

clusterframework
主要包含了akka的启动以及一些必要的配置的加载ContainerOverlay

executiongraph
jobgraph的运行时信息,Execution一个节点的单次运行,ExecutionGraph包含运行的任务信息,要运行的任务,任务失败后的重试策略,大文件写入器blobWriter,数据分区和shuffle信息,ExecutionEdge只有一个IntermediateResultPartition作为数据的来源和ExecutionVertex目标以及inputNum。ExecutionJobVertex主要包含输入数据信息,输入数据分区信息,ExecutionVertex是executionJobVertex的一个并行任务。Execution可以deploy一个task到taskmanager。

jobmanager
主要实现jobGraph的保存,可以保存本地和zookeeper。
jobmaster
包含slotpool,用于通过rpc管理资源管理器的slot,而资源管理器中slot由jobmanger注册进去,jobmaster用于将jobgraph转换为executiongraph,并生成Execution,并且通过调度器发起调用。JobManagerRunner一个job启动时会启动此类的一个对象,然后次对象会通过选举出现一个master,master会运行jobmaster。
然后jobmaster会将自己注册到资源管理器,以后客户端的任务就是通过资源管理器找到jobmaster的

taskmanager
主要定义了运行任务的环境信息RuntimeEnvironment,Task任务用于运行的一个基本单元,根据配置信息加载出要运行的AbstractInvokable,然后执行invoke。

taskexecutor
主要包含了TaskManagerRunner,负责向资源管理器中注册slot并保持和资源管理器的心跳,和真正的分配slot,并包含若干个TaskExecutor,slot的真正持有者,它通过slotTable来管理自身的slot,TaskExecutor也是任务的实际运行者。JobLeaderService用于监听jobmaster的变化。

resourcemanager
主要定义了资源管理的ResourceManager,负责资源管理,主要管理TaskManager,TaskManager将自己封装为taskManagerRegiresion通过rpc注册到资源管理器,注册后的信息统一由slotManager管理。同时也管理jobManager,同时定义了JobLeaderIdService,此对象定义了一系列linstener,用于监听jobMaster变化。

shuffle
主要定义ShuffleDescriptor和ShuffleEnvironment。

io-disk
主要分为两部分,一个是disk部分,主要是本地资源管理,FileChannelManager创建文件并创建响应的channel,同时定义FileChannelInputView作为数据写入的入口。IOManager定义了统一的channel创建入口,可以生成的统一的writer。

io-network
定义了ResultPartion,也就是task的输出,一个ResultPartion包含若干个ResultSubpartition,ResultSubpartition有两个子类,一个将数据保存在内存里,一个是可以将数据写入文件,写入文件的实现是BoundedBlockingSubpartition,此类包含一个BoundedData接口的实现类的一个字段FileChannelBoundedData,FileChannelBoundedData则是通过在disk部分提到的文件和channel功能来完成数据的写入。另外会有一个nettyServer可以管理的这个Partion的输入输出流,输入流用于分布式时数据的写入,输出流是下一个task的输入数据。InputGate也就是一个task的输入,用于获取一个task的数据,数据以buffer的形式被传输,buffer依赖与一个channel,channel里的数据来自一个bufferpool的接口,bufferPool的一个实现就是通过netty来完成的,也就是连接刚才nettyServer启动的服务。

posted on 2021-04-13 01:20  杨杨09265  阅读(142)  评论(0编辑  收藏  举报