一种流任务和批任务一体化的分布式任务调度方法及系统技术方案

技术编号:35190876 阅读:21 留言:0更新日期:2022-10-12 18:09
本发明专利技术公开了一种流任务和批任务一体化的分布式任务调度方法,包括:Master节点和Worker节点注册;主和备Master孵化任务,分发任务,Master节点孵化出具体实例和任务实例,然后根据任务依赖关系,依次将任务实例分发给Worker节点;Worker节点收到消息后,将任务进行分类,通过本地任务线程池和远端任务线程池进行管理;当远端任务提交后,将远端任务转移到任务状态监测队列,从而释放任务提交线程,提升任务提交的并行度;在状态检查流程中,采用任务定时汇报机制,另外使用少量线程扫描防任务突发故障而来不及汇报状态情况。本发明专利技术不断优化任务状态检查机制,降低了资源的消耗,实现对流任务与批任务的统一化有效管理。实现对流任务与批任务的统一化有效管理。实现对流任务与批任务的统一化有效管理。

【技术实现步骤摘要】
一种流任务和批任务一体化的分布式任务调度方法及系统


[0001]本专利技术属于大数据
,尤其涉及一种流任务和批任务一体化的分布式任务调度方法及系统。

技术介绍

[0002]在调度系统中,主要作用是定时,准确,高效触发任务启动,并且跟踪状态,直到结束,在大数据任务体系里,任务大致可以分为两类实时任务(流任务),离线任务(批任务)。大数据主流引擎如Spark和Flink都提供了流任务和批任务的能力。离线任务:也称为批任务,一般在有限的时间内完成,对资源持有时间有限,通常不会超过小时级。实时任务:也称为流任务,任务会长时间运行,甚至一直运行,对资源也会一直持有。
[0003]不管是流任务和还是批任务,本质是处理数据,调度系统很重要的一个功能是有序的管理数据处理任务,比如常见的ETL(Extract

Transform

Load)任务,一定是先完成抽取数据,再进行业务处理,最后导出数据。而在现有的开源和公开的调度系统中,一般会将离线调度系统和实时任务管理系统分开管理,这个是由两种任务形态所决定的。
[0004]在现有开源的主流离线调度系统架构中,比如DolphinScheduler,XXL

job,Quartz等任务,任务执行流程大致流程如图1,任务孵化提交实例后,交给线程池处理,线程池里的线程获取任务,初始化任务,运行任务,并提交任务给yarn,之后跟踪任务状态,直到正常结束或异常结束。线程监控了整个任务的状态。
[0005]对于实时任务而言,如果任务长期运行在调度系统中,该任务持有的线程将长期无法释放,任务越多,占用越多,最后消耗殆尽,导致后续任务无法执行,最后可能导致集群故障。目前现有开源的架构和公开的调度架构体系里,没有将离线和实时统一管理的架构。

技术实现思路

