一种日志数据流处理方法与流程

文档序号:12666464阅读:410来源:国知局
一种日志数据流处理方法与流程

本发明属于数据流处理领域,尤其涉及日志数据流处理方法。



背景技术:

现有技术中对日志进行实时分析可以把握系统的当前状态并进行实时响应,目前对海量日志数据流进行分布式实时流处理的方式为:首先实时接收一批数据流,并将该数据流采用分布式分发的方式下发到多个处理单元,每个处理单元接收分发的一个或多个数据流并进行实时分析处理,处理完的数据流进行整合输出。

但是,现有的数据流分布式并行处理方式在任务划分时没有精细化地考虑到各个计算节点的实时处理能力,会造成有些计算节点当前的实时计算能力较低不适合进行日志数据流的实时处理,无法实现细粒度的并行管理。同时,各个计算节点处理数据流的并行度通常是预先设定好的,不能随着操作数据流的时变性以及外部负载的变化进行动态更新,没有实现动态实时控制处理效率。

基于上述问题,现在亟需一种新的日志数据流处理方法,根据将数据流进行时序划分为多个子实时数据流和多个子历史数据文件,根据计算节点的实时处理能力相应的分配上述多个子实时数据流和多个子历史数据文件,根据计算节点的实时处理能力实现数据流的细粒度管理。同时,根据操作数据流的接收速率和处理速率动态的调整各个计算节点的线程数量,线程数量随着操作数据流的时变性以及外部负载的变化进行动态更新,实现动态实时控制处理效率。



技术实现要素:

为了解决现有技术中的上述问题,本发明提出了一种日志数据流处理方法。

本发明采用的技术方案如下:

一种日志数据流处理方法,其特征在于,所述方法用于多节点数据流处理系统中,所述系统包括一个主控节点和多个计算节点,其中所述主控节点用于根据接收到的数据流向各个计算节点分配任务,各个计算节点用于对所接收到的分配任务并行地进行计算;该方法包括如下步骤:

(1)主控节点接收日志数据流,并对日志数据流进行一次时序分组,一次时序分组后将日志数据流分为实时数据流和历史数据文件;

(2)主控节点分别对实时数据流和历史数据流进行二次时序分组,二次时序分组后将日志数据流分为n个子实时数据流和m个子历史数据文件;

(3)主控节点监控各个计算节点的实时计算能力并按实时计算能力从高到低将多个计算节点进行排队,实时计算能力由计算节点当前单位时间内处理的数据量来衡量;

(4)主控节点选择实时计算能力排序高的前n个计算节点作为子实时数据流计算节点,从选择完n个子实时数据流计算节点后的排序队列中再按从高到低顺序选择前m个计算节点作为子历史数据文件计算节点;

(5)主控节点将n个子实时数据流任务实时分配给n个子实时数据流计算节点,将m个子历史数据文件任务发送给m个子历史数据文件计算节点;

(6)各个子实时数据流计算节点根据接收的子实时数据流任务中用于指示进行该子实时数据流任务的目标逻辑任务的接收速率,以及所述目标逻辑任务的处理速率,确定执行所述子实时数据流任务的并行度,所述并行度为并行执行所述子实时数据流任务的线程数量,所述逻辑任务是主控节点根据子实时数据流任务分配的,用于指示待处理子实时数据流任务以及所述待处理子实时数据流任务所需进行的操作;各个子历史数据文件计算节点根据接收的子历史数据文件任务中用于指示进行该子历史数据文件任务的目标逻辑任务的接收速率,以及所述目标逻辑任务的处理速率,确定执行所述子历史数据文件任务的并行度,所述并行度为并行执行所述子历史数据文件任务的线程数量,所述逻辑任务是主控节点根据子历史数据文件任务分配的,用于指示待处理子历史数据文件任务以及所述待处理子历史数据文件任务所需进行的操作;

(7)各个子实时数据流计算节点根据所述子实时数据流任务的并行度,对所述目标逻辑任务进行整合得到至少一个子实时物理任务,所述子实时物理任务的数量与所述并行度相同;各个子历史数据文件计算节点根据所述子历史数据流的并行度,对所述目标逻辑任务进行整合得到至少一个子历史物理任务,所述子历史物理任务的数量与所述并行度相同;

(8)各个子实时数据流计算节点执行所述至少一个子实时物理任务;并行地,各个子实时数据流计算节点执行所述至少一个子历史物理任务;

(9)各个子实时数据流计算节点和各个子实时数据流计算节点将各自并行处理完的结果发送到主控节点,主控节点对上述结果进行整合并输出。

本发明的有益效果包括:根据将数据流进行时序划分为多个子实时数据流和多个子历史数据文件,根据计算节点的实时处理能力相应的分配上述多个子实时数据流和多个子历史数据文件,根据计算节点的实时处理能力实现数据流的细粒度管理。同时,根据操作数据流的接收速率和处理速率动态的调整各个计算节点的线程数量,线程数量随着操作数据流的时变性以及外部负载的变化进行动态更新,实现动态实时控制处理效率。

【附图说明】

此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:

图1是本发明多节点数据处理系统的框架图;

图2是本发明日志数据流处理方法的流程图。

【具体实施方式】

下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。

参见附图1,一种日志数据流处理方法用于多节点数据流处理系统中,所述系统包括一个主控节点和多个计算节点,其中所述主控节点用于根据接收到的数据流向各个计算节点分配任务,各个计算节点用于对所接收到的分配任务并行地进行计算。在一个实施方式,所述多节点处于分布式系统中,或多节点处于云系统中。

