该错误信息表明分拣器没有获得足够的内存页。原因是可用的托管内存不足。有多种方法可以解决此问题:
1.增加可用内存TaskManager通过taskmanager.heap.size
2.增加从采取的管理存储器的分数taskmanager.heap.size通过taskmanager.memory.fraction(每默认为0.7)
3.通过减小页面大小 taskmanager.memory.segment-size
减少插槽的数量,TaskManager因为每个TM降低的并行度将减少TM上的内存使用者数量(操作员会获得更大的可用内存份额)
4.如果仅运行批处理加载,则还应该激活taskmanager.memory.preallocate: true,这将在启动时启用内存分配。这通常更快,因为它可以减少垃圾收集压力。
另一个taskmanager.memory.size与之有关的注释:此值始终必须小于或等于,taskmanager.heap.size因为它指定了整个堆空间中将有多少内存用于托管内存。如果未指定此参数,则Flink将占用托管内存的可用堆内存的一小部分(通过指定taskmanager.memory.fraction)。