更新时间:2022-12-14 GMT+08:00

JobManager & TaskManager

配置场景

JobManager和TaskManager是Flink的主要组件,针对各种安全场景和性能场景,可以在客户端侧配置相关参数。

配置描述

主要配置项包括通信端口,内存管理,连接重试等。

表1 参数说明

参数

描述

默认值

是否必选配置

taskmanager.rpc.port

TaskManager的IPC端口范围。

默认值为32326-32390。

client.rpc.port

Flink client端Akka system监听端口。

默认值为32651-32720。

taskmanager.data.port

TaskManager数据交换端口范围。

默认值为32391-32455。

taskmanager.data.ssl.enabled

TaskManager之间数据传输是否使用SSL加密,仅在全局开关security.ssl开启时有效。

false

jobmanager.heap.size

JobManager堆内存大小,yarn-session模式下只能使用-jm参数传递,yarn-cluster模式下只能使用-yjm参数传递,如果小于YARN配置文件中yarn.scheduler.minimum-allocation-mb大小,则使用YARN配置中的值。单位:B/KB/MB/GB/TB。

1024mb

taskmanager.heap.size

TaskManager堆内存大小,yarn-session模式下只能使用-tm参数传递,yarn-cluster模式下只能使用-ytm参数传递,如果小于YARN配置文件中yarn.scheduler.minimum-allocation-mb大小,则使用YARN配置中的值。单位:B/KB/MB/GB/TB。

1024mb

taskmanager.numberOfTaskSlots

TaskManager占用的slot数,一般配置成节点的核数,yarn-session模式下只能使用-s参数传递,yarn-cluster模式下只能使用-ys参数传递。

1

parallelism.default

默认并行度,用于未指定并行度的作业。

1

taskmanager.network.numberOfBuffers

TaskManager网络传输缓冲栈数量,如果作业运行中出错提示系统中可用缓冲不足,可以增加这个配置项的值。

2048

taskmanager.memory.fraction

TaskManager在JVM堆内存中保留空间的比例,此内存用于排序,哈希表和中间状态的缓存。

0.7

taskmanager.memory.off-heap

TaskManager是否使用堆外内存,此内存用于排序,哈希表和中间状态的缓存。建议对于大内存,开启此配置提高内存操作的效率。

false

taskmanager.memory.segment-size

内存管理器和网络堆栈使用的内存缓冲区大小。单位:bytes。

32768

taskmanager.memory.preallocate

TaskManager是否在启动时分配保留内存空间。当开启堆外内存时,建议开启此配置项。

false

taskmanager.debug.memory.startLogThread

调试Flink内存和GC相关问题时可开启,TaskManager会定时采集内存和GC的统计信息,包括当前堆内,堆外,内存池的使用率和GC时间。

false

taskmanager.debug.memory.logIntervalMs

TaskManager定时采集内存和GC的统计信息的采集间隔。

0

taskmanager.maxRegistrationDuration

TaskManager向JobManager注册自己的最长时间,如果超过时间,TaskManager会关闭。

5 min

taskmanager.initial-registration-pause

两次连续注册的初始间隔时间。该值需带一个时间单位(ms/s/min/h/d)(比如5秒)。

500ms

说明:

时间数值和单位之间有半角字符空格。ms/s/m/h/d表示毫秒、秒、分钟、小时、天。

taskmanager.max-registration-pause

TaskManager注册失败最大重试间隔。单位:ms/s/m/h/d。

30s

taskmanager.refused-registration-pause

TaskManager注册连接被JobManager拒绝后的重试间隔。单位:ms/s/m/h/d。

10s

task.cancellation.interval

两次连续任务取消操作的间隔时间。单位:ms。

30000

classloader.resolve-order

从用户代码加载类时定义类解析策略,这意味着是首先检查用户代码jar(“child-first”)还是应用程序类路径(“parent-first”)。默认设置指示首先从用户代码jar加载类,这意味着用户代码jar可以包含和加载不同于Flink使用的(依赖)依赖项。

child-first

slot.idle.timeout

Slot Pool中空闲Slot的超时时间(以ms为单位)。

50000

slot.request.timeout

从Slot Pool请求Slot的超时(以ms为单位)。

300000

task.cancellation.timeout

取消任务超时时间(以ms为单位),超时后会触发TaskManager致命错误。设置为0,取消任务卡住则不会报错。

180000

taskmanager.network.detailed-metrics

启用网络队列长度的详细指标监控。

false

taskmanager.network.memory.buffers-per-channel

每个传出/传入通道(子分区/输入通道)使用的最大网络缓冲区数.在基于信用的流量控制模式下,这表示每个输入通道中有多少信用。它应配置至少2以获得良好的性能。1个缓冲区用于接收子分区中的飞行中数据,1个缓冲区用于并行序列化。

2

taskmanager.network.memory.floating-buffers-per-gate

每个输出/输入门(结果分区/输入门)使用的额外网络缓冲区数。在基于信用的流量控制模式中,这表示在所有输入通道之间共享多少浮动信用。浮动缓冲区基于积压(子分区中的实时输出缓冲区)反馈来分布,并且可以帮助减轻由子分区之间的不平衡数据分布引起的背压。如果节点之间的往返时间较长和/或群集中的机器数量较多,则应增加此值。

8

taskmanager.network.memory.fraction

用于网络缓冲区的JVM内存的占比。这决定了TaskManager可以同时拥有多少流数据交换通道以及通道缓冲的程度。如果作业被拒绝或者收到系统没有足够缓冲区的警告,请增加此值或“taskmanager.network.memory.min”和“taskmanager.network.memory.max”。另请注意,“taskmanager.network.memory.min”和“taskmanager.network.memory.max”可能会覆盖此占比。

0.1

taskmanager.network.memory.max

网络缓冲区的最大内存大小。该值需带一个大小单位(B/KB/MB/GB/TB)。

1 GB

taskmanager.network.memory.min

网络缓冲区的最小内存大小。该值需带一个大小单位(B/KB/MB/GB/TB)。

64 MB

taskmanager.network.request-backoff.initial

输入通道的分区请求的最小退避。

100

taskmanager.network.request-backoff.max

输入通道的分区请求的最大退避。

10000

taskmanager.registration.timeout

TaskManager注册的超时时间,在该时间内未成功注册,TaskManager将终止。该值需带一个时间单位(ms/s/min/h/d)。

5 min

resourcemanager.taskmanager-timeout

释放空闲TaskManager的超时(以ms为单位)。

30000