宕机了?!DolphinScheduler 高可用和 Failover 机制关键时刻保命

ApacheDolphinScheduler是一个分布式工作流编排调度系统,其高可用性通过冗余组件和故障转移实现。API-Server和Worker可以通过增加实例实现负载均衡,Master则通过分片策略和主备或分布式锁机制保证高可用。当节点宕机时,Master会监控并执行故障转移,确保系统稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

file

高可用性是 Apache DolphinScheduler 的特性之一。它通过冗余来避免单点问题,所有组件天然支持横向扩容;但仅仅保证了冗余还不够,当系统中有节点宕机时,还需要有故障转移机制能够自动将宕机节点正在处理的工作转移到新节点上执行,从而实现高可用。

01 DolphinScheduler架构介绍

Apache DolphinScheduler是一个分布式易扩展的工作流编排调度系统。其核心架构主要由3部分组成:APIServer, Master, Worker。

其中API-Server负责接收所有的用户操作请求,Master负责工作流的编排和调度,Worker负责工作流中任务的执行。整个系统通过注册中信做服务发现,通过数据库持久化元数据。 file

一个工作流执行的生命周期如下:

  1. 在API-Server中创建,并将元数据持久化到DB中。
  2. 通过手动点击或定时执行生成一个触发工作流执行的Command写入DB。
  3. Master消费DB中的Command,开始执行工作流,并将工作流中的任务分发给Worker执行。
  4. 当整个工作流执行结束之后,Master结束工作流的执行。

02 DolphinScheduler集群高可用

分布式系统中必须要考虑的因素是系统整体的高可用(HA)。高可用指的是系统整体能够对外提供服务的时间占比很高,系统因为故障而无法提供服务的时间占比很短。

为了保证系统的高可用,架构的一个设计原则是通过冗余来避免出现单点问题。单点问题是指系统中某一任务组件只有单个实例,如果该实例出现了故障,那么会导致系统整体不可用。

Apache DolphinScheduler也是通过冗余来避免单点问题,在DolphinScheduler中,所有组件天然就支持横向扩容。

01 API-Server高可用

对于API-Server来说,由于API-Server是一个无状态服务,因此API-Server可以很容易的通过部署多台来保证高可用。在部署多台API-Server之后,只需要将他们注册在同一网关,即可一起对外提供服务。 file

02 Master高可用

Master作为DolphinScheduler中处理工作流的核心组件,其可用性直接关系到整个系统的稳定性。

由于Master并不像API-Server一样只是被动的接收外界的请求,Master会主动的消费数据库中的工作流,而一个工作流在某一时刻只能被一个Master处理,因此Master在横向扩容的时候需要考虑的问题更多。

一种比较简单的方案是采用active-standby的方式,即部署多台Master服务,但是只有一台处于active状态,对外工作,其他Master服务都处于standby状态,只有等active的Master宕机,standby状态的Master会重新选举出一台新的active Master对外工作。 file

这种方案实现起来简单,同时可以很好的解决Master单点问题,但是这种active-standby的架构同一时刻只能有一台Master进行工作,对于DolphinScheduler来说,由于Master需要处理工作流的调度,因此这会导致整个集群的工作流处理吞吐量上不去。

在DolphinScheduler中采用分片的方式对工作流元数据进行了预划分,具体来说对工作流产生的command根据id进行分片,将command均匀的分散到所有的Master,这样来达到所有Master都可以同时工作,并且不会互相影响。

file Master通过注册中心来感知集中其他Master的节点信息,由于当节点上下线的时候,Master的元数据变更通知到所有Master服务时间会不一致,因此通过数据库事务做了进一步的保障,保证同一个Command只会被处理一次。

03 Worker高可用

Worker作为DolphinScheduler中任务执行组件,其扩展比较容易,这是由于在设计上,Worker主要是被动的接收Master分发的任务,他不会主动去数据库中拉取任务。因此Woker只需要在横向扩容之后注册到注册中心即可,Master会通过注册中心感知到Worker的元数据变更。

