老师,关于spark checkpoint如何读取的还是有疑问

老师,关于spark checkpoint如何读取的还是有疑问

checkpoint 支持在不同的app中使用吗,比如说我上午提交了一个app,生成了一个checkpoint,然后下午我又写一个app里面也想用到这个checkpoint,spark会自动去读取checkpoint吗?


但是我不理解的是,checkpoint目录下是一个个随机的UUID,spark怎么知道哪个UUID是我这份数据的checkpoint呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
徐老师 2022-03-07 14:44:00

不同任务生成的checkpoint不能通用,checkpoint是和某一个具体任务绑定的。

咱们现在讲的是针对离线任务中配置的checkpoint,任务在运行期间会生成checkpoint数据,这个时候任务会在内存里面动态存储他们之间的关系,这个关系没有记录到文件中。针对离线任务而言不需要涉及重启后的数据恢复,所以没有维护这个关系。

Checkpoint真正的意义是深度应用于实时计算中,针对实时计算程序会定时生成checkpoint,这个时候会产生多个目录,如果程序挂掉想要基于checkpoint恢复数据,默认会使用最新生成的那个checkpoint目录(虽然都是UUID目录,但是通过目录内的文件可以获取到checkpoint的时间),这个里面保存的是程序最新的数据,也可以手工指定具体用某一个目录恢复数据。

  • 我记得在UUID目录下面有一个metadata文件,里面保存的应该有任务的基础信息,可以看一下。
    2022-03-07 14:50:01
  • 刚才在电脑上确认了一下,metadata信息是针对实时计算的,因为需要涉及到任务重启时使用,所以本地会存储这些信息。


    离线计算程序在checkpoint的时候只存储了RDD中的数据,这些数据的任务之间的关系没有落盘存储。

    2022-03-07 16:01:49
  • 提问者 ischand #3

    那其实就是说,在 spark 离线计算任务中,checkpoint 就等同于 cache only disk,没有其他用处了。


    那我的理解就是:

    针对spark离线计算,用 cache only disk 就可以了,不要用 checkpoint,因为 checkpoint 反而最后还需要消耗资源去启动一个 Job 写 ckp 文件,然后写到盘里的 ckp 文件还不能给下一个任务复用


    老师,我这样理解有没有问题~

    2022-03-07 16:34:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师