海量报表数据并发分布式处理方法

文档序号:6545684阅读:229来源:国知局
海量报表数据并发分布式处理方法
【专利摘要】一种海量报表数据并发分布式处理方法,包括:获取报表数据;生成报表数据公式集,并对所生成的报表数据公式集按行切分成多个公式集片段,其中每个公式集片段包括多行报表数据公式;将报表数据推送到计算机集群中的每个计算机节点;将对公式集片段的运算分配到计算机集群中的多个计算机节点进行运算处理;保存多个计算机节点运算处理的状态快照;以及当对任一公式集片段的运算中断时,根据状态快照恢复中断前的运算状态,继续执行中断的运算。通过上述技术方案,将报表数据公式集切分成公式集片段,使公式集能够以片段的形式在不同的处理节点进行处理,每个处理节点只处理一部分公式集片段和相对应的报表数据,极大地提高了报表数据的处理效率。
【专利说明】海量报表数据并发分布式处理方法

【技术领域】
[0001]本发明涉及数据处理领域,具体地,涉及一种海量报表数据并发分布式处理方法。

【背景技术】
[0002]目前,对报表数据的处理,一般使用的是传统的非分布式计算技术。这种传统的非分布式的计算技术只适用于处理少量报表数据,当报表数据的数量不断膨胀,达到巨量甚至是海量的地步时,使用该传统方式去处理报表数据,就会出现各种弊端。首先,这种传统的非分布式技术对软、硬件平台的要求都非常高,这将给用户带来十分高昂的成本压力。其次,即使用户愿意付出高昂的成本,在绝大多数情况下,这种传统的非分布式技术的处理速度和处理效率,都非常之低。有时,某些报表数据的处理过程,往往需要耗时数小时甚至是数天才能完成。
[0003]当前,在国内少数企业,也使用了一些传统的集群计算技术来实现对报表数据的处理。即把某些具有高性能计算能力的计算节点(服务器)组合成一个计算集群,使用集群中的计算节点,来分担整个系统的计算负载。
[0004]这种传统的集群计算技术,虽然可以部分提高报表数据的处理速度和处理效率。但是,由于其处理原理是将整个报表数据全部推送给各个计算节点进行计算处理。其对集群中各个计算节点的硬件要求非常高,并且不能充分利用各个计算节点的计算能力。而且,当报表数据膨胀到某个程度(巨量或者海量)时,也会出现处理效率和速度的瓶颈。即在海量数据下,通过增加集群中的高性能计算节点,并不能提高整个系统的处理的效率。
[0005]针对上述问题,现有技术中尚无良好解决方案。


【发明内容】

[0006]本发明的目的是提供一种方法,通过该方法能够实现对海量报表数据进行快速处理。
[0007]为了实现上述目的,本发明提供一种海量报表数据并发分布式处理方法,该方法包括:获取报表数据;生成报表数据公式集,并对所生成的报表数据公式集按行切分成多个公式集片段,其中每个公式集片段包括多行报表数据公式;以及将所述报表数据推送到计算机集群中的每个计算机节点;将对公式集片段的运算分配到所述计算机集群中的多个计算机节点进行运算处理;保存所述多个计算机节点运算处理的状态快照;以及当对任一公式集片段的运算中断时,根据所述状态快照恢复中断前的运算状态,以及继续执行中断的运算。
[0008]进一步地,所述多个计算机节点进行运算处理包括公式运算和对运算结果进行第一级合并,以得到多个第一级合并结果;以及该方法还包括:对所述多个第一级合并的结果进行第二级合并;以及将第二级合并后的最终数据结果输出给目标应用。
[0009]进一步地,所述生成报表数据公式集的步骤,包括生成报表数据校验公式集,以及将经过校验的报表数据生成报表数据转换公式集。
[0010]进一步地,该方法还包括:对所述多个计算机节点进行心跳检测;以及将分配到心跳检测无响应的计算机节点的运算再分配到其他计算机节点。
[0011]进一步地,该方法还包括:将所述多个计算机节点的运算处理结果保存到与所述计算机集群中的所有计算机节点连接的共享存储器。
[0012]进一步地,该方法还包括:当运算当前公式集片段的所有计算机节点运算处理完成后,对下一个公式集片段的运算进行分配。
[0013]进一步地,该方法还包括:根据贪婪算法分配所述对公式集片段的运算。
[0014]进一步地,该方法还包括:在完成对最后一个公式集片段的运算后,输出运算结果O
[0015]进一步地,所述计算机集群由部署云计算平台的计算机节点组成。
[0016]进一步地,所述云计算平台为HADOOP云计算平台。
[0017]进一步地,所述计算机节点为LINUX系统服务器。
[0018]通过上述技术方案,将报表数据公式集切分成公式集片段,使公式集能够以片段的形式在不同的处理节点进行处理,每个处理节点只处理一部分公式集片段和相对应的报表数据,极大地提高了报表数据的处理效率。
[0019]本发明的其他特征和优点将在随后的【具体实施方式】部分予以详细说明。

