如何增加Flink内存大小

时间:2018-12-19 19:51:36

标签: java memory apache-flink

我正在尝试在Flink任务管理器上运行作业,并且遇到此异常:

Initializing the input processing failed: Too little memory provided to sorter to perform task. Required are at least 12 pages. Current page size is 32768 bytes.

我已经通过flink-conf.yml在任务和作业管理器中设置了堆大小,我还应该更改其他内容以增加内存吗?

taskmanager.heap.size: 4096m
taskmanager.memory.size: 4096m
jobmanager.heap.size: 2048m

1 个答案:

答案 0 :(得分:1)

该错误消息表明分拣器没有获得足够的内存页。原因是可用的托管内存不足。解决此问题的方法有多种:

  1. 通过TaskManager增加taskmanager.heap.size的可用内存
  2. 增加通过taskmanager.heap.sizetaskmanager.memory.fraction中获取的托管内存的比例(默认为0.7)
  3. 通过taskmanager.memory.segment-size减小页面大小
  4. 减少TaskManager上的插槽数,因为降低每个TM的并行性将减少TM上的内存使用方数量(操作员会获得更多可用内存份额)

如果仅运行批处理加载,则还应该激活taskmanager.memory.preallocate: true,这将在启动时启用内存分配。通常这样更快,因为它可以减少垃圾收集压力。

关于taskmanager.memory.size的另一条评论:此值始终必须小于或等于taskmanager.heap.size,因为它指定了整个堆空间中将有多少内存用于托管内存。如果未指定此参数,则Flink将占用托管内存的可用堆内存的一小部分(通过taskmanager.memory.fraction指定)。