在任务开发侧,您可以配置 Flink 相关参数,包括 Task Manager 和 Job Manager 使用资源配置,以及 Checkpoint 、Task 故障重启策略、任务失败重试、依赖文件、变量作用域等配置。
在任务编辑区的右侧,单击参数配置,然后根据任务需求进行 Flink 参数配置。
说明
您也可以直接引用提前创建好的配置模板,快速配置任务的 Flink 参数。相关文档,请参见使用配置模板快速配置 Flink 参数。
配置 | 说明 |
---|---|
并行度 | 任务全局并发数,默认值为 2。 |
单个 TaskManager CPU 数 | 单个 TaskManager 的 CPU 核数,默认值为 1,最少支持设置为 0.5。 |
单个 TaskManager 内存大小 | 单个 TaskManager 的内存大小,将根据您设置的 CPU 核数自动调整,呈 1C4G 的关系。 |
单个 TaskManager slot 数 | 单个 TaskManager 的 Slot 数量,默认值为 2。 |
JobManager CPU 数 | JobManager 的 CPU 核数,默认值为 1,最少支持设置为 0.5。 |
JobManager 内存大小 | JobManager 的内存大小,将根据您设置的 CPU 核数自动调整,呈 1C4G 的关系。 |
开启 Checkpoint 之后,Flink 可以将任务的状态信息定期保存到持久化存储中。当任务失败或意外停止时,Flink 可以从最近的一次 Checkpoint 中恢复任务的状态,提高任务的可靠性和容错能力。
说明
只有 Flink STREAM 类型任务支持 Checkpoint 配置,Flink Batch 类型任务不显示 Checkpoint 配置。
配置 | 说明 |
---|---|
启用 Checkpoint | 是否启用 Checkpoint,默认开启 Checkpoint。 |
Checkpoint 间隔 | 系统自动执行 Checkpoint 的时间间隔。 |
Checkpoint 超时时间 | Checkpoint 的超时时间。 |
Region Checkpoint | 在任务并发度高;个别节点失败导致全局的 Checkpoint 失败;网络延迟、写入超时对任务影响明显等情况,可以启用该功能以提升 Checkpoint 成功率。 说明 Region Checkpoint 配置仅支持在 Flink 1.11-volcano 引擎版本中使用。
如需了解更加详细的 Region Checkpoint原理,请参见Regional Checkpoint实践。 |
Backend Cache Enable | Flink 平台目前使用 RocksDB 作为 StateBackend。由于使用二进制与 RocksDBStateBackend 进行交互,这就意味着每次 State 访问都需要将数据进行序列化或反序列化,需要消耗大量的 CPU,导致吞吐量低。 说明 Backend Cache 配置仅支持在 Flink 1.11-volcano 引擎版本中使用。
如需了解更加详细的 Backend Cache 信息,请参见StateBackend性能提升。 |
用于控制任务中的 Task 在出现失败或异常情况时的重启行为。通过配置 Task 的重启策略,可以指定 Flink 在遇到 Task 失败时采取的处理方式,以确保任务能够稳定可靠地运行。
配置 | 说明 |
---|---|
不重启策略(No Restart Strategy) | 选择该策略时,表示任务故障时不重启。 |
固定时间间隔重启策略(Fixed Delay Restart Strategy) | 选择该策略时,表示任务故障在固定的时间间隔内不会重启。 说明 固定时间间隔重启策略是 Flink 1.16-volcano 版本的默认重启策略。
|
故障率重启策略(Failure Rate Restart Strategy) | 选择该策略时,表示会根据任务故障率进行重启。 说明 故障率重启策略是 Flink 1.17-volcano 版本的默认重启策略。
|
指数延迟重启策略 | 选择该策略时,当任务失败时,会根据延迟规则以指数递增的方式无限次重启任务,直至任务恢复。 说明 指数延迟重启策略仅支持在 Flink 1.16、Flink 1.17 版本中使用。
|
聚合故障率重启策略(Aggregated Failure Rate Restart Strategy) | 该策略是火山引擎自研的任务故障重启策略。 说明 聚合故障率重启策略是 Flink 1.11-volcano 版本默认的重启策略,且仅支持在 Flink 1.11-volcano 版本中使用。
|
当 Task 重启策略生效时,任务仍然运行失败,配置的任务失败重试拉起规则会进行整个任务维度的拉起操作。
Flink 平台已经提供了任务重启策略配置功能,但 Failover 策略有一定的理解门槛,配置起来相对困难。您可以使用任务失败重试拉起功能,配置简单易理解。
配置 | 说明 |
---|---|
启用 | 是否启用任务失败重试拉起功能,默认启用。 |
最大重试拉起次数 | 任务运行过程中,如果出现异常导致整个任务运行失败,系统在该次任务失败生命周期中的最大重试拉起次数。 |
重试拉起时间间隔 | 任务失败拉起,却还是运行失败,两次重试拉起之间的时间间隔。 |
值得注意的是,任务失败重试拉起策略需要同时满足以下条件才能生效:
注意:如果开启了作业失败重试策略,但是任务却没有重试拉起,可以从几个方向检查:
- 参考 Checkpoint 配置 检查任务是否开启 Checkpoint;
- 检查运行事件中是否有 “Automatic restart is suppressed because the job can only be initiated from new” 类似关键信息,如果有则可能因为该作业实例没有成功生成 Checkpoint 或者 Savepoint 而导致无法重试拉起。
通过设置自定义参数,可以对 Flink 任务进行更精细的控制和优化,使其更好地适应不同的业务需求和环境变化。同时,还可以提高任务的可维护性和灵活性。自定义参数的生效优先级低于已在配置面板上填写的配置。
此处提供几个示例参数配置样例,请根据实际情况设置。
类别 | 参数 | 描述 |
---|---|---|
快照 | savepoint.scheduler.default.interval | 系统自动创建 Savepoint 的间隔时间,单位为毫秒,最小取值为 60000 毫秒。 说明 仅 Flink 1.11-volcano 版本支持系统快照。 |
访问公网 | kubernetes.jobmanager.annotations.gro.openstudio/network-policy | 当需要 Flink 访问公网时,可以将该参数取值设置为 |
kubernetes.taskmanager.annotations.gro.openstudio/network-policy | 当需要 Flink 访问公网时,可以将该参数取值设置为 | |
限制 Log 日志等级 | env.log.level | 指定任务输出的 log 日志等级,支持取值为 trace、debug、info、warn、error、fatal。指定输出日志等级后,在任务日志中只会输出当前等级日志,以及更高等级的日志。 说明
|
推断 Source 并行度 | table.exec.hive.infer-source-parallelism | Flink Batch 类型任务读取 Hive 或 Iceberg 数据时,是否自动推断 Source 并行度。 |
table.exec.hive.infer-source-parallelism.max | Flink Batch 类型任务读取 Hive 或 Iceberg 数据时,Source 的最大推断并行度。默认值为 1000。 |
Flink 平台已经支持为 Stream 类型任务开启自动调优。开启后,系统将自动分析运行任务,将根据上游 Kafka 的 Lag 调整 Flink 计算任务的资源使用量,从而降低资源使用量。
注意
开启任务自动调优前,需要先了解以下注意事项:
如果需要为任务开启自动调优,请根据业务情况配置相关参数。
配置 | 说明 |
---|---|
不生效时间 | 设置每天自动调优的不生效时间段,即在该时间段内智能调优正常运行但不进行任何调优调整。 |
最大资源限制 | 设置任务在自动调整资源时,可以扩容的最大资源上限,单位为 CU。 |
调整间隔时间 | 设置任务在调优重启生效一次之后,下一次再进行调优的时间间隔,单位为 min。 |
依赖文件的配置主要用于指定任务所需的外部文件或资源的路径,在任务执行期间会自动加载所需的文件或资源,并将其传递给相应的组件或函数使用。
单击添加,然后选择添加依赖文件的方式:
tos://bucket/path/依赖文件名
。示例:tos://test-init/tos_jar/flink-faker-0.5.3.jar
注意
填写 Bucket 时,请先了解以下两个注意事项:
volc-flink-meta-{账号ID}-{region}
。示例:volc-flink-meta-2100xxxx-cn-beijing
。当 SQL 代码中引用了指定域变量,需要在 Flink 参数配置中选择生效的变量作用域。如何创建变量,请参见创建变量。
系统将会先从您指定的变量作用域中查找变量,再从全局变量中查找变量,指定域变量优先级高于全局变量。如果变量不存在则运行报错。