3.3 TaskManager执行任务

3.3.1 TaskManager的基本组件

TaskManagerFlink中资源管理的基本组件,是所有执行任务的基本容器,提供了内存管理、IO管理、通信管理等一系列功能。以下是各个模块的简要介绍:

  1. MemoryManager

    Flink并没有将所有内存管理都委托给JVM,因为JVM普遍存在存储对象密度低、大内存时GC对系统影响大等问题。因此,Flink自行抽象了一套内存管理机制,将所有对象序列化后放在自己的MemorySegment上进行管理。MemoryManager涉及内容较多,将在后续章节深入剖析。

  2. IOManager

    Flink通过IOManager管理磁盘IO的过程,提供了同步和异步两种写模式,并进一步区分了block、buffer和bulk三种读写方式。IOManager提供了两种方式枚举磁盘文件:一种是直接遍历文件夹下的所有文件,另一种是通过计数器方式按递增顺序访问每个文件。在底层,Flink将文件IO抽象为FileIOChannel,封装了底层实现。