Flink-源码学习-集群启动-公共基础服务
Fink 集群启动时组件会执行 initializeServices() 方法初始化一些基础服务,比如说 JobManager 启动时会初始化一些 RPC 通信服务、高可用服务以及监控服务等。
RPC 通信服务
Flink 集群内部通信框架的最底层依赖于 Akka,定义了不同类型的消息,并且设计了通用的 RPC 通信组件,Flink 的所有提供 RPC 请求的集群组件(如 JobMaster、 TaskManager、 ResourceManager、 Dispatcher 等)都使用了这些 RPC 通信基础组件來提供对外的 RPC 接口。
引用本站文章Flink-源码学习-FlinkCore-通信服务-Flink RPC 设计JokerJobManager RPC 服务如图所示:
高可用服务
向集群组件提供高可用支持,集群中的组件都会通过 haService 创建高可用服务。
- 监控服务
集群监控指标收集
- 心跳服务
公共心跳服务,在 Flink 集群中集群组件的心跳服务是在公共心跳服务的基础之上创建。
HeartbeatServices 是心跳服务的提供者,谁需要心跳服务,通过 HeartbeatServices 去提供一个实例 HeartBeatImpl, 用来完成心跳
I/O 线程池
用于集群组件的 I/O 操作,如本地文件数据读取和输出等Blob 服务
用来管理二进制文件(例如上传 Job 的 jar 包以及其依赖包,或者 TaskManager 上传的 log 文件等
引用本站文章Flink-源码学习-FlinkCore-Blob 服务Joker存储 ExecutionGraph 的 Store 服务
创建 archivedExecutionGraphStore 服务,用于压缩并存储集群中的ExecutionGraph 默认有两种实现
MemoryArchivedExecutionGraphStore: 主要是在内存中缓存
FileArchivedExecutionGraphStore: 会持久化到文件系统,也会在内存中缓存
1
FileArchivedExecutionGraphStore archivedExecutionGraphStore = createSerializableExecutionGraphStore(...)
默认实现是基于 File 的
Flink-源码学习-集群启动-公共基础服务
向集群组件提供高可用支持,集群中的组件都会通过 haService 创建高可用服务。
集群监控指标收集
公共心跳服务,在 Flink 集群中集群组件的心跳服务是在公共心跳服务的基础之上创建。
heartbeatServices 是心跳服务的提供者,谁需要心跳服务,通过 heartbeatServices 去提供一个实例 HeartBeatImpl,用来完成心跳
用于集群组件的 I/O 操作,如本地文件数据读取和输出等
blobServer
存储集群需要的 Blob 对象数据,blobServer 中存储的数据能够被 JobManager 以及 TaskManager 访问,例如 JobGraph 中的 jar 包等数据