Flink的TaskManager啟動(源碼分析)


通過啟動腳本已經找到了TaskManager 的啟動類org.apache.flink.runtime.taskexecutor.TaskManagerRunner

來看一下它的main方法中

最后被start了起來

start其實是將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也會起起來,這里就不全部寫出了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM