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

点击上方蓝字关注 Apache DolphinScheduler

Apache DolphinScheduler(incubating),简称”DS”, 中文名 “海豚调度”(海豚聪明、人性化,又左右脑可互相换班,终生不用睡觉)。DolphinScheduler 正在像它的名字一样,努力成为一个“开箱即用”的灵活易用的大数据任务调度系统。

官网地址:https://dolphinscheduler.apache.org/

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

Master 容错流程是这样的

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

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

3.容错的流程如下:

    3.1 通过已下线的Master的地址和正在运行的工作流状态数组获取需要容错的ProcessInstance列表,

    3.2 遍历列表对每个工作流进行处理:

        3.2.1 将工作流的Host(也就是由哪个Master负责调度)置为空,更新到数据库里面

        3.2.2 构造RECOVER_TOLERANCE_FAULT_PROCESS类型的Command插入到Command表中

Master 调度工作流的基础流程

在 MasterSchedulerService 这个线程里面会尝试获取分布式锁,拿到锁以后会去数据库里面拿到一条 Command 去执行,如果容错 Command 成功插入到表里了就会在后面的操作中被任意一个 Master 拿到并进行处理。

以上就是我对 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 先收藏也是好的~
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于DolphinScheduler源码分析,我可以给你一些大致的指导。DolphinScheduler是一款开源的分布式任务调度系统,主要用于大数据领域的任务调度和数据处理。它采用了分布式架构,支持高可用性和高可扩展性。 首先,你可以从DolphinScheduler的GitHub仓库中获取源代码:https://github.com/apache/incubator-dolphinscheduler源码中,你可以先从入口开始分析,主要涉及到的类是`org.apache.dolphinscheduler.server.master.MasterServerApplication`和`org.apache.dolphinscheduler.server.worker.WorkerServerApplication`,它们分别是Master节点和Worker节点的入口。 从Master节点入口开始,你可以深入了解Master节点的整体架构和实现。一些关键的类包括`org.apache.dolphinscheduler.server.master.MasterSchedulerService`、`org.apache.dolphinscheduler.server.master.runner.MasterSchedulerThread`和`org.apache.dolphinscheduler.server.master.cache.ScheduleService`等。 在Worker节点方面,你可以关注`org.apache.dolphinscheduler.server.worker.runner.WorkerManager`、`org.apache.dolphinscheduler.server.worker.runner.WorkerExecProcessor`和`org.apache.dolphinscheduler.server.worker.cache.LocalTaskCacheManager`等类,它们负责Worker节点的任务执行和管理。 此外,还有一些其他重要的模块需要进行源码分析,比如任务调度算法、任务执行环境配置、任务依赖处理、日志管理等。 在进行源码分析时,你可以结合官方提供的文档和注释,以及各个类和方法的调用关系来理清思路。可以通过IDE的调试功能和日志输出来帮助你更好地理解源码的执行流程和逻辑。 总体来说,DolphinScheduler源码分析需要一定的时间和精力,建议你先对整体架构和关键模块有一个整体的了解,然后再深入到具体的实现细节。希望这些信息对你有所帮助,祝你顺利进行源码分析!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值