参见附图2,一种日志数据流处理方法,该方法包括如下步骤:

(1)主控节点接收日志数据流,并对日志数据流进行一次时序分组,一次时序分组后将日志数据流分为实时数据流和历史数据文件。

在一个实施例中,根据实际需要来定义作为“实时”的时间范围,当前“实时”时间范围内的日志数据流被划分为实时数据流,在一个实施例中,“当前3个小时内”日志数据流被作为实时数据流,其余数据流是已经被存储的历史数据被作为历史数据文件。

(2)主控节点分别对实时数据流和历史数据流进行二次时序分组,二次时序分组后将日志数据流分为n个子实时数据流和m个子历史数据文件。

在一个实施例中,将“当前3个小时内”的实时数据流又可以按小时划分为n个子实时数据流,例如每1个小时间隔进行划分为3个子实时数据流;历史数据文件又可以按小时数或天数划分,如划分为当前历史数据文件、2天内子历史数据文件、2-4天内子历史数据文件、4-6天内子历史数据文件,6-8天内子历史数据文件…..

(3)主控节点监控各个计算节点的实时计算能力并按实时计算能力从高到低将多个计算节点进行排队,实时计算能力由计算节点当前单位时间内处理的数据量来衡量。

(4)主控节点选择实时计算能力排序高的前n个计算节点作为子实时数据流计算节点,从选择完n个子实时数据流计算节点后的排序队列中再按从高到低顺序选择前m个计算节点作为子历史数据文件计算节点。

由于历史数据文件已经进行存储,因此可以离线处理,对于计算节点的实时计算能力要求不高,而子实时数据流需要进行实时处理,因此要求计算节点的实时处理能力较高。所以,选择实时计算能力排序高的前n个计算节点作为子实时数据流计算节点用于实时处理,再按从高到低顺序选择前m个计算节点作为子历史数据文件计算节点用于历史数据处理。

(5)主控节点将n个子实时数据流任务实时分配给n个子实时数据流计算节点,将m个子历史数据文件任务发送给m个子历史数据文件计算节点。

由于本申请是根据计算节点的实时处理能力相应的分配上述多个子实时数据流和多个子历史数据文件,根据计算节点的实时处理能力实现数据流的细粒度管理。

(6)各个子实时数据流计算节点根据接收的子实时数据流任务中用于指示进行该子实时数据流任务的目标逻辑任务的接收速率,以及所述目标逻辑任务的处理速率,确定执行所述子实时数据流任务的并行度,所述并行度为并行执行所述子实时数据流任务的线程数量,所述逻辑任务是主控节点根据子实时数据流任务分配的,用于指示待处理子实时数据流任务以及所述待处理子实时数据流任务所需进行的操作;各个子历史数据文件计算节点根据接收的子历史数据文件任务中用于指示进行该子历史数据文件任务的目标逻辑任务的接收速率,以及所述目标逻辑任务的处理速率,确定执行所述子历史数据文件任务的并行度,所述并行度为并行执行所述子历史数据文件任务的线程数量,所述逻辑任务是主控节点根据子历史数据文件任务分配的,用于指示待处理子历史数据文件任务以及所述待处理子历史数据文件任务所需进行的操作。

在本申请中,由主控节点对目标逻辑任务的接收速率以及处理速率进行监控,当监控到所述目标逻辑任务的接收速率发生变化时,根据所述目标逻辑任务的接收速率和处理速率,按照第一策略调整并行度;当监控到所述目标逻辑任务的处理速率发生变化时,根据所述目标逻辑任务的接收速率和所述目标逻辑任务的处理速率,按照第二策略调整所述并行度。

其中,第一策略包括如果所述目标逻辑任务的接收速率增加,并且所述目标逻辑任务的处理速率小于接收速率,则提高并行度;如果所述目标逻辑任务的接收速率降低,并且所述目标逻辑任务的处理速率小于接收速率,则降低并行度。第二策略包括若所述目标逻辑任务的处理速率增加,则提高所述并行度;如果所述目标逻辑任务的处理速率降低,并且所述目标逻辑任务的处理速率小于接收速率,则降低并行度;如果所述目标逻辑任务的处理速率降低,并且所述目标逻辑任务的处理速率大于接收速率,则降低并行度。

(7)各个子实时数据流计算节点根据所述子实时数据流任务的并行度,对所述目标逻辑任务进行整合得到至少一个子实时物理任务,所述子实时物理任务的数量与所述并行度相同;各个子历史数据文件计算节点根据所述子历史数据流的并行度,对所述目标逻辑任务进行整合得到至少一个子历史物理任务,所述子历史物理任务的数量与所述并行度相同;

(8)各个子实时数据流计算节点执行所述至少一个子实时物理任务;并行地,各个子实时数据流计算节点执行所述至少一个子历史物理任务;

(9)各个子实时数据流计算节点和各个子实时数据流计算节点将各自并行处理完的结果发送到主控节点,主控节点对上述结果进行整合并输出。

本发明根据将数据流进行时序划分为多个子实时数据流和多个子历史数据文件,根据计算节点的实时处理能力相应的分配上述多个子实时数据流和多个子历史数据文件,根据计算节点的实时处理能力实现数据流的细粒度管理。同时,根据操作数据流的接收速率和处理速率动态的调整各个计算节点的线程数量,线程数量随着操作数据流的时变性以及外部负载的变化进行动态更新,实现动态实时控制处理效率。

以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1