apache-spark - 当kafka客户端异步发送消息时,Spark Streaming任务优雅关闭
问题描述
我正在构建一个火花流应用程序,从 kafka 主题读取输入消息,转换消息并将结果消息输出到另一个 kafka 主题。现在我很困惑如何在应用程序重新启动时防止数据丢失,包括 kafka 读取和输出。设置 spark 配置 "spark.streaming.stopGracefullyOnShutdow" true 有帮助吗?
解决方案
您可以将 Spark 配置为对 HDFS 执行检查点并将 Kafka 偏移存储在 Zookeeper(或 Hbase,或在其他地方配置以实现快速、容错查找)
但是,如果您在能够提交偏移量之前处理一些记录并写入结果,那么您最终将在重新启动时重新处理这些记录。据称,Spark 可以对 Kafka 执行一次,但据我所知,这只能通过适当的偏移管理进行,例如,在 Kafka 优先级中将 enable.auto.commit 设置为 false,然后只在你之后提交已处理数据并将其写入其目的地
如果您只是在 Kafka 主题之间移动数据,Kafka Streams 是包含的 Kafka 库,它不需要 YARN 或集群调度程序
推荐阅读
- android - Android - 如何检查抽屉布局中是否有任何项目被点击?
- javascript - 从 React 中的文件夹导入图像
- c# - 将 Kendo DropDownList 过滤器值作为复杂类型中的对象类型属性传递的问题
- typescript - VisualStudio Code 从扩展安装扩展
- android - Android ExoPlayer 的抽象方法错误
- android - Jetpack compose - 1.0.0-alpha02 的嵌套导航
- python-3.x - 如何在 Python 上使用 selenium webdriver 提取表的最后一列
- ruby-on-rails - 如何发送与 rails 已经存在的电子邮件关系
- ajax - 仅在 Kubernetes 环境中请求实体太大错误
- xml - Powershell Send-XmlRcpRequest 的 Hello World?