我正在尝试在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.size
从taskmanager.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/