flink sql checkpoint 调优配置

本文详细介绍了Flink SQL中关于checkpoint的配置调优,包括检查点间隔、失败容忍次数、超时时间、保留策略等关键参数。通过合理设置这些参数,可以确保系统在面对故障时能有效恢复,提高数据一致性。此外,还提到了使用RocksDB作为状态后端以及持久化存储的相关配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

- `execution.checkpointing.interval`: 检查点之间的时间间隔(以毫秒为单位)。在此间隔内,系统将生成新的检查点

SET execution.checkpointing.interval = 6000;

- `execution.checkpointing.tolerable-failed-checkpoints`: 允许的连续失败检查点的最大数量。如果连续失败的检查点数量超过此值,作业将失败。

SET execution.checkpointing.tolerable-failed-checkpoints = 10;

- `execution.checkpointing.timeout`: 检查点的超时时间(以毫秒为单位)。如果在此时间内未完成检查点操作,作业将失败。

SET execution.checkpointing.timeout =600000;

- `execution.checkpointing.externalized-checkpoint-retention`: 外部化检查点的保留策略。`RETAIN_ON_CANCELLATION`表示在作业取消时保留外部化检查点。

SET execution.checkpointing.externalized-checkpoint-retention = RETAIN_ON_CANCELLATION;

- `execution.checkpointing.mode`: 检查点模式。`EXACTLY_ONCE`表示每个检查点只会在作业处理完全一次时生成。

SET execution.checkpointing.mode = EXACTLY_ONCE;

- `execution.checkpointing.unaligned`: 检查点是否对齐。如果设置为`true`,则检查点将在作业的所有任务完成之前生成。

SET execution.checkpointing.unaligned = true;

- `execution.checkpointing.max-concurrent-checkpoints`: 并发生成检查点的最大数量。在此数量的检查点生成之前,不会生成新的检查点。

SET execution.checkpointing.max-concurrent-checkpoints = 1;

- `state.checkpoints.num-retained`: 保留的检查点数量。超过此数量的检查点将被删除

SET state.checkpoints.num-retained = 3;

暂未使用

SET execution.checkpointing.interval = 6000;

SET execution.checkpointing.tolerable-failed-checkpoints = 10;

SET execution.checkpointing.timeout =600000;

SET execution.checkpointing.externalized-checkpoint-retention &#

### Flink 参数设置与化技巧 #### 自动并行度整 自动并行度整能够动态适应集群资源的变化,从而提高执行效率。启用此特性可通过配置项 `execution.batch.adaptive.auto-parallelism.enabled` 来实现[^1]。 #### 空闲状态保留时间设定 合理设置空闲状态保留时间有助于预防由于长时间未清理而造成的状态膨胀现象,在涉及常规连接操作以及Top-N去重的应用场合尤为重要。可以通过API接口或是直接修改配置文件中的相应选项来进行定义[^2]。 #### MiniBatch 微批处理机制 MiniBatch 技术通过暂存一定量的数据后再集中处理的方式增强了吞吐能力;然而需要注意的是该方法并非适用于所有情况,并且具体行为可能随Flink版本更新有所改变。它特别适合于那些可以容忍一定程度延迟的任务流程中。 #### LocalGlobal 两阶段聚合策略 针对数据分布不均所引发的问题,采用LocalGlobal双层汇聚方案可显著改善计算节点间负载均衡状况。值得注意的是这种改进措施需配合MiniBatch使用,并且仅当用户自定义聚集函数满足特定条件时才生效。 #### Split Distinct 计数化 对于COUNT DISTINCT类型的统计需求,引入Split Distinct算法提供了一种有效的解决方案。尽管存在一定局限性——比如无法支持全部内置聚合运算符——但在某些特殊条件下确实表现出色,实际应用案例表明开启这项特性的前后性能差距明显。 #### 多维DISTINCT过滤技术 利用Filter算子结合查询计划生成工具的帮助,可以在不影响逻辑正确性的前提下去除不必要的中间结果集副本,进而减少内存占用率。Web界面展示的Checkpoint大小对比图清晰反映了这一改动带来的积极影响。 ```sql -- 设置全局默认的空闲状态超时时长为一天 SET 'state.ttl'='86400s'; -- 启用MiniBatch微批次处理,默认缓冲时间为200毫秒 SET 'table.exec.mini-batch.enabled' = 'true'; SET 'table.exec.mini-batch.allow-latency' = '200ms'; -- 开启LocalGlobal局部加权求和模式 CREATE TABLE my_table ( ... ) WITH ('changelog-mode'='I,UA,D'); -- 应用Split Distinct化到COUNT(DISTINCT field) SELECT COUNT(DISTINCT user_id) FROM orders; -- 实现多维度唯一值计数的同时去除冗余记录 SELECT country, city, COUNT(DISTINCT device_type) AS unique_devices FROM sessions GROUP BY country, city; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值