更新时间:2024-08-05 GMT+08:00

从checkpoint恢复spark应用的限制

问题

Spark应用可以从checkpoint恢复,用于从上次任务中断处继续往下执行,以保证数据不丢失。但是,在某些情况下,从checkpoint恢复应用会失败。

回答

由于checkpoint中包含了spark应用的对象序列化信息、task执行状态信息、配置信息等,因此,当存在以下问题时,从checkpoint恢复spark应用将会失败。

  1. 业务代码变更且变更类未明确指定SerialVersionUID。
  2. spark内部类变更,且变更类未明确指定SerialVersionUID。

另外,由于checkpoint保存了部分配置项,因此可能导致业务修改了部分配置项后,从checkpoint恢复时,配置项依然保持为旧值的情况。当前只有以下部分配置会在从checkpoint恢复时重新加载。

"spark.yarn.app.id",
 "spark.yarn.app.attemptId",
 "spark.driver.host",
 "spark.driver.bindAddress",
 "spark.driver.port",
 "spark.master",
 "spark.yarn.jars",
 "spark.yarn.keytab",
 "spark.yarn.principal",
 "spark.yarn.credentials.file",
 "spark.yarn.credentials.renewalTime",
 "spark.yarn.credentials.updateTime",
 "spark.ui.filters",
 "spark.mesos.driver.frameworkId",
 "spark.yarn.jars"

解决方法

手动删除checkpoint目录,重启业务程序。

删除文件为高危操作,在执行操作前请务必确认对应文件是否不再需要。