【问题标题】:Spark streamming task shutdown gracefully when kafka client send message asynchronously当kafka客户端异步发送消息时,Spark流任务优雅关闭
【发布时间】:2019-02-03 00:43:13
【问题描述】:

我正在构建一个火花流应用程序,从 kafka 主题读取输入消息,转换消息并将结果消息输出到另一个 kafka 主题。现在我很困惑如何在应用程序重新启动时防止数据丢失,包括 kafka 读取和输出。设置 spark 配置 "spark.streaming.stopGracefullyOnShutdow" true 有帮助吗?

【问题讨论】:

    标签: apache-spark hadoop apache-kafka


    【解决方案1】:

    您可以将 Spark 配置为对 HDFS 执行检查点并将 Kafka 偏移量存储在 Zookeeper(或 Hbase,或在其他地方配置以实现快速、容错查找)

    但是,如果您在能够提交偏移量之前处理一些记录并写入结果,那么您最终会在重新启动时重新处理这些记录。据称,Spark 可以对 Kafka 执行一次,但据我所知,这只能通过适当的偏移管理进行,例如,在 Kafka 优先级中将 enable.auto.commit 设置为 false,然后只在你之后提交已处理将数据写入其目的地

    如果您只是在 Kafka 主题之间移动数据,Kafka Streams 是包含的 Kafka 库,它不需要 YARN 或集群调度程序

    【讨论】:

      猜你喜欢
      • 2018-04-27
      • 2019-06-25
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 2019-03-10
      • 1970-01-01
      • 2021-02-25
      相关资源
      最近更新 更多