【Flink精讲】Flink状态及Checkpoint调优

17 篇文章 0 订阅
12 篇文章 1 订阅

RocksDB大状态调优

        RocksDB 是基于 LSM Tree 实现的(类似 HBase) ,写数据都是先缓存到内存中,
所以 RocksDB 的写请求效率比较高。 RocksDB 使用内存结合磁盘的方式来存储数据,每
次获取数据时,先从内存中 blockcache 中查找,如果内存中没有再去磁盘中查询。 使用
RocksDB 时,状态大小仅受可用磁盘空间量的限制, 性能瓶颈主要在于 RocksDB 对磁盘
的读请求, 每次读写操作都必须对数据进行反序列化或者序列化。 当处理性能不够时,仅需
要横向扩展并行度即可提高整个 Job 的吞吐量。

开启增量检查点和本地恢复

1)开启增量检查点
        RocksDB 是目前唯一可用于支持有状态流处理应用程序增量检查点的状态后端,可以修改参数开启增量检查点:

state.backend.incremental: true #默认 false,改为 true。
或代码中指定
new EmbeddedRocksDBStateBackend(true) 

调整预定义选项

Flink 针对不同的设置为 RocksDB 提供了一些预定义的选项集合,其中包含了后续提到
的一些参数,如果调整预定义选项后还达不到预期,再去调整后面的 block、 writebuffer
等参数。
当 前 支 持 的 预 定 义 选 项 有 DEFAULT 、 SPINNING_DISK_OPTIMIZED 、
SPINNING_DISK_OPTIMIZED_HIGH_MEM 或 FLASH_SSD_OPTIMIZED。有条件上 SSD
的, 可以指定为 FLASH_SSD_OPTIMIZED

state.backend.rocksdb.predefined-options: SPINNING_DISK_OPTIMIZED_HIGH_MEM
#设置为机械硬盘+内存模式 

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Flink中,可以使用Checkpoint机制来实现容错。当一个任务失败时,Flink可以从最近的Checkpoint恢复状态并重新开始处理数据。而在Flink中,偏移量的提交和Checkpoint机制是紧密相关的。偏移量是指在Kafka或其他消息队列中,消费者消费到的消息位置,而Checkpoint则是指将任务状态持久化到持久化存储中。 在Flink中,可以通过配置`enable.auto.commit`属性来开启偏移量自动提交。但是,这种方式可能会导致数据丢失或重复消费的情况发生。因此,建议使用手动提交偏移量的方式。 在Flink中,使用`FlinkKafkaConsumer`消费Kafka数据时,可以使用`FlinkKafkaConsumer#assignTimestampsAndWatermarks()`方法来指定Watermark生成器。在这个方法中,可以通过调用`FlinkKafkaConsumer#getCurrentOffset()`方法来获取当前偏移量,并将它保存到状态中。当Checkpoint触发时,可以将偏移量提交到Checkpoint中。这样,在任务失败时,Flink就可以从最近的Checkpoint恢复状态并重新开始处理数据了。 具体来说,在Flink中将偏移量提交到Checkpoint的步骤如下: 1. 在`FlinkKafkaConsumer#assignTimestampsAndWatermarks()`方法中获取当前偏移量,并将其保存到状态中。 2. 当Checkpoint触发时,在Checkpoint回调函数中将偏移量提交到Checkpoint中。 3. 在任务重新启动时,从Checkpoint中获取偏移量,并将消费者定位到该位置继续消费数据。 需要注意的是,在将偏移量提交到Checkpoint中时,要确保线程安全。建议使用`OperatorState`或`KeyedState`来保存偏移量,并在Checkpoint回调函数中更新状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

话数Science

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值