一种分布式数据批处理系统和方法技术方案

技术编号:13623848 阅读:61 留言:0更新日期:2016-09-01 14:56
本发明专利技术公开了一种分布式数据批处理系统和方法,该系统和方法中,主节点中的任务扫描模块能够计算每个任务的耗重,并且主节点中的任务调度分发模块能够根据单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算得到分配到各个服务节点上的任务之间的特定任务耗重分配比例,该特定任务耗重分配比例能够使各个服务节点的资源得到充分利用并且使各个服务节点处理完分配到自身任务所消耗的时间基本一致。因此,按照该特定任务耗重分配比例将任务分配给各个服务节点,能够使得各个服务节点在处理这些任务时,其各自资源均得到充分利用,不会造成资源的浪费,并且各个服务节点能够基本上同一时间点处理完分配到自身的任务。

【技术实现步骤摘要】

本专利技术涉及数据处理领域,尤其涉及一种分布式数据批处理系统和方法
技术介绍
随着公司业务扩张和新应用系统的建设,企业信息系统的数据日益集中,且数据量迅猛增长,对于数据的批量加工,统计分析需求也层出不穷。另一方面,为保证银行等企业的正常营业,限定了批量的时间窗口。即为了保证正常营业,数据只能在规定的时间段内进行处理。这种现象称之为数据的潮汐特征。为了应对上述两个方面的问题,亟需一种处理速率较快的数据处理系统。现有技术中,为了加快数据处理系统的处理速率,可以提高服务器的配置,通过提升服务器的性能来加快批量处理速度。但是,当数据具有潮汐特征时,这种通过提升服务器的性能来加快批量处理速度的方式会造成服务器资源浪费,而且当存在更高级别的数据量并发要求时,仅仅通过提升配置有可能无法达到要求。此外,为了加快数据处理系统的处理速率,还可以通过增加服务器的数量来解决,即通过多台服务器同时处理大批量数据,以提高数据处理速率。现有技术中,当采用多台服务器同时处理大批量数据时,通常要按照一定的维度如地域将批量数据拆分为多个任务集,每台服务器处理固定的任务集,例如,国内有华东、华南、华北三个区域,然后就有三台服务器分别处理各自区域的任务集。不同服务器之间相互隔离,不进行通信,如此会导致在同一时刻服务器资源利用率无法同时达到最高,进而造成了资源的浪费。
技术实现思路
有鉴于此,本专利技术提供了一种分布式数据批处理系统和方法,以在提高数据处理效率的同时,不造成服务器资源的浪费。为了解决上述技术问题,本专利技术采用了如下技术方案:一种分布式数据批处理系统,包括:一个主节点和多个服务节点;其中,所述主节点包括:任务扫描模块和任务调度分发模块;所述任务扫描模块用于获取数据文件,将所述数据文件封装成任务;计算每个任务的耗重,将所述任务存储到主节点的任务缓冲队列,以在所述主节点的任务缓冲队列中形成批次任务列表;其中,所述耗重为一个任务在标准环境下处理所消耗的时间;所述标准环境为最接近生产环境配置的机器配置;所述任务调度分发模块用于从主节点的任务缓冲队列中获取单批次任务列表,根据所述单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算分配到各个服务节点的任务之间的特定任务耗重分配比例;将所述单批次任务列表中的任务按照所述特定任务耗重分配比例分配给各个服务节点;其中,所述特定任务耗重分配比例能够使各个服务节点的资源得到充分利用;所述服务节点包括任务接收模块和任务驱动调度模块;所述任务接收模块用于接收所述任务调度分发模块分发的单批次任务列表的任务,并将其存储到服务节点的任务缓冲队列;所述任务驱动调度模块用于从服务节点的任务缓冲队列中获取并处理分发到服务节点的单批次任务列表的任务。可选地,所述任务驱动调度模块包括分类模块、泳道驱动器管理模块、泳道驱动器、泳道集和任务线程池;所述分类模块用于按照特定组将所述单批次任务列表的任务分类,形成泳道列表,并将所述泳道列表提交到泳道驱动器管理模块;所述特定组为具有共性属性的任务构成的组,所述泳道为单批次任务列表中具有共性维度属性的任务集合;所述泳道驱动器管理模块用于将所述泳道列表添加到泳道集,并唤醒与泳道列表中的任务相关的泳道驱动器;所述泳道集用于管理多个泳道,提供最快的泳道定位和任务安全获取;所述与泳道列表中的任务相关泳道驱动器用于判断实时任务并行执行视图中的任务线程是否达到泳道驱动器的并行上限,如果是,清理空泳道,然后执行等待操作,如果否,执行以下驱动过程:A、B、C、D、E、F:A、判断泳道集内的预设泳道所属的特定组的线程数是否达到特定组的并
行上限,如果是,执行步骤B,如果否,执行步骤D;B、判断泳道集内是否还存在所述预设泳道的下一泳道,如果是,执行步骤C,如果否,清理空泳道,然后执行等待操作;C、将预设泳道更新为泳道集视图内的所述预设泳道的下一泳道,返回执行步骤A;D、将任务循环从预设泳道中取出,并提交到任务线程池;并将实时任务并行执行视图中的预设泳道所属的特定组的线程数和所述泳道驱动器的任务线程池的线程并行数加1,返回执行步骤A和所述与泳道列表中的任务相关的泳道驱动器判断实时任务并行执行视图中的任务线程池的线程是否达到泳道驱动器的并行上限;E、任务线程池对任务进行处理;F、当任务线程池将任务处理结束后,任务线程池将所述实时任务并行执行视图中的当前执行的特定组的线程数减1,并返回执行所述唤醒与泳道列表中的任务相关的泳道驱动器;其中,所述实时任务并行执行视图里包括当前执行的特定组数量以及每个当前执行的特定组的线程数;所述泳道集视图里包括属于同一个泳道集内的所有泳道,所述所有泳道在泳道集视图内按照进入泳道集的先后顺序排列。可选地,所述主节点还包括收集模块,所述收集模块用于收集和监控各服务节点的状态,形成服务节点状态视图和健康视图,所述服务节点状态视图和健康视图为任务调度分发提供依据;所述收集模块还用于维护服务节点状态视图和健康视图。可选地,所述主节点还包括服务节点故障处理模块,所述服务节点故障处理模块用于监控各服务节点的心跳和数据采集状态,当服务节点发生节点数据更新延迟或异常时,开始向该服务节点的端口发送检测信号,如果检测信号的响应信号在预设次数和/或预设时间段内未达标,将该服务节点视为故障服务节点,主节点开始接管该服务节点的任务列表。可选地,所述服务节点还包括:主节点状态监控模块,所述主节点状态监控模块用于实时监控主节点的状态,如果发现主节点的心跳异常,与主节点的
通信失败次数达到预设次数和/或通信失败时间达到预设时间段,则确定主节点发生故障,启动竞争主节点控制权程序,如果竞争成功则开始关闭服务节点功能模块,启动主节点功能模块。可选地,所述服务节点还包括:心跳和数据采集上报模块,用于按照第一预设周期采集自身服务节点的心跳,按照第二预设周期采集自身服务节点的应用数据,并上传至主节点。一种分布式数据批处理方法,所述方法基于的分布式数据批处理系统包括一个主节点和多个服务节点,所述主节点包括任务扫描模块和任务调度分发模块;所述服务节点包括任务接收模块和任务驱动调度模块;所述方法包括:任务扫描模块获取数据文件,将所述数据文件封装成任务;计算每个任务的耗重,将所述任务存储到主节点的任务缓冲队列,以在所述主节点的任务缓冲队列中形成批次任务列表;其中,所述耗重为一个任务在标准环境下处理所消耗的时间;所述标准环境为最接近生产环境配置的机器配置;任务调度分发模块从主节点的任务缓冲队列中获取单批次任务列表,根据所述单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算分配到各个服务节点的任务之间的特定任务耗重分配比例;将所述单批次任务列表中的任务按照所述特定任务耗重分配比例分配给各个服务节点;其中,所述特定任务耗重分配比例能够使各个服务节点的资源得到充分利用;任务接收模块接收所述任务调度分发模块分发的单批次任务列表的任务,并将其存储到服务节点的任务缓冲队列;任务驱动调度模块从服务节点的任务缓冲队列中获取并处理分发到服务节点的单批次任务列表的任务。可选地,所述任务驱动调度模块包括分类模块、泳道驱动器管理模块、泳道驱动器、泳道集和任务线程池;所述任务驱动调度模块从本文档来自技高网
...

