- 启动TaskManager后,调用ResourceManagerGateway.registerTaskExecutor()方法向ResourceManager中注册TaskManager连接信息 。
- 创建TaskManager和ResourceManager之间的RPC连接,TaskManager调用Resource-ManagerGateway.sendSlotReport()方法向ResourceManager发送SlotReport信息,接着ResourceManager调用SlotManager.registerTaskManager()方法,将TaskManager的资源信息写入SlotManager 。
- 在SlotManager中根据SlotReport中的Slot信息创建TaskManagerSlot,并注册到SlotManager的HashMap<SlotID, TaskManagerSlot> slots集合中 。
- SlotManager含有HashMap<SlotID, TaskManagerSlot> slots和LinkedHashMap<SlotID, TaskManagerSlot> freeSlots两个Slot集合 。前者维护所有注册到SlotManager中的Slot计算资源,后者存储当前SlotManager中可用的Slot资源 。
- JobManager调用ResourceManagerGateway.requestSlot()方法向ResourceManager发起Slot计算资源申请 。
- ResourceManager内部会调用SlotManager.registerSlotRequest()方法,向SlotManager申请作业需要的Slot计算资源 。
- SlotManager中维护了HashMap<AllocationID, PendingSlotRequest> pendingSlotRequests集合,将所有的PendingSlotRequest存储在该集合中,并根据SlotRequest的Resource-Profile匹配合适的Slot计算资源,然后对Slot进行分配 。
- 当SlotRequest需要的Slot计算资源分配完毕后,将已经分配的SlotID信息写入HashMap<AllocationID, SlotID> fulfilledSlotRequests集合 。
以上就是在ResourceManager中注册和分配Slot计算资源的全部过程,本文篇幅有限,Slot注册和分配过程中涉及的核心代码的详细介绍,请见《Flink设计与实现:核心原理与源码解析》第3.3.3节 。
关于作者:张利兵,资深大数据专家和架构师,现任第四范式AI数据平台架构师,曾就职于明略数据 。Apache Flink的贡献者,对Flink有非常深入的研究 。长期从事大数据架构落地以及机器学习平台与数据平台研发架构工作,在Hadoop、Spark、机器学习等方面积累了丰富的经验 。先后参与和主导了银行、证券、地铁等领域的大数据平台的架构设计与实现 。《Flink原理、实战与性能优化》作者,极客时间《Flink原理与实战》专栏作者 。本书摘编自《Flink设计与实现:核心原理与源码解析》,经出版方授权发布 。
推荐阅读
- 青砖茶如何保存,青砖茶多少钱
- 水中漫步夏日最爱的减肥运动
- 白领如何吃出窈窕身材 减肥最忌讳的5大零食
- 如何正确减肥? 小心夏季减肥的12个陷阱
- 海南哪里产桔子,麦冬哪里产的最好
- 蔬菜汤瘦身法减肥不反弹
- 香料里面的千里香是孜然吗,莳萝小茴香孜然是种东西吗
- 天山雪莲花的功效与作用,天山雪莲的功效与作用及食用方法
- 夏天晚餐吃什么减肥 边吃边瘦的3款减肥食谱
- 玫瑰菊花茶的禁忌,玫瑰茄泡水喝的禁忌