spark的错误容忍机制有两种方法。
① 通过重新执行计算任务来容忍错误。当job抛出异常不能继续执行时,重新启动计算任务,再次执行。
②通过checkpoint(检查点)机制,对重要的中间数据进行持久化。
检查点(本质是通过将RDD写入Disk做检查点)是为了通过lineage(血统)做容错的辅助,lineage过长会造成容错成本过高,这样就不如在中间阶段做检查点容错,如果之后有节点出现问题而丢失分区,从做检查点的RDD开始重做Lineage,就会减少开销。
设置checkpoint的目录,可以是本地的文件夹、也可以是HDFS。一般是在具有容错能力,高可靠的文件系统上(比如HDFS, S3等)设置一个检查点路径,用于保存检查点数据。
分别举例说明:
本地目录
注意:这种模式,需要将spark-shell运行在本地模式上
HDFS目录
注意:这种模式,需要将spark-shell运行在集群模式上