My spark-defaults.conf has an item related to the issue, I upload all jars in spark's jars folder to the hdfs path:
Streaming job failed to restart from checkpoint, ApplicationMaster throws "Error: Could not find or load main class org.apache.spark.deploy.yarn.ExecutorLauncher". The problem is always reproducible.
I examine the sparkconf object recovered from checkpoint, and find spark.yarn.jars are set empty, which let all jars not exist in AM side. The solution is spark.yarn.jars should be reload from properties files when recovering from checkpoint.
attach is a demo to reproduce the issue.