一种分布式数据流处理方法及其系统与流程

文档序号:12041427阅读:700来源:国知局
一种分布式数据流处理方法及其系统与流程
本申请涉及分布式数据处理,尤其涉及一种用于处理大数据量的分布式数据流处理方法及其系统。

背景技术:
目前,数据流处理成为数据挖掘、数据分析的主要方式。例如,网站日志就是一个大数据量的数据流。再例如,电子商务网站中不断增加的商品发布信息,不断增加的手机短信发送记录等等。这样的数据流具有如下特点:(1)数据量大;(2)每条信息中,具有要分析特征的ID(标识符);(3)具有时间属性,即时序性。数据流分析通常要求实时、快速,使得系统能够根据具体用户当前行为做出实时响应。例如,日志的实时分析可以把握用户的当前状态,最近的访问行为,可以有效地提高推荐的精准度,或实时地反作弊。而如何快速分析数据流,尤其是在数据量很大的情况下,满足实时要求一直是技术上的难点。通常,现有的分布式数据流处理系统的基本原理如图1所示,原始数据流S被分配给多个功能模块F。多个功能模块F同时进行处理,并将处理后的结果都发送给数据整合模块I,由数据整合模块I进行整合并输出整合后的数据。然而在现有的分布式数据流处理系统中存在如下缺陷:(1)对数据流进行处理时,当数据量非常大的时候,数据处理、数据分析变得十分耗时。而现有的分布式数据流处理系统一般采用共享存储模式,即,不同模块之间,尤其是上下游模块之间交互数据的方式是模块A的结果放到存储(数据库,文件等)中,然后模块B到存储中读取数据,由此实现模块A和模块B的数据交互,这种模式不能实时计算,只能做到准实时。也就是说,当速度成为瓶颈,大部分现有的处理技术不能满足实时数据流的增长速度,数据延迟比较大,使得数据分析只能离线进行,导致数据分析、数据挖掘延迟,不能对用户的当前或近期行为做出反应。(2)对于大数据量的处理,分布式并行计算已经成为趋势。而现有的并行计算系统,基本上都仅限于功能复制的架构,即,系统实现并行计算的方法是所有的运算模块是同样的功能,运行同样的程序,只是运算数据的不同部分,以此达到并行计算的目的,因此无法实现更细粒度的并行,也无法实现模块化和模块的热插拔,并且不利于维护。

