Databricks集群维护更新场景下Structured Streaming处理相关文档咨询
Databricks官方有明确的文档说明Structured Streaming作业与集群维护更新的适配逻辑,相关机制分为平台自动处理和需要用户手动适配两类,具体如下:
平台内置自动处理机制
- 常规的小版本Runtime补丁更新、操作系统安全补丁更新等运维操作,Databricks托管集群默认会执行优雅滚动更新:触发更新时会先通知Structured Streaming作业完成当前正在运行的微批次,将状态、偏移量等信息完整持久化到你配置的
checkpoint目录后再关停旧节点,新节点部署完成后会自动从检查点断点恢复流作业,整个过程不会丢数据也不会重复处理(端到端精确一次语义的前提下),全程不需要用户手动操作。 - 对于配置了自动维护窗口的生产集群,平台会默认在你设定的低峰窗口执行上述更新操作,避免影响业务峰值运行。
需要用户手动适配的场景
- 跨大版本的Runtime升级,比如从Runtime 10.x升级到Runtime 13.x这类跨多个大版本的操作,可能存在Spark API变更、检查点格式不兼容的问题,需要用户提前在测试环境验证作业代码兼容性、检查点可恢复性,确认无误后再手动触发生产集群升级,部分不兼容的场景需要用户调整代码甚至重建检查点。
- 如果你在集群中安装了自定义第三方依赖、使用了自定义容器镜像,OS或者Runtime更新可能出现依赖冲突,需要用户提前测试适配,手动调整依赖配置后再执行更新。
- 如果你使用的是非托管的固定集群、关闭了集群自动维护功能,所有更新操作都需要用户手动完成:先手动停止流作业确认状态落盘,再升级集群配置,最后手动重启流作业从检查点恢复。
生产环境适配建议
- 生产环境的Structured Streaming作业必须配置独立的云存储路径作为
checkpoint目录,禁止将检查点存放在集群本地节点。 - 可以在流作业配置中开启
enableCheckpointProtection参数,避免意外的检查点文件损坏导致恢复失败。
内容的提问来源于stack exchange,提问作者Ricardo Serradas
相关产品推荐
相关产品推荐

