4、Flink 集群部署(Deployment & Operations)- Configuration(Flink配置项)

对于单节点设置,Flink已经准备好开箱即用,不需要更改默认配置即可启动。本文针对于Flink集群和与其他组件的配置项。

在conf/flink-conf.yaml配置里可以通过修改env.java.home来更改jdk。

此页面列出了设置性能良好(分布式)安装通常需要的最常见选项。

所有配置项都在conf/flink-conf.yaml这个配置温江当中。

系统和运行脚本在启动时解析配置。对配置文件的更改需要重新启动Flink JobManager和Taskmanager。

任务管理器的配置文件可以不同,Flink不假设集群中有统一的机器。

注:如果以下的某些配置的值不知道怎么写的话,Flink安装包的conf文件里就有样例,或者以下没有你需要的配置项说明的话,请自行查阅官方文档

通用配置

名称默认值描述

jobmanager.heap.size

"1024m"JobManager的JVM堆大小。

taskmanager.heap.size

"1024m"TaskManagers的JVM堆大小,它们是系统的并行工作者。在yarn设置中,该值自动配置为TaskManager的yarn容器的大小,减去一定的公差值。

taskmanager.heap.size

1作业的默认并行性

taskmanager.numberOfTaskSlots

1单个TaskManager可以运行的并行操作符或用户函数实例的数量。如果该值大于1,则单个TaskManager接受一个函数或操作符的多个实例。这样,TaskManager就可以利用多个CPU内核,但同时,可用内存被分配给不同的操作符或函数实例。这个值通常与TaskManager机器的物理CPU内核的数量成正比(例如,等于内核的数量,或内核数量的一半)。

state.backend

(none)

支持'jobmanager', 'filesystem', 'rocksdb'或其他。

用于存储和检查点状态的状态后端。

state.checkpoints.dir

(none)用于在Flink支持的文件系统中存储检查点的数据文件和元数据的默认目录。

state.savepoints.dir

(none)保存点的默认目录。用于将保存点写入文件系统的状态后端

high-availability

"NONE"定义用于集群执行的高可用性模式。要启用高可用性,请将此模式设置为“ZOOKEEPER”或指定工厂类的FQN。

high-availability.storageDir

(none)文件系统路径(URI),其中Flink在高可用性设置中保存元数据。

security.ssl.internal.enabled

false为内部网络通信打开SSL。可选的是,特定组件可以通过它们自己的设置(rpc、数据传输、REST等)覆盖此功能。

security.ssl.rest.enabled

false为通过REST端点进行外部通信打开SSL。

HDFS

注意:不推荐使用这些键,建议使用环境变量HADOOP_CONF_DIR配置Hadoop路径。