【技术保护点】
一种分布式数据批处理系统,其特征在于,包括:一个主节点和多个服务节点;其中,所述主节点包括:任务扫描模块和任务调度分发模块;所述任务扫描模块用于获取数据文件,将所述数据文件封装成任务;计算每个任务的耗重,将所述任务存储到主节点的任务缓冲队列,以在所述主节点的任务缓冲队列中形成批次任务列表;其中,所述耗重为一个任务在标准环境下处理所消耗的时间;所述标准环境为最接近生产环境配置的机器配置;所述任务调度分发模块用于从主节点的任务缓冲队列中获取单批次任务列表,根据所述单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算分配到各个服务节点的任务之间的特定任务耗重分配比例;将所述单批次任务列表中的任务按照所述特定任务耗重分配比例分配给各个服务节点;其中,所述特定任务耗重分配比例能够使各个服务节点的资源得到充分利用;所述服务节点包括任务接收模块和任务驱动调度模块;所述任务接收模块用于接收所述任务调度分发模块分发的单批次任务列表的任务,并将其存储到服务节点的任务缓冲队列;所述任务驱动调度模块用于从服务节点的任务缓冲队列中获取并处理分发到服务节点的单批次任务列表的任务。

【技术特征摘要】
1.一种分布式数据批处理系统,其特征在于,包括:一个主节点和多个服务节点;其中,所述主节点包括:任务扫描模块和任务调度分发模块;所述任务扫描模块用于获取数据文件,将所述数据文件封装成任务;计算每个任务的耗重,将所述任务存储到主节点的任务缓冲队列,以在所述主节点的任务缓冲队列中形成批次任务列表;其中,所述耗重为一个任务在标准环境下处理所消耗的时间;所述标准环境为最接近生产环境配置的机器配置;所述任务调度分发模块用于从主节点的任务缓冲队列中获取单批次任务列表,根据所述单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算分配到各个服务节点的任务之间的特定任务耗重分配比例;将所述单批次任务列表中的任务按照所述特定任务耗重分配比例分配给各个服务节点;其中,所述特定任务耗重分配比例能够使各个服务节点的资源得到充分利用;所述服务节点包括任务接收模块和任务驱动调度模块;所述任务接收模块用于接收所述任务调度分发模块分发的单批次任务列表的任务,并将其存储到服务节点的任务缓冲队列;所述任务驱动调度模块用于从服务节点的任务缓冲队列中获取并处理分发到服务节点的单批次任务列表的任务。2.根据权利要求1所述的系统,其特征在于,所述任务驱动调度模块包括分类模块、泳道驱动器管理模块、泳道驱动器、泳道集和任务线程池;所述分类模块用于按照特定组将所述单批次任务列表的任务分类,形成泳道列表,并将所述泳道列表提交到泳道驱动器管理模块;所述特定组为具有共性属性的任务构成的组,所述泳道为单批次任务列表中具有共性维度属性的任务集合;所述泳道驱动器管理模块用于将所述泳道列表添加到泳道集,并唤醒与泳道列表中的任务相关的泳道驱动器;所述泳道集用于管理多个泳道,提供最快的泳道定位和任务安全获取;所述与泳道列表中的任务相关泳道驱动器用于判断实时任务并行执行视图中的任务线程是否达到泳道驱动器的并行上限,如果是,清理空泳道,然后
\t执行等待操作,如果否,执行以下驱动过程:A、B、C、D、E、F:A、判断泳道集内的预设泳道所属的特定组的线程数是否达到特定组的并行上限,如果是,执行步骤B,如果否,执行步骤D;B、判断泳道集内是否还存在所述预设泳道的下一泳道,如果是,执行步骤C,如果否,清理空泳道,然后执行等待操作;C、将预设泳道更新为泳道集视图内的所述预设泳道的下一泳道,返回执行步骤A;D、将任务循环从预设泳道中取出,并提交到任务线程池;并将实时任务并行执行视图中的预设泳道所属的特定组的线程数和所述泳道驱动器的任务线程池的线程并行数加1,返回执行步骤A和所述与泳道列表中的任务相关的泳道驱动器判断实时任务并行执行视图中的任务线程池的线程是否达到泳道驱动器的并行上限;E、任务线程池对任务进行处理;F、当任务线程池将任务处理结束后,任务线程池将所述实时任务并行执行视图中的当前执行的特定组的线程数减1,并返回执行所述唤醒与泳道列表中的任务相关的泳道驱动器;其中,所述实时任务并行执行视图里包括当前执行的特定组数量以及每个当前执行的特定组的线程数;所述泳道集视图里包括属于同一个泳道集内的所有泳道,所述所有泳道在泳道集视图内按照进入泳道集的先后顺序排列。3.根据权利要求1或2所述的系统,其特征在于,所述主节点还包括收集模块,所述收集模块用于收集和监控各服务节点的状态,形成服务节点状态视图和健康视图,所述服务节点状态视图和健康视图为任务调度分发提供依据;所述收集模块还用于维护服务节点状态视图和健康视图。4.根据权利要求1或2所述的系统,其特征在于,所述主节点还包括服务节点故障处理模块,所述服务节点故障处理模块用于监控各服务节点的心跳和数据采集状态,当服务节点发生节点数据更新延迟或异常时,开始向该服务节点的端口发送检测信号,如果检测信号的响应信号在预设次数和/或预设时
\t间段内未达标,将该服务节点视为故障服务节点,主节点开始接管该服务节点的任务列表。5.根据权利要求1或2所述的系统,其特征在于,所述服务节点还包括:主节点状态监控模块,所述主节点状态监控模块用于实时监控主节点的状态,如果发现主节点的心跳异常,与主节点的通信失败次数达到预设次数和/或通信失败时间达到预设时间段,则确定主节点发生故障,启动竞争主节点控制权程序,如果竞争成功则开始关闭服务节点功能模块,启动主节点功能模块。6.根据权利要求1或2所述的系统,其特征在于,所述服务节点还包括:心跳和数据采集上报模块,用于按照第一预设周期采集自身服务节点的心跳,按照第二预设周期采集自身服务节点的应用数据,并上传至主节点。7.一种分布式数据批处理方法,其特征在于,所述方法基于的分布式数...

【专利技术属性】
技术研发人员:罗焱学王宝义安莉
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:北京;11

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

1