一种分布式ETL主调度器竞争的方法和装置与流程

文档序号:37548356发布日期:2024-04-08 13:54阅读:11来源:国知局
一种分布式ETL主调度器竞争的方法和装置与流程

本发明涉及数据库领域,特别是涉及一种分布式etl主调度器竞争的方法和装置。


背景技术:

1、抽取-转换-装载(extract,transform,load,简写为etl)是数据处理和构建数据仓库的一个重要工具软件,它完成异构数据源的由元数据库抽取、对数据进行清洗转换、加载至目的数据库的过程。传统的etl一般是把流程发布到一个集中的etl服务器节点上运行,所有的流程或流程内组件的运行采用多线程机制,再多的流程也只能在一个单一节点运行,并且一个大数据的处理流程,也无法提高数据处理的性能。

2、基于传统集中式etl的缺点,分布式etl脱颖而出。分布式etl一般由一个或多个充当管理者角色的节点来管理系统中的节点,一个或多个节点执行etl流程的节点组成,充当管理者角色的节点称为调度器,执行etl流程的节点称为执行器。调度器分发etl流程到执行器,由执行器运行etl流程。与传统单机etl最大不同,分布式etl必须考虑到各个节点的故障容错处理。比如,调度器作为整个系统的任务分配调度者,一旦宕机,必须有另外的节点接管调度器角色;某个执行器故障了,调度器不能再调度流程到该执行器运行。为了实现容错,必须有一套稳定的节点管理方案,确保分布式etl环境中,任一节点宕机,不影响整个系统的运行以及监控。调度器虽然不运行具体的etl流程,但是在整个分布式系统中的etl流程调度以及监控、资源管理等方面起着至关重要的作用。一个稳定可靠的分布式etl系统必须启用多调度器机制,也就是一个主调度器,一个或多个备用调度器。由于系统中只允许存在一个主调度器,多个调度器之间的主调度器竞争,成为系统是否稳定的关键点、关键技术。

3、鉴于此,如何克服现有技术所存在的缺陷,解决现有的主调度器竞争方式较为复杂的现象,是本技术领域待解决的问题。


技术实现思路

1、针对现有技术的以上缺陷或改进需求,本发明解决了现有的主调度器竞争方式较为复杂的问题。

2、本发明实施例采用如下技术方案:

3、第一方面,本发明提供了一种分布式etl主调度器竞争的方法,具体为:在当前调度器启动时,和/或,在当前调度器尝试切换为主调度器时,当前调度器在元数据库中创建主调度器竞争表,以主调度器竞争表作为不同调度器间的分布式互斥锁;当前调度器成功创建主调度器竞争表,获取分布式互斥锁后,根据当前调度器的信息和元数据库中存储的已经存在的主调度器信息确定当前调度器是否能够设置为主调度器。

4、优选的,所述当前调度器在元数据库中创建主调度器竞争表,具体包括:当前调度器申请创建主调度器竞争表成功时,获取到分布式互斥锁后,如果元数据库中存储的调度器信息无主调度器时,当前调度器成为主调度器,同时更新到元数据库存储的调度器信息中。

5、优选的,所述当前调度器在元数据库中创建主调度器竞争表,还包括:若当前调度器不能成功创建主调度器竞争表,按照指定休眠周期将当前调度器进行休眠,并在每个周期的休眠结束再次尝试创建主调度器竞争表,直至主调度器竞争表创建成功,获取到分布式互斥锁。

6、优选的,所述当前调度器的信息包括id、主机地址和端口号,所述根据当前调度器的信息和元数据库中存储的已经存在的主调度器信息确定当前调度器是否能够设置为主调度器,具体包括:若当前调度器的id和已存在的主调度器的id一致、当前调度器的主机地址和已存在的主调度器的主机地址一致,且当前调度器的端口号和已存在的主调度器的端口号一致,将当前调度器设置为主调度器,将主调度器的信息更新为当前调度器的信息;若当前调度器的主机地址和已存在的主调度器的主机地址不同,和/或当前调度器的端口号和已存在的主调度器的端口号不同,判断已存在的主调度器的运行状态,根据运行状态对主调度器进行设置。

7、优选的,所述判断已存在的主调度器的运行状态,根据运行状态对主调度器进行设置,具体包括:向已存在的主调度器发送至少一次网络响应请求,判断已存在的主调度器是否能进行正常响应;若不能正常响应,将当前调度器设置为主调度器,将主调度器信息更新为当前调度器的信息;若能够正常响应,且当前调度器的id和已存在的主调度器的id相同,修改当前调度器的id后重新进行主调度器竞争;若能够正常响应,且当前调度器的id和已存在的主调度器的id不同,将当前调度器作为备用调度器,不更新已存在的主调度器的信息。

8、优选的,所述在当前调度器启动时,还包括:当前调度器分布式上锁成功后,在指定的主机地址和端口号进行服务监听,以便其它节点能够访问当前调度器。

