Flink内存配置和优化
在 Apache Flink 1.18 的 Standalone 集群中,内存设置是一个关键配置,它直接影响集群的性能和稳定性。
Flink 的内存配置主要包括 JobManager 和 TaskManager 的内存分配。
以下是如何在 Standalone 模式下配置内存的详细说明。
- 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 开销内存(用于线程栈、元数据等)。
- 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:设置网络内存大小(用于网络数据传输)。