全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

Spark Streaming Kafka Offset为什么不用Checkpoint管理

发布时间:2022-08-12 11:24:27
发布人:syq

  Spark Streaming消费Kafka,对于offset的管理方式一般有如下方式:

  1. checkpoint 方式管理,通过checkpoint可以将消费的offset持久化存储到hdfs,失败后作业可以从checkpoint恢复。 但是这里的主要问题是,如果你的程序作了升级,比如业务逻辑变更了,你修改了代码,这时是无法从之前的checkpoint恢复的。因为checkpoint第一次持久化的时候会把整个相关的jar给序列化成一个二进制文件,每次重启都会从里面恢复,换句话说不支持应用升级。

Checkpoint管理

  2. mysql,可以将offset存储到mysql中,自己管理,作业从mysql中读取每个分区的offset,这样可以解决应用程序升级问题,同时如果你想从之前的某个时刻消费数据,也可以选择在mysql中保留条offset信息。比如我想从一个小时之前重新消费数据,因为这段时间数据出错了,我要重新计算,只需要指定读取记录的一个小时前的offset即可。 这里还有一点需要说明的是,如果你spark输出的数据存储也在mysql中,通过mysql事物,就可以做到端到端的exactly once 语义。

  3. zookeeper,可以将offset存储到zk中

  4. kafka 0.10 之后,offset存储到kafka的一个topic,`__consumer_offsets`,同时提供了commitAsync 的方式提交offset。

  5. 其他第三方存储,redis,hbase都是可以的

  # 需要说明的是,上面的这些方式,如果spark消费的数据写入到其他存储中,你只有保证offset的更新和你的数据写入在同一个事物中才能保证端到端的exactly once语义。 比如你如果Spark Streaming输出数据写入hbase中,offset存储在mysql中,你是无法维护offset的更新和数据写入hbase在一个事物的,如果先再写入hbase,再更新offset,保证的语义是at-least-once, 这种情况下数据不会丢失,但是会重复。 如果你先更新offset,再写hbase,这种情况可能造成数据丢失,语义是at-most-once.

  更多关于“大数据培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

相关文章

明道、teambition、Tower.im、Worktile、trello的功能都有哪些?

明道、teambition、Tower.im、Worktile、trello的功能都有哪些?

2023-10-14
反欺诈中所用到的机器学习模型有哪些?

反欺诈中所用到的机器学习模型有哪些?

2023-10-14
强化学习中on-policy与off-policy有什么区别?

强化学习中on-policy与off-policy有什么区别?

2023-10-14
为什么交叉熵可以用于计算代价?

为什么交叉熵可以用于计算代价?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取