Flink的TaskManager启动(源码分析)
通过启动脚本已经找到了TaskManager 的启动类org.apache.flink.runtime.taskexecutor.TaskManagerRunner
来看一下它的main方法中


最后被start了起来

starr其实是将taskManager 端的rpc服务起起来了
看一下TaskManagerRunner的构造方法中

调用了这个startTaskManager()方法,在这个方法中又调用了

在这个方法中.fromConfiguration()

看到创建了一个networkEnevironment并且把它起了起来其中


因为flink的网络是走的netty,可以看到它会初始化netty的客户端和服务端用于网络通信并且传入了bufferPool池,这个在以后随缘更新到 反压 会详细的研究
回到fromConfiguration()方法
network.start以后它又

创建了内存管理类memoryManager和io管理类IOmanager, 这里以后随缘更新讲到内存和IO单独说
需要注意的是这里的Async异步IO,其实目前flink只有这一种异步的IO管理器

创建了定时器服务,定时器留到窗口在讲
回到startTaskManager()方法的最后

这个类TaskExecutor就是前面说的包含了RPC接口的类主要是实现了接口

里面包含了一些重要的方法的实现,来看一下有哪些重要的方法

可以看到这是请求slot的

这是启动Task的其中这个tdd就包含了一些任务的信息上下游inputGate,resultPartition等 具体job启动的时候详细讲一下

这个方法也是比较重要的,可以看到这是一个触发checkPoint的RPC,这里可能会有疑问为什么Chenkpoint这个RPC会在TaskManager端
可以先简单的看下具体实现

看到这里大致就知道了,其实这个RPC是留给Coordinator调用的,会触发生成Barrier的逻辑(也就是经常说的,coordinator会在source插入barriers用于分布式快照对齐)随缘更新到checkpoint的时候在细说吧
这里TaskManager就差不多启动起来了,当然TaskManager还有很多服务像什么HA,Heartbeat,BlobCache也会起起来,这里就不全部写出了
Flink的TaskManager启动(源码分析)的更多相关文章
- Flink的JobManager启动(源码分析)
都知道Flink中的角色分为Jobmanager,TaskManger 在启动脚本里面已经找到了jobmanager的启动类org.apache.flink.runtime.entrypoint.St ...
- Flink的Job启动TaskManager端(源码分析)
前面说到了 Flink的JobManager启动(源码分析) 启动了TaskManager 然后 Flink的Job启动JobManager端(源码分析) 说到JobManager会将转化得到 ...
- RocketMQ中Broker的启动源码分析(一)
在RocketMQ中,使用BrokerStartup作为启动类,相较于NameServer的启动,Broker作为RocketMQ的核心可复杂得多 [RocketMQ中NameServer的启动源码分 ...
- RocketMQ中Broker的启动源码分析(二)
接着上一篇博客 [RocketMQ中Broker的启动源码分析(一)] 在完成准备工作后,调用start方法: public static BrokerController start(Broker ...
- RocketMQ中PullConsumer的启动源码分析
通过DefaultMQPullConsumer作为默认实现,这里的启动过程和Producer很相似,但相比复杂一些 [RocketMQ中Producer的启动源码分析] DefaultMQPullCo ...
- Django如何启动源码分析
Django如何启动源码分析 启动 我们启动Django是通过python manage.py runsever的命令 解决 这句话就是执行manage.py文件,并在命令行发送一个runsever字 ...
- Quartz源码——scheduler.start()启动源码分析(二)
scheduler.start()是Quartz的启动方式!下面进行分析,方便自己查看! 我都是分析的jobStore 方式为jdbc的SimpleTrigger!RAM的方式类似分析方式! Quar ...
- Netty源码分析 (三)----- 服务端启动源码分析
本文接着前两篇文章来讲,主要讲服务端类剩下的部分,我们还是来先看看服务端的代码 /** * Created by chenhao on 2019/9/4. */ public final class ...
- Seata AT 模式启动源码分析
从上一篇文章「分布式事务中间件Seata的设计原理」讲了下 Seata AT 模式的一些设计原理,从中也知道了 AT 模式的三个角色(RM.TM.TC),接下来我会更新 Seata 源码分析系列文章. ...
随机推荐
- 个人永久性免费-Excel催化剂功能第60波-数据有效性验证增强版,补足Excel天生不足
Excel在数据处理.数据分析上已经是公认的最好用的软件之一,其易用性和强大性也吸引无数的初中高级用户每天都在使用Excel.但这些优点的同时,也带出了一些问题,正因为其不同于一般的专业软件,需要专业 ...
- python课堂整理10---局部变量与全局变量
一.局部变量与全局变量 1. 没有缩进,顶头写的变量为全局变量 2. 在子程序里定义的变量为局部变量 3. 只有函数能把变量私有化 name = 'lhf' #全局变量 def change_name ...
- java一个类 继承HttpServlet 和实现Servlet区别
java一个类 继承HttpServlet 和实现Servlet区别 servlet 是一个接口,如果实现这个接口,那么就必须实现接口里面定义的所有方法 而HttpServlet实现了servlet接 ...
- 前端jQuery学习(一)
把最近学习的前端框架jQuery整理一下.你可能听说过jQuery,因为他是JavaScript世界中使用最广泛的一个库. 江湖传言,全世界大约有80~90%的网站直接或间接地使用了jQuery.鉴于 ...
- centos7下yum方式安装MySQL5.7
前言: MySQL作为一款免费.开源数据库产品,已经问世就饱受关注,很多中小企业甚至是大企业都钟爱MySQL,随着大数据的不断发展,我们接触的信息量也越来越多,虽然NoSQL是大数据的宠儿,但MySQ ...
- 【iOS】Xcode unexpected code bundles
如图所示: ……
- Mysql执行过程总结
总分三个阶段:Sql的解析,执行和结果获取阶段. 如下图,展开相熟.
- 关于STM32GPIO按键上下拉配置的认识
说真的,后知后觉这个问题还是有点值得研究的,一开始学习我用的板子在按键模块电路中GPIO输入脚是有外部上下拉电阻的,如下图所示:当KEY1接V3.3,在其后为它接一个下拉电阻,可以保证按下按键输入高电 ...
- JDK的命令行工具系列 (一) jps、jstat
概述 在我们进行故障定位和性能分析时, 可以使用Java Dump(也叫Dump文件)来帮助排查问题, 它记录了JVM运行期间的内存占用和线程执行等情况.其中Heap Dump文件是二进制格式, 它保 ...
- mysql新增一列为主键
mysql新增一列为主键 由于一次疏忽在建表的时候忘记加上主键了, 但是目前来说表里面又有数据了,所以不能删表重建,所以需要新加一列主键 然后我就新加一列,并且为auto_increment,然后设置 ...