文章目录
网络内存主要负责Taskmanager之间的网络数据传输的内存,托管内存主要负责Flink的状态计算,比如window等操作。
一、 网络内存与托管内存
1. 网络内存
网络内存:主要用于 任务间(不同的Taskmanager之间)的数据交换,特别是在 shuffle、连接(join) 和 聚合(aggregation) 等操作中。
数据进行网络传输时,需要用到网络内存进行缓冲。网络内存的大小决定了数据传输过程中可缓冲的数据量。如果网络内存不足,数据可能会被写入磁盘,影响性能。
1.1. 网络内存的主要作用
-
缓冲任务间数据
Flink 在任务执行过程中需要频繁地进行数据交换,例如 Shuffle 操作、窗口操作等。网络内存提供了缓冲区来暂时存储数据,等待数据传输到下游任务。在没有足够的网络内存时,数据可能会被迫写入磁盘,导致性能下降。 -
支持数据 Shuffle
Shuffle 操作是 Flink 中的一项核心操作,常见于流处理中的 repartition、join 或 group-by 等场景。数据通过网络从一个任务节点传输到另一个任务节点。在这个过程中,网络内存负责存储这些中间结果,避免了数据直接写入磁盘&#