9、优选的,所述根据当前调度器的信息和元数据库中存储的已经存在的主调度器信息确定当前调度器是否能够设置为主调度器之后,还包括:删除当前调度器创建的调度竞争表,以释放分布式互斥锁。

10、优选的,元数据库中还包括服务表,所述根据当前调度器的信息和运元数据库中存储的已经存在的主调度器信息确定当前调度器是否能够设置为主调度器之后,还包括:主调度器启动时,在元数据库的服务表中插入或更新自身的信息;非主调度器启动时,向主调度器注册自身,主调度器根据节点注册时的信息,在服务表中插入或更新相应节点的信息;节点开启节点假死故障检测线程,以系统元数据库为中心,假死故障检测线程根据收到的接收服务表中记录的主调度器与非主调度器信息,接收每个节点的心跳异常通知,并恢复存在网络故障的节点正常心跳。

11、优选的,所述根据当前调度器的信息和元数据库中存储的已经存在的主调度器信息确定当前调度器是否能够设置为主调度器之后,还包括:主调度器将流程调度至相应的执行器,流程运行开始或结束时,执行器将流程的运行状态通知主调度器;主调度器根据接收到的运行状态缓存相应的运行实例,并在元数据库中生成相应的运行日志,使用运行日志缓存每个流程的信息,以及不同流程的父子关系,并获取与流程运行状态一致的监控信息;当主调度器检测到执行器故障时,通过主调度器缓存的运行实例处理执行器中的流程,使处理后的流程运行状态与监控信息一致;当主调度器重启或主调度器切换时,通过流程运行日志复活所有执行器中正在运行流程实例,使新的主调度器管理的所有流程运行实例与故障之前的主调度器完全一致。

12、另一方面,本发明提供了一种分布式etl主调度器竞争的装置,具体为:包括至少一个处理器和存储器,至少一个处理器和存储器之间通过数据总线连接,存储器存储能被至少一个处理器执行的指令,指令在被处理器执行后,用于完成第一方面中的分布式etl主调度器竞争的方法。

13、与现有技术相比,本发明的有益效果在于:由每个参与竞争的调度器在元数据库中创建分布式互斥的调度竞争表,通过调度竞争表实现主调度器的分布式上锁,从而简单有效的完成主调度器的竞争,为分布式数据库的etl过程快速配置可用的主调度器,避免分布式etl场景下的调度冲突。



技术特征:

1.一种分布式etl主调度器竞争的方法,其特征在于,包括:

2.根据权利要求1所述的分布式etl主调度器竞争的方法,其特征在于,所述当前调度器在元数据库中创建主调度器竞争表,具体包括:

3.根据权利要求1所述的分布式etl主调度器竞争的方法,其特征在于,所述当前调度器在元数据库中创建主调度器竞争表,还包括:

4.根据权利要求1所述的分布式etl主调度器竞争的方法,其特征在于,所述当前调度器的信息包括id、主机地址和端口号,所述根据当前调度器的信息和元数据库中存储的已经存在的主调度器信息确定当前调度器是否能够设置为主调度器,具体包括:

5.根据权利要求4所述的分布式etl主调度器竞争的方法,其特征在于,所述判断已存在的主调度器的运行状态,根据运行状态对主调度器进行设置,具体包括:

6.根据权利要求1所述的分布式etl主调度器竞争的方法,其特征在于,所述在当前调度器启动时,还包括:

7.根据权利要求1所述的分布式etl主调度器竞争的方法,其特征在于,所述根据当前调度器的信息和元数据库中存储的已经存在的主调度器信息确定当前调度器是否能够设置为主调度器之后,还包括:

8.根据权利要求1所述的分布式etl主调度器竞争的方法,其特征在于,元数据库中还包括服务表,所述根据当前调度器的信息和运元数据库中存储的已经存在的主调度器信息确定当前调度器是否能够设置为主调度器之后,还包括:

9.根据权利要求1所述的分布式etl主调度器竞争的方法,其特征在于,所述根据当前调度器的信息和元数据库中存储的已经存在的主调度器信息确定当前调度器是否能够设置为主调度器之后,还包括:

10.一种分布式etl主调度器竞争的装置,其特征在于:


技术总结
本发明涉及数据库领域,特别是涉及一种分布式ETL主调度器竞争的方法和装置。主要包括:在当前调度器启动时,和/或,在当前调度器尝试切换为主调度器时,当前调度器在元数据库中创建主调度器竞争表,以主调度器竞争表作为不同调度器间的分布式互斥锁;当前调度器成功创建主调度器竞争表,获取分布式互斥锁后,根据当前调度器的信息和元数据库中存储的已经存在的主调度器信息确定当前调度器是否能够设置为主调度器。本发明可以通过主调度器竞争表实现主调度器的分布式上锁,从而简单有效的完成主调度器的竞争,为分布式数据库的ETL过程快速配置可用的主调度器,避免分布式ETL场景下的调度冲突。

技术研发人员:高东升,梅纲,胡高坤
受保护的技术使用者:武汉达梦数据库股份有限公司
技术研发日:
技术公布日:2024/4/7
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1