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

文档序号:10552764阅读:1014来源:国知局
一种分布式数据批处理系统和方法
【专利摘要】本发明公开了一种分布式数据批处理系统和方法,该系统和方法中,主节点中的任务扫描模块能够计算每个任务的耗重,并且主节点中的任务调度分发模块能够根据单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算得到分配到各个服务节点上的任务之间的特定任务耗重分配比例,该特定任务耗重分配比例能够使各个服务节点的资源得到充分利用并且使各个服务节点处理完分配到自身任务所消耗的时间基本一致。因此,按照该特定任务耗重分配比例将任务分配给各个服务节点,能够使得各个服务节点在处理这些任务时,其各自资源均得到充分利用,不会造成资源的浪费,并且各个服务节点能够基本上同一时间点处理完分配到自身的任务。
【专利说明】
一种分布式数据批处理系统和方法
技术领域
[0001]本发明涉及数据处理领域,尤其涉及一种分布式数据批处理系统和方法。
【背景技术】
[0002]随着公司业务扩张和新应用系统的建设,企业信息系统的数据日益集中,且数据量迅猛增长,对于数据的批量加工,统计分析需求也层出不穷。另一方面,为保证银行等企业的正常营业,限定了批量的时间窗口。即为了保证正常营业,数据只能在规定的时间段内进行处理。这种现象称之为数据的潮汐特征。
[0003]为了应对上述两个方面的问题,亟需一种处理速率较快的数据处理系统。
[0004]现有技术中,为了加快数据处理系统的处理速率,可以提高服务器的配置,通过提升服务器的性能来加快批量处理速度。但是,当数据具有潮汐特征时,这种通过提升服务器的性能来加快批量处理速度的方式会造成服务器资源浪费,而且当存在更高级别的数据量并发要求时,仅仅通过提升配置有可能无法达到要求。
[0005]此外,为了加快数据处理系统的处理速率,还可以通过增加服务器的数量来解决,即通过多台服务器同时处理大批量数据,以提高数据处理速率。
[0006]现有技术中,当采用多台服务器同时处理大批量数据时,通常要按照一定的维度如地域将批量数据拆分为多个任务集,每台服务器处理固定的任务集,例如,国内有华东、华南、华北三个区域,然后就有三台服务器分别处理各自区域的任务集。不同服务器之间相互隔离,不进行通信,如此会导致在同一时刻服务器资源利用率无法同时达到最高,进而造成了资源的浪费。

【发明内容】