[0006]实际上,在处理数据方面,流任务和批任务没有本质的区别,有鉴于此,本专利技术提出了一种分布式的流批一体的调度系统,和一种基于时间规则的方式,将流任务和批任务建立完整的依赖关系方式,实现了一种任务统一管理,资源的统一分配,权限的统一管控的流任务和批任务调度系统。
[0007]本专利技术第一方面公开的一种流任务和批任务一体化的分布式任务调度方法,包括以下步骤:
[0008]系统启动时Master节点和Worker向Zookeeper进行注册,Master节点之间通过Zookeeper选出主Master;
[0009]主和备Master孵化任务,分发任务,用户创建DAG后,Master节点将DAG孵化出具体DAG实例和任务实例,然后根据任务依赖关系,依次将任务实例分发给Worker节点;
[0010]Worker节点收到消息后,将任务进行分类,通过本地任务线程池和远端任务线程池进行管理;
[0011]当远端任务提交后,将远端任务转移到任务状态监测队列,从而释放任务提交线
程,提升任务提交的并行度;
[0012]在状态检查流程中,采用定时扫描机制,共用少量线程完成大量任务的检查。
[0013]进一步的,在任务中启动一个线程,定时向Worker汇报一次状态,从而将长时间的任务状态监控过程由一个线程和基于该线程的定时扫描,转化为队列里的一条记录和周期性消息。
[0014]进一步的,所述任务包括Yarn的Spark任务或Flink任务,或Mapreduce任务。
[0015]进一步的,Yarn集群故障情况下,Worker节点如果多个周期未收到任务状态消息,进行一次扫描,判断任务的状态。
[0016]进一步的,将流任务和批任务进行统一管理后,批任务持续探测检查流任务的数据处理时间,达到特定条件时触发批任务的调度。
[0017]进一步的,当流任务基于时间分区处理数据时,所述特定条件包括:下一个分区已经生成且当前分区多个周期内,数据未发生变化。
[0018]进一步的,当流任务不是基于时间分区处理数据时,在定制的算子里,周期性将当前处理的数据时间位置写入数据库,批任务的时间探测算子通过这个数据时间来判断Flink的业务处理时间,触发批任务的运行。
[0019]进一步的,所述数据时间包括流的事件时间(EventTime)或者处理时间(ProcessTime)时间。
[0020]本专利技术第二方面公开的一种流任务和批任务一体化的分布式任务调度系统,包括:
[0021]注册模块:系统启动时Master节点和Worker向Zookeeper进行注册,Master节点之间通过Zookeeper选出主Master;
[0022]分发模块:主和备Master孵化任务,分发任务,用户创建DAG后,Master节点将DAG孵化出具体DAG实例和任务实例,然后根据任务依赖关系,依次将任务实例分发给Worker节点;
[0023]分类模块:Worker节点收到消息后,将任务进行分类,通过本地任务线程池和远端任务线程池进行管理;
[0024]线程释放模块:当远端任务提交后,将远端任务转移到任务状态监测队列,从而释放任务提交线程,提升任务提交的并行度;
[0025]状态检查模块:在状态检查流程中,采用主动汇报模式和防故障定时机制,共用少量线程完成大量任务的检查。
[0026]本专利技术的有益效果如下:
[0027]提供一套分布式调度架构,在现有的调度流程和分布式架构上,将远端任务转移到任务状态监测队列,从而释放任务提交线程,提升任务提交的并行度,保障调度的稳定运行。
[0028]提供一种支持流任务和批任务一体化的处理方式,同时,通过优化,对于离线任务本身也做了极大性能提升。
[0029]在保证流任务和批任务一体化基础上,提供一种将实时任务和离线任务建立依赖的方式,让实时任务和离线任务真正融合一体。
附图说明
[0030]图1现有的任务的执行方式示意图;
[0031]图2现有的调度任务专有名称图;
[0032]图3现有的数据引擎的分布式架构图;
[0033]图4现有的任务调度流程图;
[0034]图5本专利技术的流批一体的轮询查询状态机制;
[0035]图6本专利技术的流批一体的主动汇报状态机制;
[0036]图7本专利技术的流批建立依赖的方式。
具体实施方式
[0037]下面结合附图对本专利技术作进一步的说明,但不以任何方式对本专利技术加以限制,基于本专利技术教导所作的任何变换或替换,均属于本专利技术的保护范围。
[0038]本专利技术首先介绍现有的大数据分布式调度架构,参考图2,
[0039]算子:指某一相同功能的抽象化,比如HTTP算子,主要完成HTTP的调用功能。
[0040]任务:是将算子配上特点的业务,比如通过HTTP算子配上特定的URL获取页面的结果。
[0041]任务依赖:任务之间有先后的执行关系,比如图2中任务2依赖任务1,任务1完成后,才能开始运行任务2。<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种流任务和批任务一体化的分布式任务调度方法,其特征在于,所述调度方法包括以下步骤:系统启动时Master节点和Worker向Zookeeper进行注册,Master节点之间通过Zookeeper选出主Master;主和备Master孵化任务,分发任务,用户创建DAG后,Master节点将DAG孵化出具体DAG实例和任务实例,然后根据任务依赖关系,依次将任务实例分发给Worker节点;Worker节点收到消息后,将任务进行分类,通过本地任务线程池和远端任务线程池进行管理;当远端任务提交后,将远端任务转移到任务状态监测队列,从而释放任务提交线程,提升任务提交的并行度;在状态检查流程中,采用主动汇报模式和防故障定时机制,共用少量线程完成大量任务的检查。2.根据权利要求1所述的流任务和批任务一体化的分布式任务调度方法,其特征在于,在任务中启动一个线程,定时向Worker汇报一次状态,相比开源的基于线程任务监控机制,将长时间的任务状态监控过程由一个线程和基于该线程的定时扫描,转化为队列里的一条记录和周期性消息。3.根据权利要求1所述的流任务和批任务一体化的分布式任务调度方法,其特征在于,所述任务包括Yarn的Spark任务或Flink任务,或Mapreduce任务。4.根据权利要求1所述的流任务和批任务一体化的分布式任务调度方法,其特征在于,Yarn集群故障情况下,Worker节点如果多个周期未收到任务状态消息,进行一次扫描,判断任务的状态。5.根据权利要求1所述的流任务和批任务一体化的分布式任务调度方法,其特征在于,将流任务和批任务进行统一管理后,批任...

【专利技术属性】
技术研发人员:陈奉刚林庭毅管贤春屈军贺年春
申请(专利权)人:湖南兴盛优选电子商务有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1