【专利附图】

【附图说明】
[0020]附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的【具体实施方式】一起用于解释本发明,但并不构成对本发明的限制。在附图中:
[0021]图1是根据本发明实施方式的海量报表数据并发分布式处理方法流程图;
[0022]图2是根据本发明示例性实施方式的海量报表数据并发分布式处理方法流程图;
[0023]图3是根据本发明示例性实施方式的海量报表数据并发分布式处理方法流程图;
[0024]图4是根据本发明示例性实施方式的海量报表数据并发分布式处理方法流程图;
[0025]图5、图6和图7是根据本发明示例性实施方式的海量报表数据并发分布式处理方法的程序实施举例图。

【具体实施方式】
[0026]以下结合附图对本发明的【具体实施方式】进行详细说明。应当理解的是,此处所描述的【具体实施方式】仅用于说明和解释本发明,并不用于限制本发明。
[0027]对报表数据的处理,一般以报表数据校验和报表数据转换两种处理为主。报表数据校验处理指的是对报表数据的准确性,严谨性进行检查,发现有疑问的数据,保证报表数据准确性的过程。报表数据转换处理指的是从某些特定的报表中抽取出指定的数据,然后对这些数据进行相应的计算和加工,转换成特定格式的数据的过程。其中不论是对报表数据的校验处理,还是对报表数据的转换处理,都会涉及到大量复杂的计算。
[0028]为了提高大量复杂计算的计算效率,本发明提供一种海量报表数据并发分布式处理方法,如图1所示,该方法包括:S101,获取报表数据;S102,生成报表数据公式集,并对所生成的报表数据公式集按行切分成多个公式集片段,其中每个公式集片段包括多行报表数据公式;以及S103,将所述报表数据推送到计算机集群中的每个计算机节点;S104,将对公式集片段的运算分配到所述计算机集群中的多个计算机节点进行运算处理;S105,保存所述多个计算机节点运算处理的状态快照;以及S106,当对任一公式集片段的运算中断时,根据所述状态快照恢复中断前的运算状态,以及继续执行中断的运算。
[0029]通过上述技术方案,将报表数据公式集切分成公式集片段,使公式集能够以片段的形式在不同的处理节点进行处理,每个处理节点只处理一部分公式集片段和相对应的报表数据,极大地提高了报表数据的处理效率。当公式集片段的运算失败时,能够从失败的公式集片段的运算继续执行,而无需从初始状态重复执行,也无需对其他未失败的公式集进行重复运算,提高任务处理效率、降低资源浪费。在实施方式中可以在获取报表数据之后就将所获取的报表数据推送到计算机集群中的每个计算机节点,以当对公式集片段的运算分配后,计算机节点可以立即开始运算而无需等待数据。
[0030]在实施方式中,可以将每个计算机节点的运算结果通过网络回传以进行汇总合并。但是考虑到运算结果数据量极为庞大的情况,网络可能无法快速传输庞大的运算结果数据量,成为短板。因此,在优选的实施方式中,多个计算机节点进行运算处理可以包括公式运算和对运算结果进行第一级合并,以得到多个第一级合并结果;以及方法还可以包括:对所述多个第一级合并的结果进行第二级合并;以及将第二级合并后的最终数据结果(例如,凭证数据)输出给目标应用。公式集在不同的处理节点进行处理,因此需要对处理得到的结果进行合并,考虑到一个处理节点可能产生多个可以合并的结果,因此结果的合并可以包括在一个处理节点内的汇总和合并以及多个处理节点的结果的汇总和合并。对于合并,可以选择计算机集群中指定的或空闲的一个或多个计算机来进行。
[0031]在实施方式中,方法还可以包括:对所述多个计算机节点进行心跳检测;以及将分配到心跳检测无响应的计算机节点的运算再分配到其他计算机节点。通过心跳检测可以确定进行运算的计算机节点的工作状态。为了确保分配到每个计算机节点的运算都能够完成,当出现心跳检测无响应的计算机时,可以将分配到该计算机节点的运算重新分配到其他心跳检测正常的计算机节点。优选地,重新分配到的计算机节点可以是已完成被分配的运算的计算机节点,这样可以充分利用空闲计算资源完成运算。
[0032]为了便于公式和/或公式集调用和运算结果汇总,在实施方式中,该方法还可以包括:将所述多个计算机节点的运算处理结果保存到与所述计算机集群中的所有计算机节点连接的共享存储器。
[0033]在实施方式中,该方法还可以包括:当运算当前公式集片段的所有计算机节点运算处理完成后,对下一个公式集片段的运算进行分配,以利用全部计算机节点资源处理一个公式集片段,提高处理速度。
[0034]图2是根据本发明示例性实施方式的海量报表数据并发分布式处理方法流程图。如图2所示,根据本发明示例性实施方式的海量报表数据并发分布式处理方法可以包括:根据报表数据处理的形式,将报表数据处理划分为例如“数据校验”和“数据转换”两种不同的处理类型。依据上述两种处理类型设置数据的分组规则:“数据校验分组规则”和“数据转换分组规则”,或为对数据进行校验或转换的条件。优选地,设置可以对通过校验的数据进行转换。然后,可以按照设定的分组规则对数据进行切分,将数据切分为多个数据片段。(若为“数据校验分组规则”,则对已设定的“数据校验公式”进行切分。其中,可以依据财务数据校验方式建立数据校验公式以确定数据是否准确;若为“数据转换分组规则”,则对已设定的“数据转换公式”进行切分。)将切分后的数据片段和原始报表数据分派到计算机集群中的多个计算机节点进行分布式并行计算,并形成临时结果集。接着,根据不同的分组规则汇总临时结果集(例如,若为“数据校验分组规则”,则可以汇总校验失败的信息;若为“数据转换分组规则”,则可以汇总转换后的数据集),并形成最终数据结果。最后,将最终数据结果统一输出给目标应用以用于出具报表或数据报错。
[0035]在图2所示的实施方式中,从总量数据的角度来说,是将总量数据按照分组规则划分为需要进行校验和需要进行转换两种类别;而从某一数据的角度来说,该数据需要先进行校验,在校验通过的情况下再进行转换。因此,在实施方式中,生成报表数据公式集的步骤,可以包括生成报表数据校验公式集,以及将经过校验的报表数据生成报表数据转换公式集。
[0036]对于同一数据,本发明提供的海量报表数据并发分布式处理方法会按照任务链形式按步骤顺序进行。总量数据可能是海量的,而需要校验和/或需要转换的数据进行运算量可能也同样是海量级别。这样的运算量,普通的系统和硬件难以完成,一般需要高性能的硬件支持,而高性能的硬件势必需要高昂的成本投入。为此,本发明的实施方式中提供以下方法解决大数据量与性能不高的硬件系统之间的矛盾。
[0037]图3是根据本发明示例性实施方式的海量报表数据并发分布式处理方法流程图。如图3所示,本发明实施方式提供的海量报表数据并发分布式处理方法,可以包括:S301,将每个步骤划分为多个子任务节点;S302,分配完成子任务节点所需的运算到所述计算机集群中的多个计算机节点进行运算处理;S303,保存所述多个计算机节点运算处理的状态快照;以及S304,当所述子任务节点中断时,根据所述状态快照恢复中断前的子任务节点状态,以及继续执行中断的子任务节点。
[0038]通过上述技术方案,将完成一个任务链步骤所需的运算分配到多个计算机节点进行运算处理,能够将运算量化整为零,提高任务运行速度;通过保存运算处理的状态快照,在任务链步骤因故中断时,能够将任务链步骤恢复到中断前状态,从而从中断前状态开始继续执行任务链。因此,通过上述技术方案,当任务链步骤或节点失败时,能够从失败的步骤或节点继续执行任务链,而无需从初始状态重复执行,提高任务处理效率、降低资源浪费。
[0039]在优选的实施方式中,上述方法还可以包括:对多个计算机节点进行心跳检测;以及将分配到心跳检测无响应的计算机节点的运算再分配到其他计算机节点。通过心跳检测可以确定进行运算的计算机节点的工作状态。为了确保分配到每个计算机节点的运算都能够完成,当出现心跳检测无响应的计算机时,可以将分配到该计算机节点的运算重新分配到其他心跳检测正常的计算机节点。优选地,重新分配到的计算机节点可以是已完成被分配的运算的计算机节点,这样可以充分利用空闲计算资源完成运算。
[0040]为了使完成任务链中每个任务节点或子任务节点的运算的计算机节点能够获取运算所需的数据,在实施方式中,方法还包括:将所述多个计算机节点的运算处理结果保存到与所述计算机集群中的所有计算机节点连接的共享存储器。这样所有计算机节点可以在运算开始时从共享存储器获取运算数据,以及在运算完成时向共享存储器中存储运算结果。这里需要说明的是,计算机节点运算处理的状态快照也可以保存在共享存储器中,或者也可以单独设置快照存储器。存储器的实例包括但不局限于只读存储器(ROM)、随机存取存储器(RAM)、寄存器、缓冲存储器、半导体存储设备等。
[0041]在不同的实施方式中,该方法还可以包括:当执行当前子任务节点的所有计算机节点运算处理完成后,对完成下一个子任务节点所需的运算进行分配。在实施方式中,存在多种情况需要执行上述步骤。例如,对于大量运算,需要使用计算机集群中的所有计算机节点参与的子任务节点的运算,只有当所有计算机节点都完成运算处理后才能继续分配下一子任务节点的运算。再如,对于需要得到上一子任务节点的全部运算结果后才能分配下一子任务节点的运算的情况,方法中也需要包含这样的步骤。当然,在实施方式中,也可以将不同子任务节点的运算同时分配到计算机集群中的不同计算机节点组进行处理。
[0042]下面结合图4对海量报表数据处理中的处理过程进行说明。如图4所示,在一个任务链从开始到结束之间可以有多个任务节点(或网状处理节点),每个任务节点中可以包括(例如具有网状拓扑结构的)多个子任务节点,每个子任务节点的运算可以被分配到计算机集群中的一个或多个计算机节点(图中未示出)进行处理。每个计算机节点所要进行的运算可以由统一的总控单元进行,该总控单元可以是计算机集群中的一个计算机节点,同时负责计算机集群中其他所有计算机节点的心跳检测。与运算相关的上下文共享数据(例如,计算机节点的运算处理结果)可以被保存到与所述计算机集群中的所有计算机节点连接的共享存储器。在完成最后一个网状处理节点的运算后,可以输出运算结果,例如输出到目标应用。需要说明的是,图4中示出了包括三个网状处理节点的任务链,然而附图仅出于示例性目的,并不对任务链的长度进行限制。例如根据本发明的海量报表数据并发分布式处理方法可以使用两个网状处理节点,分别对数据校验和数据转换进行处理。
[0043]在优选的实施方式中,可以根据贪婪算法分配所述完成子任务节点所需的运算。即,可以将最复杂的运算交给计算能力最强的计算机节点进行处理,进而确保整个运算的处理速度。
[0044]在优选的实施方式中,计算机集群可以由部署云计算平台的计算机节点组成,从而可以利用云计算平台的资源优势,降低大量运算对计算机节点的硬件要求。例如,可以使用HADOOP云计算平台,而计算机节点可以为部署了云计算平台(例如HADOOP的)LINUX系统服务器。以下,结合HADOOP云计算平台对根据本发明的海量报表数据并发分布式处理方法的实现方式进行说明。
[0045]本发明的一种示例性实施方式使用HADOOP云计算平台来实现海量报表数据并发分布式处理方法。其具体的实施方式如下:
[0046](I)选取5至10台普通服务器(LINUX操作系统),作为报表数据计算处理节点;
[0047](2)在这些普通的服务器上部署HADOOP平台,将这些机器组合成一个分布式计算集群;
[0048](3)在分布式计算集群上初始化分布式文件系统(HDFS);
[0049](4)系统根据报表数据处理的形式,依据“数据校验分组规则”和“数据转换分组规则”对需要处理的海量报表数据进行分组;(以下步骤(5)-(14)以“数据转换”处理为例进行描述)
[0050](5)若为“数据转换”处理,则系统将海量报表数据的内容和数据转换公式集合的内容推送至分布式文件系统(HDFS);
[0051](6)系统将已经推送至分布式文件系统(HDFS)中的数据转换公式集合的内容根据分布式计算集群中的机器的数量和机器的计算能力进行切分。将数据转换公式集合中的内容划分为5至10个数据片段(可以与参与处理节点数量相同);
[0052](7)系统将切分好的5至10个数据片段,连同海量报表数据,一起推送至分布式计算集群中的各个计算节点(向每个计算节点推送全部的报表数据,以使每个计算节点根据公式集运算需求进行使用);
[0053](8)系统启动任务分配调度程序,调用分布式计算集群中的各个计算节点,同时对分配至该计算节点上的数据片段和海量报表数据进行计算处理;
[0054](9)系统调用分布式计算集群中的各个计算节点,对该计算节点上数据计算处理的结果,进行小范围的汇总和合并,在各个计算节点上,产生临时结果集;
[0055](10)系统调用任务分配调度程序,观察分布式计算集群中的各个计算节点的空闲状态,启用其中某些比较空闲的计算节点(2至3个计算节点)作为合并工作的计算节点,为合并工作做准备;
[0056](11)系统调用任务分配调度程序,启动选中的执行合并工作的计算节点上的合并程序;
[0057](12)系统将调用执行合并工作的计算节点,收集上一个步骤中产生的临时结果集,进行大范围的排序和合并;
[0058](13)系统收集各个执行合并工作的计算节点上产生的结果集,再次进行大范围合并和汇总,并将最后形成的数据转换结果集推送至HDSF文件系统中保存。并停止所有的正在执行的冗余的并行计算任务;以及
[0059](14)系统获取保存在HDFS文件系统中的最后的数据转换结果,对其进行最后的格式转换,并将转换后的结果统一输出到传统的关系型数据库(ORACLE)数据库中。以供其他的应用使用。
[0060]“数据校验”的实施方式和“数据转换”的实施方式相类似。
[0061]通过上述方法能够实现对海量报表数据进行快速处理。
[0062]下面为便于对本发明的原理进行理解,结合图5-图7提供一个实施例。描述如下:
[0063]假设现在有一张需要进行数据转换的报表,报表名为:“在建工程明细表(一)”。该报表的数据如图5所示。
[0064]假设系统中设置了如下一个数据转换规则的集合。该数据转换规则集合的结构是一个1X72(行X列)的矩阵。在该数据转换规则的集合中,只在第69列和第70列设置了 2个转换规则。第69列的转换规则为:YBZC041 ! AA[ 一、基建项目# 二、技改项目];第72列的转换规则也为:YBZC041 ! AB[—、基建项目#二、技改项目]。该数据转换规则集合如图6所示。
[0065]数据转换规则说明:
[0066]在数据转换规则集合中的第68列的转换规则“YBZC041 ! AA[—、基建项目# 二、技改项目]”的含义为:从“在建工程明细表(一)”中取出图5中第AA列的从第10行至第26行17个单元格的数据,并依次将这17个单元格的数据填充到数据转换规则集合的第68列ο
[0067]在数据转换规则集合中的第70列的转换规则“YBZC041 ! AB [—、基建项目# 二、技改项目]”的含义为:从“在建工程明细表(一)”中取出图5中第AB列的从第10行至第26行17个单元格的数据,并依次将这17个单元格的数据填充到数据转换规则集合的第70列。
[0068]最后系统转换出的结果如图7所示。
[0069]以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。例如,可以将计算机节点改变为计算节点或计算单元。
[0070]另外需要说明的是,在上述【具体实施方式】中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
[0071]此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
【权利要求】
1.一种海量报表数据并发分布式处理方法,其特征在于,该方法包括: 获取报表数据; 生成报表数据公式集,并对所生成的报表数据公式集按行切分成多个公式集片段,其中每个公式集片段包括多行报表数据公式;以及 将所述报表数据推送到计算机集群中的每个计算机节点; 将对公式集片段的运算分配到所述计算机集群中的多个计算机节点进行运算处理; 保存所述多个计算机节点运算处理的状态快照;以及 当对任一公式集片段的运算中断时,根据所述状态快照恢复中断前的运算状态,以及继续执行中断的运算。
2.根据权利要求1所述的方法,其特征在于,所述多个计算机节点进行运算处理包括公式运算和对运算结果进行第一级合并,以得到多个第一级合并结果;以及 该方法还包括:对所述多个第一级合并的结果进行第二级合并;以及将第二级合并后的最终数据结果输出给目标应用。
3.根据权利要求1所述的方法,其特征在于,所述生成报表数据公式集的步骤,包括生成报表数据校验公式集,以及将经过校验的报表数据生成报表数据转换公式集。
4.根据权利要求1所述的方法,其特征在于,该方法还包括: 对所述多个计算机节点进行心跳检测;以及 将分配到心跳检测无响应的计算机节点的运算再分配到其他计算机节点。
5.根据权利要求1所述的方法,其特征在于,该方法还包括: 将所述多个计算机节点的运算处理结果保存到与所述计算机集群中的所有计算机节点连接的共享存储器。
6.根据权利要求1所述的方法,其特征在于,该方法还包括: 当运算当前公式集片段的所有计算机节点运算处理完成后,对下一个公式集片段的运算进行分配。
7.根据权利要求1所述的方法,其特征在于,该方法还包括: 根据贪婪算法分配所述对公式集片段的运算。
8.根据权利要求1所述的方法,其特征在于,该方法还包括: 在完成对最后一个公式集片段的运算后,输出运算结果。
9.根据权利要求1所述的方法,其特征在于,所述计算机集群由部署云计算平台的计算机节点组成。
10.根据权利要求9所述的方法,其特征在于,所述云计算平台为HADOOP云计算平台。
11.根据权利要求9所述的方法,其特征在于,所述计算机节点为LINUX系统服务器。
【文档编号】G06F17/30GK104281636SQ201410187511
【公开日】2015年1月14日 申请日期:2014年5月5日 优先权日:2014年5月5日
【发明者】谭映忠, 张克慧, 刘新宇, 刘畅, 关丹凤, 王亮, 陈璇, 郭磊 申请人:神华集团有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1