[0007]有鉴于此,本发明提供了一种分布式数据批处理系统和方法,以在提高数据处理效率的同时,不造成服务器资源的浪费。
[0008]为了解决上述技术问题,本发明采用了如下技术方案:
[0009]—种分布式数据批处理系统,包括:一个主节点和多个服务节点;
[0010]其中,所述主节点包括:任务扫描模块和任务调度分发模块;
[0011]所述任务扫描模块用于获取数据文件,将所述数据文件封装成任务;计算每个任务的耗重,将所述任务存储到主节点的任务缓冲队列,以在所述主节点的任务缓冲队列中形成批次任务列表;其中,所述耗重为一个任务在标准环境下处理所消耗的时间;所述标准环境为最接近生产环境配置的机器配置;
[0012]所述任务调度分发模块用于从主节点的任务缓冲队列中获取单批次任务列表,根据所述单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算分配到各个服务节点的任务之间的特定任务耗重分配比例;将所述单批次任务列表中的任务按照所述特定任务耗重分配比例分配给各个服务节点;其中,所述特定任务耗重分配比例能够使各个服务节点的资源得到充分利用;
[0013]所述服务节点包括任务接收模块和任务驱动调度模块;
[0014]所述任务接收模块用于接收所述任务调度分发模块分发的单批次任务列表的任务,并将其存储到服务节点的任务缓冲队列;
[0015]所述任务驱动调度模块用于从服务节点的任务缓冲队列中获取并处理分发到服务节点的单批次任务列表的任务。
[0016]可选地,所述任务驱动调度模块包括分类模块、泳道驱动器管理模块、泳道驱动器、泳道集和任务线程池;
[0017]所述分类模块用于按照特定组将所述单批次任务列表的任务分类,形成泳道列表,并将所述泳道列表提交到泳道驱动器管理模块;所述特定组为具有共性属性的任务构成的组,所述泳道为单批次任务列表中具有共性维度属性的任务集合;
[0018]所述泳道驱动器管理模块用于将所述泳道列表添加到泳道集,并唤醒与泳道列表中的任务相关的泳道驱动器;所述泳道集用于管理多个泳道,提供最快的泳道定位和任务安全获取;
[0019]所述与泳道列表中的任务相关泳道驱动器用于判断实时任务并行执行视图中的任务线程是否达到泳道驱动器的并行上限,如果是,清理空泳道,然后执行等待操作,如果否,执行以下驱动过程^、8、(:、04、?:
[0020]A、判断泳道集内的预设泳道所属的特定组的线程数是否达到特定组的并行上限,如果是,执行步骤B,如果否,执行步骤D ;
[0021]B、判断泳道集内是否还存在所述预设泳道的下一泳道,如果是,执行步骤C,如果否,清理空泳道,然后执行等待操作;
[0022]C、将预设泳道更新为泳道集视图内的所述预设泳道的下一泳道,返回执行步骤A;
[0023]D、将任务循环从预设泳道中取出,并提交到任务线程池;并将实时任务并行执行视图中的预设泳道所属的特定组的线程数和所述泳道驱动器的任务线程池的线程并行数加I,返回执行步骤A和所述与泳道列表中的任务相关的泳道驱动器判断实时任务并行执行视图中的任务线程池的线程是否达到泳道驱动器的并行上限;
[0024]E、任务线程池对任务进行处理;
[0025]F、当任务线程池将任务处理结束后,任务线程池将所述实时任务并行执行视图中的当前执行的特定组的线程数减I,并返回执行所述唤醒与泳道列表中的任务相关的泳道驱动器;
[0026]其中,所述实时任务并行执行视图里包括当前执行的特定组数量以及每个当前执行的特定组的线程数;
[0027]所述泳道集视图里包括属于同一个泳道集内的所有泳道,所述所有泳道在泳道集视图内按照进入泳道集的先后顺序排列。
[0028]可选地,所述主节点还包括收集模块,所述收集模块用于收集和监控各服务节点的状态,形成服务节点状态视图和健康视图,所述服务节点状态视图和健康视图为任务调度分发提供依据;
[0029]所述收集模块还用于维护服务节点状态视图和健康视图。
[0030]可选地,所述主节点还包括服务节点故障处理模块,所述服务节点故障处理模块用于监控各服务节点的心跳和数据采集状态,当服务节点发生节点数据更新延迟或异常时,开始向该服务节点的端口发送检测信号,如果检测信号的响应信号在预设次数和/或预设时间段内未达标,将该服务节点视为故障服务节点,主节点开始接管该服务节点的任务列表。
[0031]可选地,所述服务节点还包括:主节点状态监控模块,所述主节点状态监控模块用于实时监控主节点的状态,如果发现主节点的心跳异常,与主节点的通信失败次数达到预设次数和/或通信失败时间达到预设时间段,则确定主节点发生故障,启动竞争主节点控制权程序,如果竞争成功则开始关闭服务节点功能模块,启动主节点功能模块。
[0032]可选地,所述服务节点还包括:
[0033]心跳和数据采集上报模块,用于按照第一预设周期采集自身服务节点的心跳,按照第二预设周期采集自身服务节点的应用数据,并上传至主节点。
[0034]一种分布式数据批处理方法,所述方法基于的分布式数据批处理系统包括一个主节点和多个服务节点,所述主节点包括任务扫描模块和任务调度分发模块;所述服务节点包括任务接收模块和任务驱动调度模块;
[0035]所述方法包括:
[0036]任务扫描模块获取数据文件,将所述数据文件封装成任务;计算每个任务的耗重,将所述任务存储到主节点的任务缓冲队列,以在所述主节点的任务缓冲队列中形成批次任务列表;其中,所述耗重为一个任务在标准环境下处理所消耗的时间;所述标准环境为最接近生产环境配置的机器配置;
[0037]任务调度分发模块从主节点的任务缓冲队列中获取单批次任务列表,根据所述单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算分配到各个服务节点的任务之间的特定任务耗重分配比例;将所述单批次任务列表中的任务按照所述特定任务耗重分配比例分配给各个服务节点;其中,所述特定任务耗重分配比例能够使各个服务节点的资源得到充分利用;
[0038]任务接收模块接收所述任务调度分发模块分发的单批次任务列表的任务,并将其存储到服务节点的任务缓冲队列;
[0039]任务驱动调度模块从服务节点的任务缓冲队列中获取并处理分发到服务节点的单批次任务列表的任务。
[0040]可选地,所述任务驱动调度模块包括分类模块、泳道驱动器管理模块、泳道驱动器、泳道集和任务线程池;
[0041]所述任务驱动调度模块从服务节点的任务缓冲队列中获取并处理分发到服务节点的单批次任务列表的任务,具体包括:
[0042]所述分类模块按照特定组将所述单批次任务列表的任务分类,形成泳道列表,并将所述泳道列表提交到泳道驱动器管理模块;所述特定组为具有共性属性的任务构成的组,所述泳道为单批次任务列表中具有共性维度属性的任务集合;
[0043]所述泳道驱动器管理模块将所述泳道列表添加到泳道集,并唤醒与泳道列表中的任务相关的泳道驱动器;所述泳道集用于管理多个泳道,提供最快的泳道定位和任务安全获取;
[0044]所述与泳道列表中的任务相关泳道驱动器判断实时任务并行执行视图中的任务线程是否达到泳道驱动器的并行上限,如果是,清理空泳道,然后执行等待操作,如果否,执行以下驱动过程:A、B、C、D、E、F:
[0045]A、判断泳道集内的预设泳道所属的特定组的线程数是否达到特定组的并行上限,如果是,执行步骤B,如果否,执行步骤D ;
[0046]B、判断泳道集内是否还存在所述预设泳道的下一泳道,如果是,执行步骤C,如果否,清理空泳道,然后执行等待操作;
[0047]C、将预设泳道更新为泳道集视图内的所述预设泳道的下一泳道,返回执行步骤A;
[0048]D、将任务循环从预设泳道中取出,并提交到任务线程池;并将实时任务并行执行视图中的预设泳道所属的特定组的线程数和所述泳道驱动器的任务线程池的线程并行数加I,返回执行步骤A和所述与泳道列表中的任务相关的泳道驱动器判断实时任务并行执行视图中的任务线程池的线程是否达到泳道驱动器的并行上限;
[0049]E、任务线程池对任务进行处理;
[0050]F、当任务线程池将任务处理结束后,任务线程池将所述实时任务并行执行视图中的当前执行的特定组的线程数减I,并返回执行所述唤醒与泳道列表中的任务相关的泳道驱动器;
[0051]其中,所述实时任务并行执行视图里包括当前执行的特定组数量以及每个当前执行的特定组的线程数;
[0052]所述泳道集视图里包括属于同一个泳道集内的所有泳道,所述所有泳道在泳道集视图内按照进入泳道集的先后顺序排列。
[0053]可选地,所述主节点还包括收集模块,所述方法还包括:
[0054]所述收集模块收集和监控各服务节点的状态,形成服务节点状态视图和健康视图,所述服务节点状态视图和健康视图为任务调度分发提供依据;
[0055]所述收集模块还用于维护服务节点状态视图和健康视图。
[0056]可选地,所述主节点还包括服务节点故障处理模块,
[0057]所述方法还包括:
[0058]所述服务节点故障处理模块监控各服务节点的心跳和数据采集状态,当服务节点发生节点数据更新延迟或异常时,开始向该服务节点的端口发送检测信号,如果检测信号的响应信号在预设次数和/或预设时间段内未达标,将该服务节点视为故障服务节点,主节点开始接管该服务节点的任务列表。
[0059]可选地,所述服务节点还包括:主节点状态监控模块,
[0060]所述方法还包括:
[0061]所述主节点状态监控模块实时监控主节点的状态,如果发现主节点的心跳异常,与主节点的通信失败次数达到预设次数和/或通信失败时间达到预设时间段,则确定主节点发生故障,启动竞争主节点控制权程序,如果竞争成功则开始关闭服务节点功能模块,启动主节点功能模块。
[0062]可选地,所述服务节点还包括:心跳和数据采集上报模块,
[0063]所述方法还包括:
[0064]按照第一预设周期采集自身服务节点的心跳,按照第二预设周期采集自身服务节点的应用数据,并上传至主节点。
[0065]相较于现有技术,本发明具有以下有益效果:
[0066]本发明提供的分布式数据批处理系统和方法,主节点中的任务扫描模块能够计算每个任务的耗重,并且主节点中的任务调度分发模块能够根据单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算得到分配到各个服务节点上的任务之间的特定任务耗重分配比例,该特定任务耗重分配比例能够使各个服务节点的资源得到充分利用并且使各个服务节点处理完分配到自身任务所消耗的时间基本一致。如此,任务调度分发模块根据计算得到的特定任务耗重分配比例将单批次任务列表中的任务分配给各个服务节点后,由于特定任务耗重分配比例能够使得各个服务节点的资源得到充分利用,因此,按照该特定任务耗重分配比例将任务分配给各个服务节点,能够使得各个服务节点在处理这些任务时,其各自资源均得到充分利用,不会造成资源的浪费,并且各个服务节点能够基本上同一时间点处理完分配到自身的任务。
[0067]另外,本发明提供的分布式数据批处理系统为集群系统架构,其根据数据量可以很方便地增加或减少服务节点的数量,而且,本发明中的服务节点可以为普通电脑,所以,本发明提供的分布式数据批处理系统的成本较低,而且容易维护。
【附图说明】
[0068]为了清楚地理解本发明的【具体实施方式】,下面将描述本发明【具体实施方式】时用到的附图做一简要说明。显而易见地,这些附图仅是本发明的部分实施例,本领域技术人员在未付出创造性劳动的前提下,还可以获得其它附图。
[0069]图1是本发明实施例提供的分布式数据批处理系统的架构示意图;
[0070]图2是本发明实施例提供的主节点的结构示意图;
[0071 ]图3是本发明实施例提供的服务节点的结构示意图;
[0072]图4是本发明实施例提供的任务驱动调度模块结构示意图;
[0073]图5是本发明实施例提供的包括两个集群的分布式数据批处理系统架构示意图;
[0074]图6是本发明实施例提供的分布式数据批处理方法流程示意图;
[0075]图7是本发明实施例提供的步骤S609的一个具体实现方式流程示意图。
【具体实施方式】
[0076]为使本发明的目的、技术方案和技术效果更加清楚、完整,下面将结合附图对本发明的【具体实施方式】进行详细描述。
[0077]图1是本发明实施例提供的分布式数据批处理系统的架构示意图。如图1所示,该分布式数据批处理系统架构为集群系统架构,其物理结构包括一个主节点11和多个服务节点12,主节点11和服务节点12之间可以采用TCPIP协议或数据库DB13进行通信和数据采集共享。当采用TCPIP协议进行通信和数据采集共享时,服务节点12将数据通过TCPIP协议直接传输到主节点11上。
[0078]当采用数据库DB13进行通信和数据采集共享时,其具体实现方式如下:服务节点12将数据发送至数据库DBl3,主节点11从数据库DBl3中获取这些数据,如此实现主节点11和服务节点12的数据采集共享。
[0079]其中,各个服务节点12的配置可以不同,但在数据批处理过程中,需要依据服务节点本机硬件配置来设置应用的并行参数和服务参数,确保资源高效利用的同时不会过载。另外,在本发明提供的分布式数据批处理系统中,各个服务节点12可以并行处理任务。
[0080]需要说明的是,在本发明提供的处理系统中,主节点11和服务节点12均可以为普通计算机,所以,该处理系统的硬件成本较低。
[0081]在本发明实施例中,为了实现任务的调度分发,如图2所示,主节点11可以包括任务扫描模块111和任务调度分发模块112;
[0082]其中,任务扫描模块111用于访问数据文件系统(该数据文件系统可以为数据库),从中获取数据文件,其中,每个数据文件都有会计日、文本属性,任务扫描模块111在获取到数据文件后将该数据文件封装成任务,即将数据文件生成逻辑任务,并计算每个任务的耗重,计算完任务耗重后,将任务存储到主节点的任务缓冲队列,以在主节点的任务缓冲队列形成批次任务列表;需要说明的是,不同会计日的同名数据文件生成的任务的耗重可能不同。其中,批次任务列表中的任务可以为由任务扫描模块111在同一时刻获取到的数据文件生成的任务。
[0083]需要说明的是,在本发明实施例中,耗重为一个任务在标准环境下处理所消耗的时间。在计算耗重时,并非是要在某套具体标准环境下对某一个具体文件进行测试,而只是需要一个标准速率。因此,标准环境可以为最接近生产环境配置的机器配置。例如:首先对文件的所侧重的处理了解,如读,写,压缩,复制。对于1M以下的文件,在一个标准环境下进行10000次测试,取平均速率为1.5M/S,后续基于此速率计算7.5M的耗重就是5S。标准耗重速率并非是一个单一值,而是按照文件大小区间测算的一组值。
[0084]在本发明实施例中,可以基于服务节点的健康视图、文件大小、文件到达时间、文件优先级等多个因素计算每个任务的耗重。其中,文件到达时间是指文件传输到数据文件系统的时间。需要指出的是,任务耗重并非任务的优先级,而是该任务在标准环境下的运算耗时。而每个服务节点的资源不一致、并行度不一致,但是它们都有一个耗重速率,也就是每秒处理多少耗重,这个耗重速率在服务节点最开始是一个设置值,随着任务的处理情况而自我学习,保持在一个稳定区间,体现着这个服务节点的处理效率。
[0085]其中,服务节点的健康视图包括服务节点的硬件资源使用情况和任务队列长度。其中,服务节点的任务队列长度可以表示分发到该服务节点的任务数量。
[0086]需要说明的是,在本发明实施例中,主节点11和服务节点12可以通过数据库DB的方式实现数据的采集共享,如此服务节点12将其采集到的自身服务节点状态上传至数据库,主节点可以通过数据库DB收集各个服务节点的状态,形成服务节点状态视图和健康视图,为任务的调度提供依据。为了实现该功能,主节点11还可以包括收集模块113,该收集模块113用于收集和监控各服务节点的状态,形成服务节点状态视图和健康视图,所述服务节点状态视图和健康视图为任务调度分发提供依据,所述主节点还用于维护服务节点状态视图和健康视图。其中,服务节点状态视图包括该服务节点的任务列表、服务节点状态、任务处理情况和服务节点列表。在服务节点列表中有服务节点队列长度的描述。服务节点队列长度的描述为该服务节点上的任务数量描述。此外,主节点11还可以动态维护任务列表状态,实时更新结果,记录日志O
[0087]在本发明实施例中,任务调度分发模块112用于从主节点的任务缓冲队列中获取单批次任务列表,根据单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算分配到各个服务节点的任务之间的特定耗重分配比例;然后按照该特定耗重分配比例将该单批次任务列表中的任务分配给各个服务节点。作为示例,任务调度分发模块112可以先将单批次任务列表中的任务进行分组,形成分组分发描述,然后再按照分组分发描述将单批次任务列表中的任务分配给各个服务节点。其中,任务调度分发模块112基于服务节点的数量进行分组,处理系统中包括多少个服务节点,就将单批次任务列表中的任务分成多少个组。举例来说,若处理系统中包括3个服务节点,则任务调度分发模块就将单批次任务列表中的任务分成3组。具体为:当分组完成后,RPC模块根据分组分发描述,按照协议将单批次任务列表的任务分发至各个服务节点。
[0088]在本发明实施例中,任务调度分发模块的任务调度分发可以具体由RPC(Rem0teProcedure Call,远程过程调用)模块实现。
[0089]为了方便描述,在下文中,我们将这种任务调度分发机制称之为基于耗重的分配机制。
[0090]需要说明的是,在本发明实施例中,计算得到的特定耗重分配比例不仅能够使得各个服务节点的资源得到充分利用,而且能够使得各个服务节点完成分配到自身的任务所花费的时间基本相同,所以,通过本发明的任务调度分发模块112能够使得分布式数据批处理系统中的各个服务节点的资源得到充分利用,而且能够使得各个服务节点处理自身任务所花费的时长基本相同。因此,本发明提供的分布式数据批处理系统不会造成服务节点资源的浪费。
[0091]此外,在本发明实施例中,为了能够及时发现服务节点故障以及对故障服务节点的任务进行处理,主节点11还可以包括服务节点故障处理模块114,该服务节点故障处理模块114用于监控各服务节点的心跳和数据采集状态,当服务节点发生节点数据更新延迟或异常时,开始向该服务节点的端口发送检测信号,如果检测信号的响应信号在预设次数和/或预设时间段内未达标,将该服务节点视为故障服务节点,主节点开始接管该服务节点的任务列表。作为示例,服务节点故障处理模块114可以通过服务节点状态视图获知每个服务节点的状态。当服务节点故障处理模块114发现某个服务节点状态异常时,向该服务节点以RMKRemote Method Invoke,远程方法调用)通信的方式发送检测信号,如果发送了3次(作为示例,上述所述的预设次数为3)检测信号后,该服务节点均未做出响应,S卩服务节点故障处理模块114未接收到该服务节点发出的响应信号,则服务节点故障处理模块114认为该服务节点为故障服务节点,主节点开始接管该服务节点的任务列表,并处理该服务节点上的任务。
[0092]此外,需要说明的是,在本发明实施例中,任务调度分发模块基于任务耗重的分配机制进行任务的调度分发。实际上,在本技术领域,还可以采用轮询分配机制或均分分配机制进行任务的调度分发。其中,轮询分配机制就是选择服务节点列表中最近未被调度的服务节点进行任务分配;均分分配机制就是以任务个数为单位,将任务平均分配给可用的服务节点。
[0093]但是,采用轮询分配机制或均分分配机制均无法保障各个服务节点的资源得到充分利用并且各个服务节点的处理时长基本相等的效果。
[0094]以上为本发明实施例提供的主节点的主要结构和功能描述。在该主节点中,其任务的调度分发基于任务耗重分配机制将任务分配给系统的各个服务节点。由于在该基于任务耗重分配机制中,分配到各个服务节点的任务的特定耗重分配比例是根据单批次列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率计算得到的,并且,任务耗重为处理任务的耗时,服务节点的耗重速率与该服务节点配置的性能参数相关,性能参数越高,耗重速率越大。因此,在计算特定耗重分配比例时考虑了各个服务节点的性能参数,因此,根据该上述方法计算得到的特定耗重分配比例能够使得各个服务节点的资源得到充分利用,即能够使得各个服务节点满负荷运行,而且还能够使得各个服务节点处理分配到自身的任务所消耗的时长基本相等。因此,通过本发明的主节点,本发明的分布式数据批处理系统能够避免服务节点资源的浪费。
[0095]此外,由于本发明提供的分布式数据批处理系统为集群系统架构,其可以根据数据文件的大小可以很方便地增加或减少服务节点的数量,而且,本发明中的服务节点可以为普通电脑,所以,本发明提供的分布式数据批处理系统的成本较低,而且容易维护。
[0096]下面介绍服务节点的主要结构和功能描述。
[0097]在本发明实施例中,服务节点12的主要功能是用于接收并处理主节点下发的单批次任务列表中的任务。其具体结构如图3所示,包括任务接收模块121和任务驱动调度模块122;
[0098]其中,任务接收模块121用于接收所述主节点11分发的单批次任务列表的任务,并将其存储到服务节点的任务缓冲队列;作为示例,任务接收模块121可以具体为RPC模块。
[0099]任务驱动调度模块122用于从服务节点的任务缓冲队列中获取并处理主节点下发的单批次任务列表中的任务。
[0100]需要说明的是,为了使得当系统出现阻塞时,仍有空闲线程处理别类任务,在本发明实施例中,对服务节点处理某类任务时在任意时刻占用的线程设置有上限。为了实现该目的,如图4所示,本发明实施例所述的任务驱动调度模块122包括以下结构:
[0101]分类模块1221、泳道驱动器管理模块1222、泳道驱动器1223、泳道集1224和任务线程池1225;
[0102]所述分类模块1221用于按照特定组将所述单批次任务列表的任务分类,形成泳道列表,并将所述泳道列表提交到泳道驱动器管理模块1222;所述特定组为具有共性属性的任务构成的组,所述泳道为单批次任务列表中具有共性维度属性的任务集合;例如,服务节点NodeOl在12:00接收到一批‘A业务系统’的数据处理任务,在该示例中,‘A业务系统’为该批次数据处理任务的共性维度。
[0103]所述泳道驱动器管理模块1222用于将所述泳道列表添加到泳道集1224,并唤醒与泳道列表中的任务相关的泳道驱动器;所述泳道集1224用于管理多个泳道,提供最快的泳道定位和任务安全获取;
[0104]所述与泳道列表中的任务相关泳道驱动器用于判断实时任务并行执行视图中的任务线程是否达到泳道驱动器的并行上限,如果是,清理空泳道,然后执行等待操作,如果否,执行以下驱动过程^、8、(:、04、?:
[0105]A、判断泳道集内的预设泳道所属的特定组的线程数是否达到特定组的并行上限,如果是,执行步骤B,如果否,执行步骤D ;
[0106]B、判断泳道集内是否还存在所述预设泳道的下一泳道,如果是,执行步骤C,如果否,清理空泳道,然后执行等待操作;
[0107]C、将预设泳道更新为泳道集视图内的所述预设泳道的下一泳道,返回执行步骤A;
[0108]D、将任务循环从预设泳道中取出,并提交到任务线程池;并将实时任务并行执行视图中的预设泳道所属的特定组的线程数和所述泳道驱动器的任务线程池的线程并行数加I,返回执行步骤A和所述与泳道列表中的任务相关的泳道驱动器判断实时任务并行执行视图中的任务线程池的线程是否达到泳道驱动器的并行上限;
[0109]E、任务线程池对任务进行处理;
[0110]F、当任务线程池将任务处理结束后,任务线程池将所述实时任务并行执行视图中的当前执行的特定组的线程数减I,并返回执行所述唤醒与泳道列表中的任务相关的泳道驱动器;
[0111]其中,所述实时任务并行执行视图里包括当前执行的特定组数量以及每个当前执行的特定组的线程数;
[0112]所述泳道集视图里包括属于同一个泳道集内的所有泳道,所述所有泳道在泳道集视图内按照进入泳道集的先后顺序排列。
[0113]作为示例,预设泳道可以为最先进入泳道集的泳道。需要说明的是,在本发明实施例中,与泳道列表中的任务相关泳道驱动器可以按照先进先出的规则处理泳道集中的各个泳道。即先进入泳道集的泳道先处理。
[0114]通过图4所示的任务驱动调度模块能够使得在任意时刻,处理某个特定组中的任务占用的线程存在上限,而不能占用任务线程池内的所有线程,如此,能够实现当系统出现阻塞时,仍有空闲线程处理其它特定组内的任务。
[0115]此外,为了实现对主节点状态的监控,上述服务节点还可以包括:主节点状态监控模块123,该主节点状态监控模块123实时监控主节点的状态,如果发现主节点的心跳异常,与主节点的通信失败次数达到预设次数和/或通信失败时间达到预设时间段,则确定主节点发生故障,启动竞争主节点控制权程序,如果竞争成功则开始关闭服务节点功能模块,启动主节点功能模块。
[0116]进一步地,为了实现服务节点与主节点之间的数据共享,上述服务节点还可以包括:心跳和数据模块124,用于按照第一预设周期采集自身服务节点的心跳,按照第二预设周期采集自身服务节点的应用数据,并上传至主节点或数据库。如此,主节点能够实时获取到服务节点的状态,利用该获取到的服务节点状态,实时维护服务节点状态视图和健康视图。
[0117]以上为本发明实施例提供的分布式数据批处理系统的【具体实施方式】。从以上描述可知,本发明提供的分布式数据批处理系统为集群架构,且上述实施例仅示例出了一个集群。作为本发明实施例的扩展,本发明提供的分布式数据批处理系统还可以由多个集群组成。即分布式数据批处理系统可以由群组组成。具体参见图5。图5示出了由两个物理集群组成的分布式数据批处理系统架构示意图。如图5所示,该系统架构包括第一物理集群51、第二物理集群52、数据库53以及统一配置管理端54。其中,第一物理集群51或第二物理集群52可以为上述实施例所述的分布式数据批处理系统架构。统一配置管理端44将待处理数据发送至数据库53,第一物理集群51和第二物理集群52分别从数据库53中获取到由统一配置管理端分配到与其对应的数据文件,然后分别按照上述分布式数据批处理系统的处理方式对数据文件进行处理。
[0118]在本发明实施例中,根据不同的应用场景,集群群组的产生是为了实现逻辑的隔离,或者是物理的隔离如国内数据和海外数据。群组内的集群之间可以实现数据的归集或转移调度,从而完成数据统一配置管理。
[0119]基于上述实施例提供的分布式数据批处理系统,本发明还提供了分布式数据批处理方法的【具体实施方式】,具体参见以下实施例。
[0120]图6是本发明实施例提供的分布式数据批处理方法流程示意图。如图6所示,该处理方法包括以下步骤:
[0121]S601、任务扫描模块获取数据文件,将该数据文件封装成任务:
[0122]具体地,任务扫描模块访问数据文件系统及任务定义,从数据文件系统中获取数据文件,根据任务定义将数据文件封装成任务。
[0123]S602、任务扫描模块计算每个任务的耗重:
[0124]具体地,任务扫描模块可以并行计算每个任务的耗重。
[0125]S603、任务扫描模块将任务存储到主节点的任务缓冲队列,以在主节点的任务缓冲队列中形成批次任务列表:
[0126]具体地,任务耗重计算完成后,任务扫描模块将任务存储到主节点的任务缓冲队列,以在主节点的任务缓冲队列中形成批次任务列表。
[0127]S604、任务调度分发模块从主节点的任务缓冲队列中获取单批次任务列表。
[0128]S605、任务调度分发模块根据该单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算分配到各个服务节点的任务的特定任务耗重分配比例:
[0129]需要说明的是,与分配到各个服务节点的任务的特定任务耗重分配比例的计算相关的因素包括:服务节点任务缓冲队列耗重合计、服务节点耗重速率、任务固有属性(文件大小、任务类型、)和任务批次。
[0130]S606、任务调度分发模块根据服务节点列表中的队列长度描述将单批次任务列表中的任务进行分组,形成分组分发描述。
[0131]S607、任务调度分发模块根据分组分发描述将单批次任务列表中的任务按照特定任务耗重分配比例分配给各个服务节点:
[0132]需要说明的是,任务调度分发模块中可以包括RPC模块。本步骤具体可以通过RPC模块实现。具体为:RPC模块根据分组分发描述将单批次任务列表中的任务按照协议分配给各个服务节点。
[0133]S608、各服务节点的任务接收模块接收分发至自身的单批次任务列表中的任务,将接收到的任务存储到服务节点的任务缓冲队列:
[0134]本步骤具体可以为:服务节点上的任务接收模块接收分发至服务节点的单批次任务列表中的任务,将接收到的任务存储到服务节点的任务缓冲队列。需要说明的是,服务节点上的任务接收模块可以包括RPC接收模块。
[0135]S609、各服务节点的任务驱动调度模块从任务缓冲队列中获取并处理单批次任务列表中的任务:
[0136]需要说明的是,本步骤具体可以通过任务驱动调度模块实现。具体为:任务驱动调度模块从服务节点的任务缓冲队列中获取单批次任务列表中的任务,并按照一定的规则如并行上限控制、先到先处理策略处理单批次任务列表中的任务。采用并行上限控制策略能够使得处理系统出现阻塞时,仍有空闲线程处理别类任务。
[0137]此外,作为本发明的一具体实施例,在本发明实施例的处理方法中,主节点和各个服务节点之间还实时进行数据通信。具体为主节点可以执行以下操作:
[0138]主节点的收集模块收集监控各服务节点的状态,并根据收集监控到的服务节点状态维护服务节点状态视图和健康视图。
[0139]另外,主节点还可以执行以下操作:
[0140]主节点的服务节点故障处理模块实时监控各服务节点的心跳和数据采集状态,当服务节点发生节点数据更新延迟或异常时,开始向该服务节点的端口发送检测信号,如果检测信号的相应信号在预设次数和/或预设时间段内为达标,将该服务节点视为故障服务节点,主节点开始接管该故障服务节点的任务列表,处理该故障服务节点的任务。
[0141]服务节点可以执行以下操作:
[0142]服务节点的主节点状态监控模块实时监控主节点的状态,如果发现主节点的心跳异常,与主节点的通信失败次数达到预设次数和/或通信失败时间达到预设时间段,则确定主节点发生故障,启动竞争主节点控制权程序,如果竞争成功则开始关闭服务节点功能模块,启动主节点功能模块。
[0143]此外,服务节点还可以执行以下操作:
[0144]心跳和数据模块按照第一预设周期采集自身服务节点的心跳,按照第二预设周期采集自身服务节点的应用数据,并上传至主节点或数据库。如此,主节点能够实时获取到服务节点的状态,利用该获取到的服务节点状态,实时维护服务节点状态视图和健康视图。
[0145]以上为本发明实施例提供的分布式数据批处理方法的【具体实施方式】。通过该处理方法,能够使得各个服务节点的资源得到充分利用,并且各个服务节点处理完分配到自身的任务所花费的时长基本相等。
[0146]进一步地,为了使得当系统出现阻塞时,服务节点上仍有空闲线程处理其它特定组内的任务,作为本发明的一个具体实施例,上述步骤S609的具体实现方式可以通过图4所示的任务驱动调度模块122实现,其具体实现过程如图7所示。其包括以下步骤:
[0147]S701、分类模块1221按照特定组将单批次任务列表中的任务分类,形成泳道列表,并将该泳道列表提交到泳道驱动器管理模块1222。
[0148]S702、泳道驱动器管理模块1222将泳道列表添加到泳道集1224。
[0149]S703、泳道驱动器管理模块1222唤醒与泳道列表中的任务相关的泳道驱动器。
[0150]S704、所述与泳道列表中的任务相关泳道驱动器根据实时任务并行执行视图判断任务线程池的线程是否达到泳道驱动器的并行上限,如果是,执行步骤S705,如果否,执行步骤S706。
[0151]S705、清理空泳道,然后执行等待操作。
[0152]S706、与泳道列表中的任务相关泳道驱动器执行以下操作:
[0153]A、判断泳道集内的预设泳道所属的特定组的线程数是否达到特定组的并行上限,如果是,执行步骤B,如果否,执行步骤D ;
[0154]B、判断泳道集内是否还存在所述预设泳道的下一泳道,如果是,执行步骤C,如果否,清理空泳道,然后执行等待操作;
[0155]C、将预设泳道更新为泳道集视图内的所述预设泳道的下一泳道,返回执行步骤A;
[0156]D、将任务循环从预设泳道中取出,并提交到任务线程池;并将实时任务并行执行视图中的预设泳道所属的特定组的线程数和所述泳道驱动器的任务线程池的线程并行数加I,返回执行步骤A和所述与泳道列表中的任务相关的泳道驱动器判断实时任务并行执行视图中的任务线程池的线程是否达到泳道驱动器的并行上限;
[0157]E、任务线程池对任务进行处理;
[0158]F、当任务线程池将任务处理结束后,任务线程池将所述实时任务并行执行视图中的当前执行的特定组的线程数减I,并返回执行所述唤醒与泳道列表中的任务相关的泳道驱动器。
[0159]以上为本发明的优选实施例。虽然本发明已以较佳实施例披露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
【主权项】
1.一种分布式数据批处理系统,其特征在于,包括:一个主节点和多个服务节点; 其中,所述主节点包括:任务扫描模块和任务调度分发模块; 所述任务扫描模块用于获取数据文件,将所述数据文件封装成任务;计算每个任务的耗重,将所述任务存储到主节点的任务缓冲队列,以在所述主节点的任务缓冲队列中形成批次任务列表;其中,所述耗重为一个任务在标准环境下处理所消耗的时间;所述标准环境为最接近生产环境配置的机器配置; 所述任务调度分发模块用于从主节点的任务缓冲队列中获取单批次任务列表,根据所述单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算分配到各个服务节点的任务之间的特定任务耗重分配比例;将所述单批次任务列表中的任务按照所述特定任务耗重分配比例分配给各个服务节点;其中,所述特定任务耗重分配比例能够使各个服务节点的资源得到充分利用; 所述服务节点包括任务接收模块和任务驱动调度模块; 所述任务接收模块用于接收所述任务调度分发模块分发的单批次任务列表的任务,并将其存储到服务节点的任务缓冲队列; 所述任务驱动调度模块用于从服务节点的任务缓冲队列中获取并处理分发到服务节点的单批次任务列表的任务。2.根据权利要求1所述的系统,其特征在于,所述任务驱动调度模块包括分类模块、泳道驱动器管理模块、泳道驱动器、泳道集和任务线程池; 所述分类模块用于按照特定组将所述单批次任务列表的任务分类,形成泳道列表,并将所述泳道列表提交到泳道驱动器管理模块;所述特定组为具有共性属性的任务构成的组,所述泳道为单批次任务列表中具有共性维度属性的任务集合; 所述泳道驱动器管理模块用于将所述泳道列表添加到泳道集,并唤醒与泳道列表中的任务相关的泳道驱动器;所述泳道集用于管理多个泳道,提供最快的泳道定位和任务安全获取; 所述与泳道列表中的任务相关泳道驱动器用于判断实时任务并行执行视图中的任务线程是否达到泳道驱动器的并行上限,如果是,清理空泳道,然后执行等待操作,如果否,执行以下驱动过程:A、B、C、D、E、F: A、判断泳道集内的预设泳道所属的特定组的线程数是否达到特定组的并行上限,如果是,执行步骤B,如果否,执行步骤D; B、判断泳道集内是否还存在所述预设泳道的下一泳道,如果是,执行步骤C,如果否,清理空泳道,然后执行等待操作; C、将预设泳道更新为泳道集视图内的所述预设泳道的下一泳道,返回执行步骤A; D、将任务循环从预设泳道中取出,并提交到任务线程池;并将实时任务并行执行视图中的预设泳道所属的特定组的线程数和所述泳道驱动器的任务线程池的线程并行数加I,返回执行步骤A和所述与泳道列表中的任务相关的泳道驱动器判断实时任务并行执行视图中的任务线程池的线程是否达到泳道驱动器的并行上限; E、任务线程池对任务进彳丁处理; F、当任务线程池将任务处理结束后,任务线程池将所述实时任务并行执行视图中的当前执行的特定组的线程数减I,并返回执行所述唤醒与泳道列表中的任务相关的泳道驱动器; 其中,所述实时任务并行执行视图里包括当前执行的特定组数量以及每个当前执行的特定组的线程数; 所述泳道集视图里包括属于同一个泳道集内的所有泳道,所述所有泳道在泳道集视图内按照进入泳道集的先后顺序排列。3.根据权利要求1或2所述的系统,其特征在于,所述主节点还包括收集模块,所述收集模块用于收集和监控各服务节点的状态,形成服务节点状态视图和健康视图,所述服务节点状态视图和健康视图为任务调度分发提供依据; 所述收集模块还用于维护服务节点状态视图和健康视图。4.根据权利要求1或2所述的系统,其特征在于,所述主节点还包括服务节点故障处理模块,所述服务节点故障处理模块用于监控各服务节点的心跳和数据采集状态,当服务节点发生节点数据更新延迟或异常时,开始向该服务节点的端口发送检测信号,如果检测信号的响应信号在预设次数和/或预设时间段内未达标,将该服务节点视为故障服务节点,主节点开始接管该服务节点的任务列表。5.根据权利要求1或2所述的系统,其特征在于,所述服务节点还包括:主节点状态监控模块,所述主节点状态监控模块用于实时监控主节点的状态,如果发现主节点的心跳异常,与主节点的通信失败次数达到预设次数和/或通信失败时间达到预设时间段,则确定主节点发生故障,启动竞争主节点控制权程序,如果竞争成功则开始关闭服务节点功能模块,启动主节点功能模块。6.根据权利要求1或2所述的系统,其特征在于,所述服务节点还包括: 心跳和数据采集上报模块,用于按照第一预设周期采集自身服务节点的心跳,按照第二预设周期采集自身服务节点的应用数据,并上传至主节点。7.—种分布式数据批处理方法,其特征在于,所述方法基于的分布式数据批处理系统包括一个主节点和多个服务节点,所述主节点包括任务扫描模块和任务调度分发模块;所述服务节点包括任务接收模块和任务驱动调度模块; 所述方法包括: 任务扫描模块获取数据文件,将所述数据文件封装成任务;计算每个任务的耗重,将所述任务存储到主节点的任务缓冲队列,以在所述主节点的任务缓冲队列中形成批次任务列表;其中,所述耗重为一个任务在标准环境下处理所消耗的时间;所述标准环境为最接近生产环境配置的机器配置; 任务调度分发模块从主节点的任务缓冲队列中获取单批次任务列表,根据所述单批次任务列表中的任务耗重、服务节点列表中的队列长度描述和耗重速率,计算分配到各个服务节点的任务之间的特定任务耗重分配比例;将所述单批次任务列表中的任务按照所述特定任务耗重分配比例分配给各个服务节点;其中,所述特定任务耗重分配比例能够使各个服务节点的资源得到充分利用; 任务接收模块接收所述任务调度分发模块分发的单批次任务列表的任务,并将其存储到服务节点的任务缓冲队列; 任务驱动调度模块从服务节点的任务缓冲队列中获取并处理分发到服务节点的单批次任务列表的任务。8.根据权利要求7所述的方法,其特征在于,所述任务驱动调度模块包括分类模块、泳道驱动器管理模块、泳道驱动器、泳道集和任务线程池; 所述任务驱动调度模块从服务节点的任务缓冲队列中获取并处理分发到服务节点的单批次任务列表的任务,具体包括: 所述分类模块按照特定组将所述单批次任务列表的任务分类,形成泳道列表,并将所述泳道列表提交到泳道驱动器管理模块;所述特定组为具有共性属性的任务构成的组,所述泳道为单批次任务列表中具有共性维度属性的任务集合; 所述泳道驱动器管理模块将所述泳道列表添加到泳道集,并唤醒与泳道列表中的任务相关的泳道驱动器;所述泳道集用于管理多个泳道,提供最快的泳道定位和任务安全获取; 所述与泳道列表中的任务相关泳道驱动器判断实时任务并行执行视图中的任务线程是否达到泳道驱动器的并行上限,如果是,清理空泳道,然后执行等待操作,如果否,执行以下驱动过程:A、B、C、D、E、F: A、判断泳道集内的预设泳道所属的特定组的线程数是否达到特定组的并行上限,如果是,执行步骤B,如果否,执行步骤D; B、判断泳道集内是否还存在所述预设泳道的下一泳道,如果是,执行步骤C,如果否,清理空泳道,然后执行等待操作; C、将预设泳道更新为泳道集视图内的所述预设泳道的下一泳道,返回执行步骤A; D、将任务循环从预设泳道中取出,并提交到任务线程池;并将实时任务并行执行视图中的预设泳道所属的特定组的线程数和所述泳道驱动器的任务线程池的线程并行数加I,返回执行步骤A和所述与泳道列表中的任务相关的泳道驱动器判断实时任务并行执行视图中的任务线程池的线程是否达到泳道驱动器的并行上限; E、任务线程池对任务进彳丁处理; F、当任务线程池将任务处理结束后,任务线程池将所述实时任务并行执行视图中的当前执行的特定组的线程数减I,并返回执行所述唤醒与泳道列表中的任务相关的泳道驱动器; 其中,所述实时任务并行执行视图里包括当前执行的特定组数量以及每个当前执行的特定组的线程数; 所述泳道集视图里包括属于同一个泳道集内的所有泳道,所述所有泳道在泳道集视图内按照进入泳道集的先后顺序排列。9.根据权利要求7或8所述的方法,其特征在于,所述主节点还包括收集模块,所述方法还包括: 所述收集模块收集和监控各服务节点的状态,形成服务节点状态视图和健康视图,所述服务节点状态视图和健康视图为任务调度分发提供依据; 所述收集模块还用于维护服务节点状态视图和健康视图。10.根据权利要求7或8所述的方法,其特征在于,所述主节点还包括服务节点故障处理模块, 所述方法还包括: 所述服务节点故障处理模块监控各服务节点的心跳和数据采集状态,当服务节点发生节点数据更新延迟或异常时,开始向该服务节点的端口发送检测信号,如果检测信号的响应信号在预设次数和/或预设时间段内未达标,将该服务节点视为故障服务节点,主节点开始接管该服务节点的任务列表。11.根据权利要求7或8所述的方法,其特征在于,所述服务节点还包括:主节点状态监控模块, 所述方法还包括: 所述主节点状态监控模块实时监控主节点的状态,如果发现主节点的心跳异常,与主节点的通信失败次数达到预设次数和/或通信失败时间达到预设时间段,则确定主节点发生故障,启动竞争主节点控制权程序,如果竞争成功则开始关闭服务节点功能模块,启动主节点功能模块。12.根据权利要求7或8所述的方法,其特征在于,所述服务节点还包括:心跳和数据采集上报模块, 所述方法还包括: 按照第一预设周期采集自身服务节点的心跳,按照第二预设周期采集自身服务节点的应用数据,并上传至主节点。
【文档编号】G06F9/48GK105912401SQ201610218574
【公开日】2016年8月31日
【申请日】2016年4月8日
【发明人】罗焱学, 王宝义, 安莉
【申请人】中国银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1