Flink内存配置和优化

发布于:2025-02-13 ⋅ 阅读:(145) ⋅ 点赞:(0)

在 Apache Flink 1.18 的 Standalone 集群中,内存设置是一个关键配置,它直接影响集群的性能和稳定性。
Flink 的内存配置主要包括 JobManager 和 TaskManager 的内存分配。
以下是如何在 Standalone 模式下配置内存的详细说明。

  1. JobManager 内存配置
    JobManager 是 Flink 集群的主节点,负责协调任务调度和资源管理。它的内存配置可以通过以下参数进行调整:

配置项(conf/flink-conf.yaml)

#JobManager 的总内存大小
jobmanager.memory.process.size: 3072m

# JobManager 的 JVM 堆内存大小
jobmanager.memory.heap.size: 1536m

# JobManager 的 JVM 堆外内存大小(可选)
jobmanager.memory.off-heap.size: 256m

# JobManager 的 JVM 直接内存大小(可选)
jobmanager.memory.jvm-overhead.min: 256m
jobmanager.memory.jvm-overhead.max: 1024m

JobManager 内存说明:
jobmanager.memory.process.size:设置 JobManager 的总内存大小,包括堆内存和堆外内存。

jobmanager.memory.heap.size:设置JobManager 的 JVM 堆内存大小。

jobmanager.memory.off-heap.size:设置 JobManager 的堆外内存大小(可选)。

jobmanager.memory.jvm-overhead:设置 JVM 开销内存(用于线程栈、元数据等)。

  1. TaskManager 内存配置
    TaskManager 是 Flink 集群的工作节点,负责执行具体的任务。它的内存配置更为复杂,通常需要根据任务的需求进行调整。

配置项(conf/flink-conf.yaml)

# TaskManager 的总内存大小
taskmanager.memory.process.size: 22528m

# TaskManager 的 JVM 堆内存大小
taskmanager.memory.task.heap.size: 15360m

# TaskManager 的堆外内存大小(用于网络缓冲、状态后端等)
taskmanager.memory.task.off-heap.size: 1024m

# TaskManager 的托管内存大小(用于 RocksDB 状态后端等)
taskmanager.memory.managed.size: 1024m

# TaskManager 的 JVM 开销内存
taskmanager.memory.jvm-overhead.min: 1024m
taskmanager.memory.jvm-overhead.max: 5120m

# TaskManager 的网络内存大小(用于网络数据传输)
taskmanager.memory.network.min: 64m
taskmanager.memory.network.max: 256m

TaskManager 内存说明:
taskmanager.memory.process.size:设置 TaskManager 的总内存大小。

taskmanager.memory.task.heap.size:设置 TaskManager 的 JVM 堆内存大小。

taskmanager.memory.task.off-heap.size:设置 TaskManager 的堆外内存大小(用于网络缓冲、状态后端等)。

taskmanager.memory.managed.size:设置托管内存大小(用于 RocksDB 状态后端等)。

taskmanager.memory.jvm-overhead:设置 JVM 开销内存(用于线程栈、元数据等)。

taskmanager.memory.network:设置网络内存大小(用于网络数据传输)。