技术实现要素:
本申请提供了一种分布式数据流处理方法,所述方法包括:将原始数据流分割成实时数据流和历史数据流;并行处理所述实时数据流和所述历史数据流,并分别产生各自的处理结果;以及将所产生的处理结果进行整合。优选地,在处理所述实时数据流的步骤中,对所述实时数据流按维度切分并进行并行处理。优选地,处理所述实时数据流的步骤包括:将所述实时数据流切分成多个数据块;并行地将所述多个数据块的每一个切分成多个数据单元,然后将所述多个数据单元分别发送给多个不同的功能模块进行并行处理;以及将并行处理的结果进行汇总。优选地,在处理所述历史数据流的步骤中,对所述历史数据流按维度切分并进行并行处理。本申请还提供了一种分布式数据流处理装置,所述装置包括:数据识别模块,用于将原始数据流分割成实时数据流和历史数据流;并行处理模块,用于并行处理所述实时数据流和所述历史数据流,并分别产生各自的处理结果;以及数据整合模块,用于将所产生的处理结果进行整合。优选地,所述并行处理模块在处理所述实时数据流时,对所述实时数据流按维度切分并进行并行处理。优选地,处理所述实时数据处理系统包括:横向切分模块,用于将所述实时数据流切分成多个数据块;多个纵向切分模块,用于并行地将所述多个数据块的每一个切分成多个数据单元,然后将所述多个数据单元分别发送给多个不同的功能模块进行并行处理;以及结果汇总模块,用于将并行处理的结果进行汇总。优选地,所述并行处理模块在处理所述历史数据流时,对所述历史数据 流按维度切分并进行并行处理。根据本申请的分布式数据流处理方法,通过按时序性和按维度对数据流进行多次分割和切分,即利用时序性,采用多层结构,对数据分时段处理,使用新的分布式架构,利用不同维度,对信息流进行纵向切分。使得大数据量的实时计算成为可能。实时数据流的运算能够最大限度地以分布式并行处理,同时保证了大数据量处理和高实时性,提高了系统的反应速度。附图说明下面将参照所附附图来描述本申请的实施例,其中:图1示例性示出了现有技术的分布式数据流处理系统的示意图;图2示例性示出了本申请的大数据量分布式数据流处理系统的一个实施例的示意图;图3示例性示出了与图2中的大数据量分布式数据流处理系统相对应的本申请的大数据量分布式数据流处理方法的流程图;图4示例性示出了图2中的实时处理系统30的一个实施例的示意图;以及图5示例性示出了与图4中的实时处理系统30相对应的本申请的实时处理方法的流程图。具体实施方式下面将结合图2-图5详细描述本申请的上述精神和实质。虽然下面以网站日志数据流为例来描述本申请的系统和方法的实施方式,可以理解,本申请也可以用来处理个性化推荐、实时反作弊、商品发布、手机短信发送、科学计算等系统的数据流。以网站日志数据流为例,图2示例性示出了本申请的大数据量分布式数据流处理系统的一个实施例的示意图。图2中的大数据量分布式数据流处理系统包括:数据识别模块10;30天以前数据处理系统20;实时数据处理系统30;30天以内数据处理系统40;以及数据整合模块50。可以理解,这些模块可以由一台计算机或类似的具有 计算或处理能力的设备、或多台这样的设备形成的网络、或这样的设备的一部分硬件或软件来实现。图3示例性示出了与图2中的大数据量分布式数据流处理系统相对应的本申请的大数据量分布式数据流处理方法的流程图。下面结合图2和图3来描述本申请的一个实施例。在步骤S100,获取原始数据流100。在步骤S101,原始数据流100被数据识别模块10获取后,数据识别模块10识别原始数据流100中的数据是实时数据、还是30天以内的数据、或是30天以前的数据,从而将原始数据流100按时序性分割成30天以前数据流200、实时数据流300以及30天以内数据流400。30天以前数据流200被发送至30天以前数据处理系统20,实时数据流300被发送至实时数据处理系统30,以及30天以内数据流400被发送至30天以内数据处理系统40。在步骤S102,30天以前数据处理系统20进行30天以前数据处理,将处理结果发送到数据整合模块50。在步骤S103,实时数据处理系统30进行实时数据处理,将处理结果发送到数据整合模块50。在步骤S104,30天以内数据处理系统40进行30天以内数据处理,将处理结果发送到数据整合模块50。步骤S102、步骤S103和步骤S104并行执行。在步骤S105,数据整合模块50将接收到的处理结果进行整合,并输出整合后的数据。可以理解,尽管在这里,原始数据流100被数据识别模块10分割成30天以前数据流200、实时数据流300以及30天以内数据流400这样的由三个时间限度区分的不同部分,本领域技术人员能够根据实际情况以其它时间限度来分割原始数据流100。例如,将原始数据流100分割成更少或更多的时间段(相应地,大数据量分布式数据流处理系统包含更少或更多的数据处理系统),或采用不同于30天的时间限度,或根据实际需求来定义将被看作是“实时”的时间范围。通过上面的实施例可以看到,本申请的大数据量分布式数据流处理方法基本上分为按时序性分割、数据处理、数据整合这样的三个阶段。在按时序性分割阶段,由于系统日志是时刻添加的,因此,首先由数据 识别模块10将实时数据流300分发到实时处理系统30;对于历史数据(例如30天以前数据流200以及30天以内数据流400),由于它们已经存储为文件,所以发送到历史文件处理系统(例如30天以前数据处理系统20以及30天以内数据处理系统40)。在数据处理阶段,历史处理系统和实时处理系统并行地处理不同时段的数据。在数据整合阶段,不同时段的数据并行处理完毕后的结果都被发送到数据整合模块50,这些结果被整合后,就可以输出,以对外提供服务。在本实施例中,按时序性对系统和数据进行分割,非常有利于处理具有时序性的大数据量的数据流,这是本申请处理海量数据的一个基础。设想数据流的每条信息都有时间戳的,则从最开始的数据到现在的数据(仍然在增长中),就是全量的数据流了。把某时间点定为分隔点的话,则可以把这全量的(或者说全部的)数据分为历史数据和实时数据。对于全量的数据流,我们可以分析出,一定时段前的历史数据,在某个时间点前已经存在。例如一天前的数据是不需要实时计算的,所以可以离线计算,只需要将其计算结果和其他模块(例如实时处理模块)的结果整合即可。按历史数据和实时计算分别处理,对历史数据离线计算,可以极大地减轻实时计算的压力。使实时数据能够被更快地计算。同时,历史数据可以得到更精细的计算。本申请按时序性分割数据,使不同时段的数据处理可以并行进行,从而保证了实时数据的高响应性能。为了进一步提高实时数据处理系统的性能,本申请还提出了将数据的信息单元(即数据块)按维度(在本申请中,“维度”一词用来区分不同属性或类型的数据,即不同维度的数据由不同类型功能模块来处理)进一步切分到各个功能模块(即不同类型的功能模块)。下面将以实时数据处理系统30为例来进行说明。图4示例性示出了图2中的实时处理系统30的一个实施例的示意图。如图4所示,实时处理系统30包括:一个横向(在本申请中,“横向”一词仅是为了便于标识这一层次的切分,而非方向上的概念)切分模块400;多个(N个)纵向(在本申请中,“纵向”一词仅是为了便于标识这一层次 的切分,而非方向上的概念)切分模块500;多个(N个)功能模块组600,其中每个功能模块组600包含多个(M个)功能模块;以及结果汇总模块700。图5示例性示出了与图4中的实时处理系统30相对应的本申请的实时处理方法的流程图。下面结合图4和图5来描述本申请的实时处理系统的一个实施例。在步骤S200,获取实时数据流300。在步骤S201,横向切分模块400将获取的实时数据流300切分成多个数据块(1、2、3...N...),(这一步骤中的切分即所谓的横向切分),并将所切分的数据块分别发送给多个(N个)纵向切分模块500。如图4所示,将第1个数据块发送给第1个纵向切分模块500,将第2个数据块发送给第2个纵向切分模块500,以此类推,将第N个数据块发送给第N个纵向切分模块500。可以理解,考虑到数据流虽然是无限的,但却是流动的,而多个(N个)纵向切分模块500中的每一个在处理完一个数据块后可以被重复使用,因此,纵向切分模块500的数量设置可以视数据流的流量大小而定。在步骤S202,每个纵向切分模块500将所接收的一个数据块切分成多个(视实际情况,可多至M个)数据单元(这一步骤中的切分即所谓的按维度纵向切分),并将所切分的多个数据单元分别发送给一个功能模块组600中的多个(相应于数据单元的数量,多至M个)不同的功能模块。如图4中所示,第1个纵向切分模块500将数据块1切分成M个数据单元,并将第1个数据单元发送至第1个功能模块组600的第1个功能模块,将第2个数据单元发送至第1个功能模块组600的第2个功能模块,以此类推,将第M个数据单元发送至第1个功能模块组600的第M个功能模块。以此类推,如果实时数据流300的数据流量足够大,第2个纵向切分模块500将数据块2切分成M个数据单元,并将第1个数据单元发送至第2个功能模块组600的第1个功能模块,将第2个数据单元发送至第2个功能模块组600的第2个功能模块,以此类推,将第M个数据单元发送至第2个功能模块组600的第M个功能模块。以此类推,如果实时数据流300的数据流量足够大,可以存在更多的数据块、纵向切分模块500、功能模块组600、以及功能模块。可以理解,纵向切分模块500、功能模块组600、以及功能模块组600中的功能模块的数量设 置分别可以视需要而定。步骤S202和步骤S203并行执行。在步骤S203,每个功能模块对所接收的数据单元进行处理,并将处理后的结果发送给结果汇总模块700。在步骤S204,结果汇总模块700将所接收的结果进行汇总,并输出汇总后的数据。通过本实施例的描述,可以看到,首先,实时数据流会被横向切分,分配到各个处理器(例如纵向切分模块500)上,各个处理器的功能是一样的。这些处理器并行处理,极大地提高了处理速度。然后,纵向切分模块500对数据块按维度纵向切分,即从数据块中提取出不同维度的数据单元,然后相应维度的数据单元被发送到相应的功能处理模块(即功能模块),由各个功能处理模块并行处理。以网站日志数据流为原始数据流为例,网站日志数据流首先被横向切分成多个日志信息数据块,每个日志信息数据块被分配到一个相应的纵向切分模块500上。然后,各纵向切分模块500对相应的日志信息数据块按维度纵向切分,例如,从日志信息数据块中提取商品信息送到商品处理单元,提取关键词信息送到关键词处理单元。这样一来,各个信息单元被分解为更细粒度的元素,分发到各个功能单元,并行处理。例如,作为处理实时网站日志数据流的功能单元,例如,商品信息解析模块解析商品信息,访问路径模块解析访问路径,各个模块并行处理。然后,用户和商品信息被送到推荐功能模块,用户和访问路径信息被送到反作弊模块,各个模块也是并行处理的。最后,各个功能模块处理的结果,都发送到整合器(例如结果汇总模块700,或进一步也包括数据整合模块50)上,由整合器对结果整合(汇总)处理。以上以实时数据处理系统为例描述了本申请对数据进行切分。可以理解,对于历史数据的处理系统,可以采用类似的架构。不同的是,由于历史数据处理采用周期性运行的方式,所以可以使用低成本的集群分布式运算系统。通过上面的描述,可以看到,本申请不是像现有的分布式数据流处理系统那样采用共享存储模式,而是通过按时序性和按维度对数据流进行多次分割和切分,即利用时序性,采用多层结构,对数据分时段处理,使用 新的分布式架构,利用不同维度,对信息流进行纵向切分,而非如现有的并行计算系统那样仅限于功能复制的架构,也就是说,本发明实现并行计算的方法并非是所有的运算模块是同样的功能,运行同样的程序,只是运算数据的不同部分。因此本发明能够实现更细粒度的并行,也能够实现模块化和模块的热插拔,并且有利于维护。本发明使得大数据量的实时计算成为可能。实时数据流的运算能够最大限度地以分布式并行处理,同时保证了大数据量处理和高实时性,提高了系统的反应速度。根据本申请的大数据量分布式数据流处理方法可以由具有运算处理能力的单个或多个处理设备,如单个或多个计算机,运行计算机可执行指令来实现。根据本申请的大数据量分布式数据流处理系统可以为单个或多个处理设备,如单个或多个计算机,其中的各个模块或单元可以为该处理设备运行计算机可执行指令时具有相应功能的设备组件。根据本申请的一个实施例,可以使用JAVA、SQL等语言在linux、Windows等系统下来实现上述大数据量分布式数据流处理方法及其系统。虽然已参照典型实施例描述了本申请,但应当理解,所用的术语是说明和示例性、而非限制性的术语。由于本申请能够以多种形式具体实施而不脱离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1