zoukankan      html  css  js  c++  java
  • Spark Checkpointing

    streaming 应用程序必须 24/7 运行, 因此必须对应用逻辑无关的故障(例如, 系统故障, JVM 崩溃等)具有弹性. 为了可以这样做, Spark Streaming 需要 checkpoint 足够的信息到容错存储系统, 以便可以从故障中恢复.checkpoint 有两种类型的数据.

    • Metadata checkpointing - 将定义 streaming 计算的信息保存到容错存储(如 HDFS)中.这用于从运行 streaming 应用程序的 driver 的节点的故障中恢复(稍后详细讨论). 元数据包括:
      • Configuration - 用于创建流应用程序的配置.
      • DStream operations - 定义 streaming 应用程序的 DStream 操作集.
      • Incomplete batches - 批量的job 排队但尚未完成.
    • Data checkpointing - 将生成的 RDD 保存到可靠的存储.这在一些将多个批次之间的数据进行组合的 状态 变换中是必需的.在这种转换中, 生成的 RDD 依赖于先前批次的 RDD, 这导致依赖链的长度随时间而增加.为了避免恢复时间的这种无限增加(与依赖关系链成比例), 有状态转换的中间 RDD 会定期 checkpoint 到可靠的存储(例如 HDFS)以切断依赖关系链.

    总而言之, 元数据 checkpoint 主要用于从 driver 故障中恢复, 而数据或 RDD checkpoint 对于基本功能(如果使用有状态转换)则是必需的.

    何时启用 checkpoint

    对于具有以下任一要求的应用程序, 必须启用 checkpoint:

    • 使用状态转换 - 如果在应用程序中使用 updateStateByKey或 reduceByKeyAndWindow(具有反向功能), 则必须提供 checkpoint 目录以允许定期的 RDD checkpoint.
    • 从运行应用程序的 driver 的故障中恢复 - 元数据 checkpoint 用于使用进度信息进行恢复.

    请注意, 无需进行上述有状态转换的简单 streaming 应用程序即可运行, 无需启用 checkpoint. 在这种情况下, 驱动器故障的恢复也将是部分的(一些接收但未处理的数据可能会丢失). 这通常是可以接受的, 许多运行 Spark Streaming 应用程序. 未来对非 Hadoop 环境的支持预计会有所改善.

    如何配置 checkpoint

    可以通过在保存 checkpoint 信息的容错, 可靠的文件系统(例如, HDFS, S3等)中设置目录来启用 checkpoint. 这是通过使用 streamingContext.checkpoint(checkpointDirectory) 完成的. 这将允许您使用上述有状态转换. 另外, 如果要使应用程序从 driver 故障中恢复, 您应该重写 streaming 应用程序以具有以下行为.

    • 当程序第一次启动时, 它将创建一个新的 StreamingContext, 设置所有流, 然后调用 start().
    • 当程序在失败后重新启动时, 它将从 checkpoint 目录中的 checkpoint 数据重新创建一个 StreamingContext.
  • 相关阅读:
    Django Rest Framework --用户访问频率限制
    Django Rest Framework --权限控制
    Django Rest Framework --认证
    Django Rest Framework
    查找最大或最小的 N 个元素
    collections集合模块 [namedtuple,deque,*]
    Dream
    jQuery Ajax -附示例
    原生Ajax
    Python3 里面的线程池
  • 原文地址:https://www.cnblogs.com/hmy-blog/p/7799788.html
Copyright © 2011-2022 走看看