【发布时间】:2019-02-03 00:43:13
【问题描述】:
我正在构建一个火花流应用程序,从 kafka 主题读取输入消息,转换消息并将结果消息输出到另一个 kafka 主题。现在我很困惑如何在应用程序重新启动时防止数据丢失,包括 kafka 读取和输出。设置 spark 配置 "spark.streaming.stopGracefullyOnShutdow" true 有帮助吗?
【问题讨论】:
标签: apache-spark hadoop apache-kafka
我正在构建一个火花流应用程序,从 kafka 主题读取输入消息,转换消息并将结果消息输出到另一个 kafka 主题。现在我很困惑如何在应用程序重新启动时防止数据丢失,包括 kafka 读取和输出。设置 spark 配置 "spark.streaming.stopGracefullyOnShutdow" true 有帮助吗?
【问题讨论】:
标签: apache-spark hadoop apache-kafka
您可以将 Spark 配置为对 HDFS 执行检查点并将 Kafka 偏移量存储在 Zookeeper(或 Hbase,或在其他地方配置以实现快速、容错查找)
但是,如果您在能够提交偏移量之前处理一些记录并写入结果,那么您最终会在重新启动时重新处理这些记录。据称,Spark 可以对 Kafka 执行一次,但据我所知,这只能通过适当的偏移管理进行,例如,在 Kafka 优先级中将 enable.auto.commit 设置为 false,然后只在你之后提交已处理并将数据写入其目的地
如果您只是在 Kafka 主题之间移动数据,Kafka Streams 是包含的 Kafka 库,它不需要 YARN 或集群调度程序
【讨论】: