Flink的JobManager启动(源码分析)
都知道Flink中的角色分为Jobmanager,TaskManger
在启动脚本里面已经找到了jobmanager的启动类org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint(local模式更简单直接在Driver端的env.exection()直接启动了,有兴趣可以研究一下)
来看一下StandaloneSessionClusterEntrypoint启动类的一些重要的方法
在main方法中会调用抽象类 ClusterEntrypoint.java的
在这里启动了集群
在这个方法runCluster()中比较重要
其中1处初始化了一些ClusterEntrypoint.java中的一些服务像什么HA,blob,heartbeat,metricRegistry这些
还是主要看一下2处create()方法中
其中包括了一些创建以及启动ResourceManager(有用于请求solt的RPC,初始化所有solt到resourceManager的soltManager的RPC(这个会在jobmanager接收到jobGraph后调用),TM心跳等),启动web服务
来看一下ResourceManager的初始化
1处创建的services里面会包含一个soltManager但是里面并没有solt,solt并没有初始化
主要看下2处,创建了一个resourceManager对象这个抽象类实现了接口
这个接口下的几个重要的RPC方法具体实现
这里可以看到是具体向resourceManager请求solt的RPC,另外一个
这个RPC会发送信息到resourceManager包括像taskManagaer有多少可分配的solt,哪些已分配的solt,solt的状态等
然后在create()方法中就将这个resourceManager的PRC服务启动起来了
起来以后
主要看一下这里
创建了一个Dispatcher调度对象
看下Dispatcher是用来干嘛的(StandaloneDispatcher都是调用了父类的初始化方法super()创建一个Dispatcher.java对象)
来看一下Dispatcher实现了什么接口(ResourceManager同理)
看一下实现的这个接口,当然还有一些其他的
具体实现
看到这里就应该很熟悉了
他实现了submitJob()接口用于启动一个RPC,接受参数可以看到接受到一个JobGraph,这就意味着这和job任务启动有关,后面随缘更新到job启动Graph转换会提到
回到前面的Dispatcher.start()将传入的rpcService启动起来了,等待接受来自Driver端提交上来的JobGraph差不多启动完成了
这里jobmanager其实还不完整,负责一些服务没有起来,要等到Driver端的Jobgraph提交以后才会起来,像Coordinator后面随缘到job提交会详细的说一下
最新文章
- [LeetCode] Missing Ranges 缺失区间
- iOS进阶之多线程
- 使用 Portable Class Library(可移植类库)开发 Universal Windows App
- Spark(一): 基本架构及原理
- HDU 5396 Expression(DP+组合数)(详解)
- Minix
- 库函数atoi()的实现
- Java经典案例之-判断质数(素数)
- 【WPF】DispatcherFrame 是个啥玩意儿
- Fatal error in launcher:Unable to create process using '";'
- c#调用com组件,程序 发生意外<;hr=0x80020009>;
- Codeforces 1064D/1063B Labyrinth
- DeepLearning.ai-Week2-Keras tutorial-the Happy House
- 微信小程序使用阿里图标-iconfont
- native.js 判断是否安装某app
- 【转】java平台的编码问题 getByte()所用编码
- Ubuntu 安装Docker
- Leetcode 35
- 解决eclipse为什么不能查看源码
- 网易客户端授权密码,errormsg=&#39;authentication failed (method LOGIN)&#39; exitcode=EX_NOPERM