spark两种kafka偏移量维护方式

1.spark可以通过checkpoint的方式来维护kafka的偏移量,配置简单,只需要配置checkpoint的路径就可以完成偏移量的维护,如果本身spark业务就采用了state状态,那么既不需要额外配置即可确保偏移量的维护。

原理:spark会将kafka spark straming处理的topic以及对应消费偏移量持久化到文件当中,当spark任务崩溃后,保存在持久化文件的偏移量将会通过反序列化得到,达到继续崩溃前的偏移量继续消费的目的。

优点:配置方便,几乎不需要额外的代码量。

缺点:本身不需要state的任务会有一些额外要注意的点,广播变量在恢复的时候需要 重新广播,否则再重新访问时将会直接崩溃。同一批数据如果存在问题没有正常trycatch,再下次恢复重启后将会直接跳过该批数据,对数据的质量存在一定风险。Spark一些配置修改之后,需要删除checkpoint目录才能起作用,也会导致偏移量的失去。环境中的kafka如果被清空,也需要删除kafka目录,否则无法恢复。

 

2.spark在010的kafka api中给出了异步提交偏移量的接口,可以通过将偏移量提交的方式来维护偏移量在kafka上。

原理:在kafka stream每批rdd生成的compute()方法中,将会在末尾异步提交之前的偏移量到kafka上,而发送的具体偏移量是在rdd处理的末尾通过commitAsync()提交到stream的。

优点:可以规避checkpoint带来的一些约束,修改配置不需要删除checkpoint文件也不会导致偏移量的丢失,环境中的kafka被清空只需要简单重启就能解决。

缺点:对代码的编写规范具有要求,如果任务的try catch不全面将会导致无法规避掉的崩溃问题,只有修改代码或者更换groupid能够解决。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值