今天给大家带来的分享是 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 先收藏也是好的

Apache DolphinScheduler 源码剖析之 Worker 容错处理流程的更多相关文章

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

    点击上方蓝字关注 Apache DolphinScheduler Apache DolphinScheduler(incubating),简称"DS", 中文名 "海豚调 ...

  2. Apache Spark源码剖析

    Apache Spark源码剖析(全面系统介绍Spark源码,提供分析源码的实用技巧和合理的阅读顺序,充分了解Spark的设计思想和运行机理) 许鹏 著   ISBN 978-7-121-25420- ...

  3. 《Apache Spark源码剖析》

    Spark Contributor,Databricks工程师连城,华为大数据平台开发部部长陈亮,网易杭州研究院副院长汪源,TalkingData首席数据科学家张夏天联袂力荐1.本书全面.系统地介绍了 ...

  4. 07 flask源码剖析之用户请求过来流程

    07 Flask源码之:用户请求过来流程 目录 07 Flask源码之:用户请求过来流程 1.创建ctx = RequestContext对象 2. 创建app_ctx = AppContext对象 ...

  5. Apache Kafka 源码剖析

    Getting Start 下载 http://kafka.apache.org/ 优点和应用场景 Kafka消息驱动,符合发布-订阅模式,优点和应用范围都共通 发布-订阅模式优点 解耦合 : 两个应 ...

  6. flask源码剖析系列(系列目录)

    flask源码剖析系列(系列目录) 01 flask源码剖析之werkzurg 了解wsgi 02 flask源码剖析之flask快速使用 03 flask源码剖析之threading.local和高 ...

  7. [Spark内核] 第32课:Spark Worker原理和源码剖析解密:Worker工作流程图、Worker启动Driver源码解密、Worker启动Executor源码解密等

    本課主題 Spark Worker 原理 Worker 启动 Driver 源码鉴赏 Worker 启动 Executor 源码鉴赏 Worker 与 Master 的交互关系 [引言部份:你希望读者 ...

  8. Spark Worker原理和源码剖析解密:Worker工作流程图、Worker启动Driver源码解密、Worker启动Executor源码解密等

    本课主题 Spark Worker 原理 Worker 启动 Driver 源码鉴赏 Worker 启动 Executor 源码鉴赏 Worker 与 Master 的交互关系 Spark Worke ...

  9. (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)

    本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...

随机推荐

  1. 20212115 实验三 《python程序设计》实验报告

    实验报告 20212115<python程序设计>实验三报告 课程:<Python程序设计>班级: 2121姓名: 朱时鸿学号:20212115实验教师:王志强老师实验日期:2 ...

  2. CF1601F Two Sorts

    CF1601F Two Sorts 给定 \(n\),将 \(1\sim n\) 按照字典序排序,\(a_i\) 表示第 \(i\) 小的数,求: \[\left(\sum_{i=1}^{n} ((i ...

  3. DataX异构数据源离线同步工具json文件配置说明

    DataX 是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳定高效的数据同步功能 ...

  4. Dev C++编写C/C++程序 出现[Error] ld returned 1 exit status报错分析及解决

    debug系列第一弹,不知道大家写程序的时候是不是都遇到过如题的报错. 我本人是经常遇到这行熟悉的令人不知所措的报错,可能是我太笨了 有时候百度无果也差不到原因,那就汇总一下目前我遇到的情况吧--持续 ...

  5. ssh-基于ssh的文件传输

    scp 基于ssh做Linux主机间的文件传输     scp  文件路径  用户名@被传输的主机名/IP:文件要存放的路径     scp  /etc/fstab  root@10.0.0.2:/t ...

  6. java常见的面试题(一)

    1.Collection 和 Collections 有什么区别? Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对象进行基本操作的通用接口方法.Collection接口 ...

  7. Codeforces Round #792 (Div. 1 + Div. 2) A-E

    Codeforces Round #792 (Div. 1 + Div. 2) A-E A 题目 https://codeforces.com/contest/1684/problem/A 题解 思路 ...

  8. 北京市行政村边界shp数据/北京市乡镇边界/北京市土地利用分类数据/北京市气象数据/降雨量分布数据/太阳辐射数据

     数据下载链接:数据下载链接​ 北京是一座有着三千多年历史的古都,在不同的朝代有着不同的称谓,大致算起来有二十多个别称.北京地势西北高.东南低.西部.北部和东北部三面环山,东南部是一片缓缓向渤海倾斜的 ...

  9. JTable和MVC设计模式

    JTable: 用JTable类可以以表格的形式显示和编辑数据 . JTable类的对象并不存储数据,它只是数据的表现 data MVC ~数据,表现和控制三者分离,各负其责 ~M=Model(模型) ...

  10. 如何用Python实现配置热加载?

    背景 由于最近工作需求,需要在已有项目添加一个新功能,实现配置热加载的功能.所谓的配置热加载,也就是说当服务收到配置更新消息之后,我们不用重启服务就可以使用最新的配置去执行任务. 如何实现 下面我分别 ...