我正在构建一个火花流应用程序,从kafka主题中读取输入消息,转换消息并将结果消息输出到另一个kafka主题中。现在我很困惑如何防止应用程序重新启动时数据丢失,包括kafka读取和输出。将Spark配置设置为“ spark.streaming.stopGracefullyOnShutdow”可以帮助您吗?
答案 0 :(得分:1)
您可以将Spark配置为对HDFS执行检查点,并将Kafka偏移量存储在Zookeeper(或Hbase)中,或在其他位置进行配置以进行快速的容错查找
但是,如果在能够提交偏移量之前处理一些记录并写入结果,那么最终将在重新启动时重新处理这些记录。据称Spark只能对Kafka进行一次操作,但是据我所知,这是只有通过适当的偏移量管理才能实现的操作,例如,据我所知,在Kafka优先级中将enable.auto.commit设置为false,然后在已处理并将数据写入其目的地
如果您只是在Kafka主题之间移动数据,则Kafka Streams是其中包括的Kafka库,它不需要YARN或群集调度程序