經過啓動腳本已經找到了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也會起起來,這裏就不所有寫出了