火花流中是否需要检查点
Is checkpointing necessary in spark streaming
我注意到 spark streaming 示例也有用于检查点的代码。我的问题是检查点有多重要。如果它是为了容错,那么在这种流媒体应用程序中发生故障的频率是多少?
这完全取决于您的用例。假设你是 运行 一个流作业,它只是从 Kafka 读取数据并计算记录数。如果您的应用程序在一年左右后崩溃,您会怎么做?
- 如果您没有 backup/checkpoint,您将不得不重新计算所有前一年的价值数据,以便您可以继续计数。
- 如果你有 backup/checkpoint,你可以简单地读取检查点数据并立即恢复。
或者,如果您只是拥有一个流式应用程序,它只是 Reads-Messages-From-Kafka >>> Tranform >>> Insert-to-a-Database ,我不必担心我的应用程序崩溃。即使它崩溃了,我也可以简单地恢复我的应用程序而不会丢失数据。
注意:检查点是一个存储 spark 应用程序当前状态的进程。
谈到容错的频率,您几乎永远无法预测中断。在公司中,
- 可能会停电
- 集群
的常规maintainance/upgrading
希望对您有所帮助。
有两种情况:
- 你正在做有状态的操作,比如updateStateByKey,那么
您 必须使用 检查点 - 每个状态都会被保存。无设置
检查点目录,将抛出异常。
- 您只进行了窗口化操作 - 那么是的,您可以禁用检查点。但是我强烈建议设置检查点目录。
当驱动程序被杀死时,您将丢失所有数据和进度信息。检查点可帮助您从此类情况中恢复应用程序。
失败是正常情况吗?当然!想象一下,您拥有大型集群、许多机器以及这些机器中的许多组件。如果这些组件之一失败,那么您的应用程序也将失败。当与驱动程序的连接丢失时 - 您的应用程序失败。使用检查点,您可以再次 运行 应用程序,它将恢复状态。
我注意到 spark streaming 示例也有用于检查点的代码。我的问题是检查点有多重要。如果它是为了容错,那么在这种流媒体应用程序中发生故障的频率是多少?
这完全取决于您的用例。假设你是 运行 一个流作业,它只是从 Kafka 读取数据并计算记录数。如果您的应用程序在一年左右后崩溃,您会怎么做?
- 如果您没有 backup/checkpoint,您将不得不重新计算所有前一年的价值数据,以便您可以继续计数。
- 如果你有 backup/checkpoint,你可以简单地读取检查点数据并立即恢复。
或者,如果您只是拥有一个流式应用程序,它只是 Reads-Messages-From-Kafka >>> Tranform >>> Insert-to-a-Database ,我不必担心我的应用程序崩溃。即使它崩溃了,我也可以简单地恢复我的应用程序而不会丢失数据。
注意:检查点是一个存储 spark 应用程序当前状态的进程。
谈到容错的频率,您几乎永远无法预测中断。在公司中,
- 可能会停电
- 集群 的常规maintainance/upgrading
希望对您有所帮助。
有两种情况:
- 你正在做有状态的操作,比如updateStateByKey,那么 您 必须使用 检查点 - 每个状态都会被保存。无设置 检查点目录,将抛出异常。
- 您只进行了窗口化操作 - 那么是的,您可以禁用检查点。但是我强烈建议设置检查点目录。
当驱动程序被杀死时,您将丢失所有数据和进度信息。检查点可帮助您从此类情况中恢复应用程序。
失败是正常情况吗?当然!想象一下,您拥有大型集群、许多机器以及这些机器中的许多组件。如果这些组件之一失败,那么您的应用程序也将失败。当与驱动程序的连接丢失时 - 您的应用程序失败。使用检查点,您可以再次 运行 应用程序,它将恢复状态。