JobManager & TaskManager
配置场景
JobManager和TaskManager是Flink的主要组件,针对各种安全场景和性能场景,可以在客户端侧配置相关参数。
配置描述
主要配置项包括通信端口,内存管理,连接重试等。
参数 |
描述 |
默认值 |
是否必选配置 |
---|---|---|---|
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 |
否 |