03 DS中的Failover实现原理

仅仅保证了冗余还不够,当系统中有节点宕机时,还需要有故障转移机制能够自动将宕机节点正在处理的工作转移到新节点上执行。在DolphinScheduler中所有的故障转移工作都由Master完成。

Master会监听注册中心中所有Master和Worker的健康状况,一旦有节点下线,所有Master会收到该节点下线的事件,然后执行容错逻辑。

通过竞争分布式锁的方式来决定由谁来进行本次故障转移操作。

在执行容错操作时,会根据Master/Worker的类型不同执行不同的容错操作。对于发生Master容错时,所有存活的Master会通过竞争分布式锁的方式来决定由谁来进行本次故障转移操作,竞争到分布式锁的Master会去数据库中查询出宕机节点中正在运行的工作流实例生成容错请求。对于发生Worker容错,所有Master会找出当前内存中是否有正在该Worker上运行的任务,如果有那么触发任务容错逻辑。

一种特殊情况是,可能集群中所有Master都宕机了,那么此时没有Master可以执行容错逻辑,因此当后面集群恢复时,在Master启动的时候也会进行容错逻辑。

本文由 白鲸开源科技 提供发布支持!

### Hadoop集群的高可用性与容错机制实现方法 Hadoop集群通过多层次的设计确保其高可用容错能力。以下从NameNode HA、数据副本管理、故障切换流程及快照机制等方面详细说明其实现方式。 #### NameNode高可用架构 Hadoop采用Active/Standby模式的双NameNode结构来避免单点故障问题[^4]。主NameNode处理客户端请求并维护文件系统命名空间,而备用NameNode则保持同步状态以备切换之需。这种架构依赖于Quorum Journal Manager(QJM)或NFS作为共享存储介质,其中QJM是更推荐的选择因为它提供了轻量级的日志系统且不需要额外硬件支持[^4]。 核心组件包括: - **JournalNode集群**:通常由三个节点组成,负责存储编辑日志(Edits),保证元数据的一致性。 - **ZooKeeper集群**:用于协调故障检测主备切换过程中的锁机制以及通知状态变更[^4]。 - **ZKFC(ZooKeeper Failover Controller)**:每个NameNode上的守护进程,负责监控NameNode健康状况,并在必要时触发故障转移。 配置示例参数如下: ```xml <property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>namenode1.example.com:8020</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>namenode2.example.com:8020</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/path/to/journal/node/local/data</value> </property> ``` #### 数据副本管理与容错 HDFS利用复制技术实现数据容错能力,数据会被复制多份并存储在集群的不同节点上。如果某个机器宕机了,HDFS会在其他可用的机器创建数据的副本,从而保证该数据的副本数与集群设定一致[^3]。此外,后台线程会控制复制速度,并根据网络带宽限制参数动态调整复制优先级,确保不影响正常操作的同时完成再平衡任务[^4]。 #### 故障切换流程 自动故障转移流程依赖ZooKeeper提供的临时节点功能来维护活动NameNode的状态信息。当检测到当前活跃的NameNode出现异常时(如心跳丢失),ZKFC将发起一次新的选举过程选出新的活跃节点。这个过程中,ZooKeeper起到了关键作用——它不仅协调了整个故障转移过程中的锁机制,还负责通知所有相关方关于新旧NameNode角色的变化[^4]。 #### 快照与数据保护 HDFS提供了一种快速创建目录级别快照的功能,这些快照只记录差异内容而不影响正在进行的操作,因此可以瞬时生成。这对于防止意外删除或者回滚到特定版本非常有用。例如,在执行重要更新前创建一个快照,一旦发现问题可以直接恢复至该状态点。 通过上述措施,Hadoop构建了一个具备企业级可靠性的分布式计算平台,能够有效应对各种潜在的风险因素,保障业务连续性不受干扰。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值