我正在尝试在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

最佳答案

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

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

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

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

    关于java - 如何增加Flink内存大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53858283/

    10-11 23:21
    查看更多