这些参数配置Flink使用的默认HDFS的配置 项。不指定HDFS配置的设置必须指定到HDFS文件的完整路径(HDFS://address:port/path/to/files),文件也将使用默认的HDFS参数(块大小、复制因子)编写。

  • fs.hdfs.hadoopconf:Hadoop文件系统(HDFS)配置目录的绝对路径(可选值)。指定此值允许程序使用短URI引用HDFS文件(HDFS:///path/to/files,而不需要在文件URI中包含NameNode的地址和端口)。没有此选项,可以访问HDFS文件,但需要完全限定的uri,如HDFS://address:port/path/to/files。该选项还会导致文件编写器获取HDFS的块大小和复制因子的默认值。Flink将寻找“core-site”。xml”和“hdfs-site。指定目录中的xml文件
  • fs.hdfs.hdfsdefault:Hadoop自己的配置文件-hdfs-default.xml的绝对路径,默认为null
  • fs.hdfs.hdfssite:Hadoop的配置文件-hdfs-site.xml的绝对路径,默认为null

Core

名称默认值描述

classloader.parent-first-patterns.additional

(none)一个(分号分隔的)模式列表,它指定应该首先通过父类加载器解析哪些类。是一个简单的前缀,它根据完全限定的类名进行检查。被附加到“classloader.parent-first-patterns.default”中。

classloader.parent-first-patterns.default

"java.;

scala.;

org.apache.flink.;

com.esotericsoftware.kryo;

org.apache.hadoop.;

javax.annotation.;

org.slf4j;

org.apache.log4j;

org.apache.logging;

org.apache.commons.logging;

ch.qos.logback"

通常不应修改此设置。要添加pattern,建议使用“classloader.parent-first-patterns”。

classloader.resolve-order

"child-first"定义从用户代码加载类时的类解析策略,是否首先检查用户代码jar(“child-first”)或应用程序类路径(“parent-first”)。用户代码jar可以包含和加载不同于Flink使用的依赖项

io.tmp.dirs

'LOCAL_DIRS' on Yarn.

'_FLINK_TMP_DIR' on Mesos. System.getProperty("java.io.tmpdir") in standalone.

临时文件目录,分隔符:,|或java.io.File.pathSeparator

parallelism.default

1默认并发

JobManager

名称默认值说明

jobmanager.archive.fs.dir

(none)存储JobManager已完成的jobs

jobmanager.execution.attempts-history-size

16执行(连接)数量的最大值

jobmanager.heap.size

1024mJobManager的JVM堆内存

jobmanager.resourcemanager.reconnect-interval

2000如果与ResourceManager的连接已断开,此选项指定触发资源管理器重连接的间隔。此选项仅供内部使用。

jobmanager.rpc.address

(none)定义要连接到的网络地址的配置参数,以便与作业管理器通信。此值仅在具有静态名称或地址的单个作业管理器存在的设置中解释(简单的独立设置或具有动态服务名称解析的容器设置)。在许多高可用性设置中,当使用leader-election service(如ZooKeeper)从多个备用作业管理器中选择和发现作业管理器的leader时,并不使用它。

jobmanager.rpc.port

6123端口号

jobstore.cache-size

52428800作业存储缓存大小(以字节为单位),用于将已完成的作业保存在内存中。

jobstore.expiration-time

3600完成的作业过期时间并从作业存储区中清除的时间,以秒为单位。

slot.idle.timeout

50000槽池中空闲槽的超时(以毫秒为单位)

slot.request.timeout

300000从插槽池请求插槽的超时(以毫秒为单位)。

TaskManager

名称默认值说明

task.cancellation.interval

30000连续两次任务失败,重启的间隔时间(以毫秒为单位)

task.cancellation.timeout

180000超时(以毫秒为单位),任务取消超时后将导致致命的TaskManager错误。配置为0即为取消。

task.cancellation.timers.timeout

7500当流任务被取消时,我们等待计时器(以毫秒为单位)完成所有挂起的计时器线程。

task.checkpoint.alignment.max-size

-1Checkpoint队列可能缓冲的最大字节数。如果缓冲的数据量超过配置的数据量,检查点将被中止(跳过)。值-1表示没有限制。

taskmanager.data.port

0用于数据交换操作的task manager端口

taskmanager.data.ssl.enabled

true为taskmanager数据传输启用SSL支持。只有当内部SSL的全局标志(security.ssl.internal.enabled)设置为true时才适用

taskmanager.debug.memory.log

false是否启动线程,重复记录JVM的内存使用情况

taskmanager.debug.memory.log-interval

5000日志线程记录当前内存使用情况的间隔(以ms为单位)。

taskmanager.exit-on-fatal-akka-error

false是否启动taskmanager的检疫监控。如果检测到它已经隔离了另一个参与者系统,或者已经被另一个参与者系统隔离,则隔离监视器将关闭参与者系统。

taskmanager.heap.size

"1024m"taskmanager的JVM堆大小,它们是系统的并行工作者。在yarn设置中,该值自动配置为TaskManager的yarn容器的大小,减去一定的公差值。

taskmanager.host

(none)绑定到的网络接口的地址。此选项可用于显式定义绑定地址。因为不同的任务管理器对该选项需要不同的值,所以通常在附加的非共享的特定于任务管理器的配置文件中指定该选项。

taskmanager.jvm-exit-on-oom

false当任务线程抛出OutOfMemoryError错误时,是否杀死taskmanager

taskmanager.network.bind-policy

"ip"

如果taskmanager的taskmanager.host没有配置,则使用自动绑定策略,值为:

name:使用主机名称作为绑定地址

ip:使用主机IP作为绑定地址

taskmanager.network.detailed-metrics

false用于启用/禁用关于入站/出站网络队列长度的详细指标。

taskmanager.network.memory.buffers-per-channel

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

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

8为每个输出/输入门(结果分区/输入门)使用的额外网络缓冲区的数量。在基于信用的流控制模式中,这表示所有输入通道之间共享多少浮动信用。浮动缓冲区是基于backlog(子分区中的实时输出缓冲区)反馈分布的,可以帮助缓解由于子分区间数据分布不平衡而造成的反压力。在节点和/或集群中机器数量较多的情况下,这个值应该增加。

taskmanager.network.memory.fraction

0.1用于网络缓冲区的JVM内存的一部分。这决定了TaskManager可以同时拥有多少流数据交换通道,以及这些通道的缓冲效果如何。如果作业被拒绝,或者您收到系统没有足够缓冲区可用的警告,请增加此值或下面的最小/最大值。还要注意,“taskmanager.net .memory.min”和“taskmanager.net .memory.max”可能会覆盖这个分数。

taskmanager.network.memory.max

"1gb"网络缓冲区的最大内存

taskmanager.network.memory.min

"64mb"网络缓冲区的最小内存

taskmanager.network.request-backoff.initial

100输入通道的分区请求的最小回退(以毫秒为单位)。

taskmanager.network.request-backoff.max

10000输入通道的分区请求的最大回退(以毫秒为单位)。

taskmanager.network.request-backoff.max

1单个任务管理器可以运行的并行操作符或用户函数实例的数量。如果该值大于1,则单个TaskManager接受一个函数或操作符的多个实例。这样,TaskManager就可以利用多个CPU内核,但同时,可用内存被分配给不同的操作符或函数实例。这个值通常与TaskManager机器的物理CPU内核的数量成正比(例如,等于内核的数量,或内核数量的一半)。

taskmanager.registration.initial-backoff

"500 ms"初始注册在两次连续注册尝试之间的时长。每次新的注册尝试的回退次数将增加一倍,直到达到最大的注册回退次数为止。

taskmanager.registration.max-backoff

"30 s"两次连续注册尝试之间的最大注册回退。最大注册回退需要一个时间单位说明符(ms/s/min/h/d)。

taskmanager.registration.refused-backoff

"10 s"在重新尝试连接之前,taskmanager拒绝了注册后的回退。

taskmanager.registration.timeout

"5 min"taskmanager注册的超时。如果在没有成功注册的情况下超过了持续时间,则TaskManager将终止。

taskmanager.rpc.port

"0"task manager的IPC端口。接受端口列表(“50100、50101”)、范围列表(“50100-50200”)或两者的组合。建议设置一个端口范围,以避免多个task manager在同一台机器上运行时发生冲突。

对于批处理作业(或如果taskmanager.memoy.preallocate开启)Flink分配了0.7%的空闲内存(通过taskmanager.heap.mb配置的总内存。减去用于网络缓冲区的内存)。托管内存帮助Flink有效地运行批处理操作符。它可以防止outofmemoryexception,因为Flink知道可以使用多少内存来执行操作。如果Flink耗尽托管内存,它将利用磁盘空间。使用托管内存,可以直接对原始数据执行一些操作,而不必反序列化数据以将其转换为Java对象。总之,托管内存提高了系统的健壮性和速度。

托管内存的默认比例可以使用taskmanager.memory.fraction参数进行调整。可以使用taskmanager.memory.size设置绝对值(覆盖分数参数)。如果需要,可以在JVM堆之外分配托管内存。这可能在内存较大的设置中提高性能。

名称默认值说明

taskmanager.memory.fraction 

0.7TM为中间结果的排序、哈希表和缓存保留的相对内存量(减去网络缓冲区使用的内存量)。例如,0.8的值意味着TM为内部数据缓冲区保留了80%的内存(堆内或堆外取决于taskmanager.memory.off-heap),为任务管理器的堆保留了20%的空闲内存,用于用户定义函数创建的对象。仅当taskmanager.memory大小没有设置改配置项 才生效。

taskmanager.memory.off-heap

false内存分配方法(JVM堆或堆外),用于任务管理器的托管内存。对于内存较大的设置,这可以提高在内存上执行的操作的效率。
当设置为true时,则建议taskmanager.memory.proallocate也设置为true。

taskmanager.memory.preallocate

false

是否应该在TaskManager启动时预先分配TaskManager托管内存。当taskmanager.memory.off-heap设置为true,然后建议将此配置也设置为true。如果将此配置设置为false,则仅当通过触发完整的GC达到已配置的JVM参数MaxDirectMemorySize时,才会对分配的堆外内存进行清理。

对于流设置,强烈建议将此值设置为false,因为核心状态后端当前不使用托管内存。

taskmanager.memory.segment-size

"32kb"网络堆栈和内存管理器使用的内存缓冲区的大小。

taskmanager.memory.size

"0"TM在堆上或堆外(取决于taskmanager.memory.off-heap)保留的内存量(以兆为单位),用于对中间结果进行排序、哈希表和缓存。如果未指定,内存管理器将根据taskmanager.memory.fraction指定的任务管理器JVM的大小采用固定的比例。

YARN

名称默认值描述

yarn.application-attempts

(none)重新启动ApplicationMaster的次数。注意,整个Flink集群将重新启动,YARN客户机将断开连接。此外,JobManager地址将会更改,您需要手动设置JM host:port。建议将此选项保留为1。

yarn.application-master.port

"0"使用此配置选项,用户可以为应用程序主RPC端口(和JobManager)指定端口、端口范围或端口列表。默认情况下,我们建议使用默认值(0)让操作系统选择适当的端口。特别是当多个AMs在同一物理主机上运行时,固定的端口分配会阻止AM启动。例如,当在具有限制性防火墙的环境中对纱线运行Flink时,此选项允许指定允许端口的范围。

yarn.appmaster.rpc.address

(none)应用程序主RPC系统正在侦听的主机名或地址。

yarn.appmaster.rpc.port

-1应用程序主RPC系统正在侦听的端口。

yarn.containers.vcores

-1默认情况下,vcore的数量被设置为每个TaskManager的槽数(如果设置为1),否则设置为1。为了使用这个参数,您的集群必须启用CPU调度。可以通过设置org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler来实现这一点。

yarn.heartbeat-delay

5心跳与心跳之间的间隔时间以秒为单位。

yarn.heartbeat.container-request-interval

500

如果Flink请求容器,则与ResourceManager之间的心跳时间(以毫秒为单位):

  • 这个值越低,Flink收到容器分配通知的速度就越快,因为请求和分配是通过心跳传输的。
  • 这个值越低,可能分配的容器就越多,容器最终会被释放,但会对YARN造成压力。

如果您观察到ResourceManager上有太多容器分配,那么建议增加这个值。

yarn.maximum-failed-containers

(none)如果发生故障,系统将重新分配容器的最大数量。

yarn.per-job-cluster.include-user-jar

"ORDER"定义每个作业集群的系统类路径中是否包含用户jar,以及它们在路径中的位置。它们可以放在开头(“FIRST”)、末尾(“LAST”),或者根据它们的名称(“ORDER”)进行定位。

yarn.properties-file.location

(none)当一个Flink作业被提交给YARN时,JobManager的主机和可用处理槽的数量被写入一个属性文件,这样Flink客户机就可以获取这些细节。此配置参数允许更改该文件的默认位置(例如,对于在用户之间共享Flink安装的环境)。

yarn.tags

(none)用于Flink YARN应用程序的逗号分隔的标记列表。

基于Kerberos的安全配置

名称默认值说明

security.kerberos.login.contexts

(none)一个用,号分隔的票据列表(例如,“Client,KafkaClient”用于 ZooKeeper 身份验证和 Kafka 身份验证)

security.kerberos.login.keytab

(none)包含用户凭证的 Kerberos keytab 文件的绝对路径。

security.kerberos.login.principal

(none)与 keytab 关联的 Kerberos 主体名称。

security.kerberos.login.use-ticket-cache

true指示是否从Kerberos票据缓存中读取。

Checkpointing

名称默认值说明

state.backend

(none)用于存储和检查点状态的状态后端。

state.backend.async

true否应在可能且可配置的情况下使用异步快照方法。一些状态后端可能不支持异步快照,或者只支持异步快照,并忽略此选项。

state.backend.fs.memory-threshold

1024状态数据文件的最小大小。所有小于该值的状态块都内联存储在根检查点元数据文件中。

state.backend.incremental

false是否应该创建增量检查点。对于增量检查点,只存储前一个检查点的差异,而不存储完整的检查点状态。一些状态后端可能不支持增量检查点并忽略此选项。

state.backend.local-recovery

false配置本地恢复。默认情况下,本地恢复被禁用。本地恢复目前只覆盖键控状态后端。目前,MemoryStateBackend不支持本地恢复,因此忽略该选项。

state.checkpoints.dir

(none)用于在Flink支持的文件系统中存储检查点的数据文件和元数据的默认目录。存储路径必须可从所有参与的进程/节点(即所有任务管理器和作业管理器)。

state.checkpoints.num-retained

1保留的已完成检查点的最大数量。

state.savepoints.dir

(none)保存点的默认目录。用于将保存点写入文件系统的状态后端(MemoryStateBackend, FsStateBackend, RocksDBStateBackend)。

taskmanager.state.local.root-dirs

(none)定义根目录的配置参数,用于存储用于本地恢复的基于文件的状态。本地恢复目前只覆盖键控状态后端。目前,memorystateback不支持本地恢复,因此忽略该选项

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值