BAS*_*BAS 3 fault-tolerance apache-spark
当我们开始一项新工作时,Spark 会使用检查点吗?假设我们使用检查点将一些 RDD 写入磁盘。在新作业期间,所述 RDD 是否会被重新计算或从磁盘加载?
除了@maxime G 给出的点之外...
Spark 不提供默认检查点..我们需要显式设置它。
检查点实际上是 Spark Core(Spark SQL 用于分布式计算)的一项功能,它允许驱动程序在失败时重新启动,并使用描述为 RDD 的分布式计算的先前计算状态
Spark 提供两种检查点。
可靠的检查点:可靠的检查点使用可靠的数据存储,例如 Hadoop HDFS 或 S3。你可以通过简单地做到
sparkContext.setCheckpointDir("(hdfs:// or s3://)tmp/checkpoint/")
then dataframe.checkpoint(eager = true)
Run Code Online (Sandbox Code Playgroud)
和非可靠检查点:本地检查点使用执行器存储(即节点本地磁盘存储)来写入检查点文件,并且由于执行器生命周期被认为是不可靠的,并且如果作业突然终止,它不保证数据可用。
sparkContext.setCheckpointDir("/tmp/checkpoint/").
dataframe.localCheckpoint(eager = true)
Run Code Online (Sandbox Code Playgroud)
(在本地模式下设置检查点并且启用集群自动缩放时要小心..)
注意: 根据检查点运算符的eager 标志,检查点可以是 eager 或 lazy 。热切检查点是默认检查点,并在请求时立即发生。延迟检查点不会且仅在执行操作时才会发生。 急切的检查点将创建一个即时阶段障碍,然后等待任何特定操作发生并记住所有先前的转换。
| 归档时间: |
|
| 查看次数: |
3303 次 |
| 最近记录: |