欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flink的TaskManager启动(源码分析)

程序员文章站 2022-05-10 09:37:21
通过启动脚本已经找到了TaskManager 的启动类org.apache.flink.runtime.taskexecutor.TaskManagerRunner 来看一下它的main方法中 最后被start了起来 start其实是将taskManager 端的RPC服务起起来了 看一下TaskM ......

通过启动脚本已经找到了taskmanager 的启动类org.apache.flink.runtime.taskexecutor.taskmanagerrunner

来看一下它的main方法中

Flink的TaskManager启动(源码分析)

Flink的TaskManager启动(源码分析)

最后被start了起来

Flink的TaskManager启动(源码分析)

start其实是将taskmanager 端的rpc服务起起来了

看一下taskmanagerrunner的构造方法中

Flink的TaskManager启动(源码分析)

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

Flink的TaskManager启动(源码分析)

在这个方法中.fromconfiguration()

Flink的TaskManager启动(源码分析)

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

Flink的TaskManager启动(源码分析)

Flink的TaskManager启动(源码分析)

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

回到fromconfiguration()方法

network.start以后它又

Flink的TaskManager启动(源码分析)

创建了内存管理类memorymanager和io管理类iomanager, 这里以后随缘更新讲到内存和io单独说

需要注意的是这里的async异步io,其实目前flink只有这一种异步的io管理器

Flink的TaskManager启动(源码分析)

创建了定时器服务,定时器留到窗口在讲

回到starttaskmanager()方法的最后

Flink的TaskManager启动(源码分析)

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

 Flink的TaskManager启动(源码分析)

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

Flink的TaskManager启动(源码分析)

可以看到这是请求slot的

Flink的TaskManager启动(源码分析)

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

Flink的TaskManager启动(源码分析)

这个方法也是比较重要的,可以看到这是一个触发checkpoint的rpc,这里可能会有疑问为什么chenkpoint这个rpc会在taskmanager端

可以先简单的看下具体实现

Flink的TaskManager启动(源码分析)

看到这里大致就知道了,其实这个rpc是留给coordinator调用的,会触发生成barrier的逻辑(也就是经常说的,coordinator会在source插入barriers用于分布式快照对齐)随缘更新到checkpoint的时候在细说吧

这里taskmanager就差不多启动起来了,当然taskmanager还有很多服务像什么ha,heartbeat,blobcache也会起起来,这里就不全部写出了