TaskManager中最细粒度的资源是Task slot,代表了一个固定大小的资源子集,每个TaskManager会将其所占有的资源平分给它的slot。
通过调整 task slot 的数量,用户可以定义task之间是如何相互隔离的。每个 TaskManager 有一个slot,也就意味着每个task运行在独立的 JVM 中。每个 TaskManager 有多个slot的话,也就是说多个task运行在同一个JVM中。
而在同一个JVM进程中的task,可以共享TCP连接(基于多路复用)和心跳消息,可以减少数据的网络传输,也能共享一些数据结构,一定程度上减少了每个task的消耗。 每个slot可以接受单个task,也可以接受多个连续task组成的pipeline,如下图所示,FlatMap函数占用一个taskslot,而key Agg函数和sink函数共用一个taskslot:
Flink计算资源的调度是如何实现的?
最新推荐文章于 2023-06-18 18:13:23 发布
Flink中的TaskManager将资源划分为TaskSlots,每个slot代表一定量的资源。用户可通过调整slot数量定义任务间的隔离程度。单个slot对应独立JVM,多个slot可在同一JVM内运行,实现资源分享,如TCP连接和心跳消息,减少网络传输并共享数据结构,降低task消耗。例如,FlatMap和keyAgg、sink可以分别或共享slot执行。
摘要由CSDN通过智能技术生成