Flink的TaskManager啓動(源碼分析)

經過啓動腳本已經找到了TaskManager 的啓動類org.apache.flink.runtime.taskexecutor.TaskManagerRunnerapache

來看一下它的main方法中網絡

最後被start了起來異步

start實際上是將taskManager 端的RPC服務起起來了分佈式

看一下TaskManagerRunner的構造方法中3d

調用了這個startTaskManager()方法,在這個方法中又調用了netty

在這個方法中.fromConfiguration()blog

看到建立了一個networkEnevironment而且把它起了起來其中接口

由於flink的網絡是走的netty,能夠看到它會初始化netty的客戶端和服務端用於網絡通訊而且傳入了bufferPool池,這個在之後隨緣更新到 反壓 會詳細的研究內存

回到fromConfiguration()方法input

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也會起起來,這裏就不所有寫出了

相關文章
相關標籤/搜索