Apache DolphinScheduler 源码剖析之 Worker 容错处理流程

今天给大家带来的分享是 Apache DolphinScheduler 源码剖析之 Worker 容错处理流程

DolphinScheduler源码剖析之Worker容错处理流程

Worker容错流程是这样的

1. 当 ZooKeeper 监听到有 Worker 节点挂了,就会去通知 Master 进行容错

2. 收到通知的 Master 会通过分布式锁去“抢”到容错的操作,拿到锁的 Master 开始进行容错处理。

3. 容错的流程如下:

    3.1 通过已下线的 Worker 的地址和表示[正在运行]的状态数组获取需要容错的TaskInstance 列表。

    3.2 遍历列表对每个 TaskInstance 进行处理:

         3.2.1 判断这个 TaskInstance 是否需要容错,因为 Worker 宕机以后有可能被 Monitor 重启动成功,那么 Master 会继续给它分配任务,所以只有老 Worker 上正在运行的 TaskInstance 需要容错,【3.1】里面拿到的需要容错的TaskInstance 列表可能会存在新 Worker 所执行的任务

        3.2.2 检查 Task 是否存在 YarnApplicationId,如果存在的话就把 Yarn 任务Kill 掉

        3.2.3 将 TaskInstance 的状态更新为 NEED_FAULT_TOLERANCE,更新到数据库里面

Master的任务调度处理如下

在 MasterExecThread 这个线程里面如果检测到任务的状态为 NEED_FAULT_TOLERANCE,会进行 Alert,同时会将任务放到 readyToSubmitTaskList,重新分发给 Worker 去运行

以上就是我对 DolphinScheduler 的 Worker 容错处理的分析,欢迎大家指正

【相关阅读】

DolphinScheduler 源码剖析之 Master 容错处理流程

预告

为了更好的可扩展性和性能,DolphinScheduler 的重构讨论将于本周五晚19:00 开始,欢迎感兴趣的伙伴参与

 

您知道么?

 

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括文档、翻译、答疑、测试、代码、会议分享等,此外也极其欢迎各种实践文章,DolphinScheduler开源社区非常期待您的参与。

贡献第一个PR(文档、代码) 我们也希望是简单的,试想如果是一个新人一上来就贡献1个改了几十个文件的 PR 将会对参与 review 的伙伴的心理造成多大的摧残,????

文档github地址:https://github.com/apache/incubator-dolphinscheduler-website

当然如果您酷爱coding,社区也是非常欢迎“show me the code"的。

 

戳原文,立刻奔向 

DolphinScheduler 的 github 仓库一起玩耍,来个 star 先收藏也是好的
posted @   海豚调度  阅读(397)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
点击右上角即可分享
微信分享提示