我正在尝试在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
答案 0 :(得分:1)
该错误消息表明分拣器没有获得足够的内存页。原因是可用的托管内存不足。解决此问题的方法有多种:
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
指定)。