一种海量数据实时排序优化方法技术

技术编号:15746772 阅读:105 留言:0更新日期:2017-07-03 02:48
本发明专利技术公开了一种海量数据实时排序优化方法。本方法为:1)设置一集群级节点、若干节点级节点和若干文件级节点;2)集群级节点将收到的检索排序请求发送给各节点级节点,各节点级节点将该检索排序请求发送给本节点的文件级节点;3)各文件级节点根据该检索排序请求,将与本节点相关的日志文件排序后输出有序数据给节点级节点;4)各节点级节点根据该检索排序请求将本节点上符合时间范围和分区条件的日志数据排序后输出给该集群级节点;5)该集群级节点将各节点级节点发送过来的有序数据流进行排序汇总。在任意的排序场景中,本方法都能有效降低内存使用量。

Real time sorting optimization method for massive data

The invention discloses a real-time sorting optimization method for massive data. The method is as follows: 1) setting a cluster node number, node level nodes and node number of documents; 2) cluster node will receive the request sent to the sorting node node, each node node will send the request to the sorting file node the node; 3) each document node according to the sorting request associated with the node log files sorted output order data to the node level node; 4) each node node according to the retrieval request will sort the node log data with time scale and partition condition sorted output to the cluster node; 5) the cluster node will ordered data transmission of each node node over flow sorting summary. This method can effectively reduce memory usage in arbitrary sorting scenarios.

【技术实现步骤摘要】
一种海量数据实时排序优化方法
本专利技术涉及数据查询优化领域,是一种针对海量数据实时排序的优化方法。
技术介绍
由于日志数据之间一般都存在时序关系,这就要求检索引擎一方面能以秒级响应的性能获得满足业务用户需求的数据,另一方面还需要在获取数据时保持这种时序关系,即需要检索引擎支持面向海量日志数据的秒级排序功能。按照传统的排序方法,检索引擎需要获取所有满足条件的数据后才能进行排序并返回结果,这在结果集较大的情况下将无法实现秒级响应,另一方面由检索引擎缓存所有中间结果也将消耗大量的系统资源,从而影响检索引擎服务的整体性能。
技术实现思路
针对现有技术中存在的技术问题,本专利技术的目的在于提供一种海量数据实时排序优化方法。本专利技术提出针对海量日志数据的多级流水排序方法,该方法通过文件级、节点级、集群级三级流水排序的方式,一方面保证了首批结果集的响应时间,另一方面各级排序不用缓存所有中间结果,从而降低了检索引擎排序所需的内存资源。本专利技术的技术方案为:一种海量数据实时排序优化方法,其步骤为:1)设置一集群级节点、若干节点级节点和若干文件级节点;其中,集群级节点为接入检索排序请求的服务器节点,节点级节点为响应检索排序请求的服务器节点,文件级节点为节点级节点内部的文件排序进程;2)集群级节点将收到的检索排序请求发送给各节点级节点,各节点级节点将该检索排序请求发送给本节点的文件级节点;3)各文件级节点根据该检索排序请求,将与本节点相关的日志文件排序后输出有序数据给节点级节点;4)各节点级节点根据该检索排序请求将本节点上符合时间范围和分区条件的日志数据排序后输出给该集群级节点;5)该集群级节点将各节点级节点发送过来的有序数据流进行排序汇总。进一步的,所述节点级节点根据该检索排序请求确定需要排序的文件集合,然后为该文件集合中每一待排序文件分配一文件级节点;然后该文件级节点查询对应待排序文件中符合该检索排序请求的日志数据,并将其排序后发送给所述节点级节点。进一步的,所述节点级节点将其包含的文件级节点按时间区间合并成多个组,同一组文件级节点对应的文件属于同一时间区间;所述节点级节点依次从各组文件级节点获取所述有序数据进行排序后发送给所述集群级节点。进一步的,所述集群级节点将各节点级节点发送过来的有序数据流进行实时排序汇总后输出。进一步的,每一文件级节点维护一缓冲区,每一节点级节点维护一待排序数据缓冲区和一待输出数据缓冲区,所述集群级节点维护一缓冲区。进一步的,各文件级节点将排好序的数据放入其缓冲区中;所述节点级节点通过拉取模式不断从文件级节点的缓冲区中获取数据存入自己的待排序缓冲区中,并将排好的数据放入自己的待输出数据缓冲区的输出流中。进一步的,所述节点级节点根据该检索排序请求中的时间范围及分区条件,确定出文件级节点,并根据确定出的文件级节点采用剪枝策略对该时间范围和分区条件进行改写后生成新的检索排序请求发送给确定出的对应文件级节点。本专利技术主要包括两个方面:(1)多级流水排序模式处理海量数据的排序操作。(2)通过剪枝操作加快处理速度和减少内存使用量。该专利技术包括以下内容:1)多级流水节点处理海量数据。2)上层节点通过拉取模式获得下级节点的输出,降低上层节点缓冲区内存使用量。3)在任意两级节点之间实现剪枝策略,即对每个下层节点标记时间范围及用户自定义的分区条件,获取查询条件后对下层节点实现时间范围和分区条件的过滤,从而进一步提高处理速度并减少内存使用量。与现有技术相比,本专利技术的积极效果为:虽然该方法也可以适用于普通的大规模数据排序,但是在需要快速获得部分结果的实时交互场景中效果明显,在任意的排序场景中,该方法都能有效降低内存使用量。附图说明图1为多级流水排序示意图;图2为上下级节点关系示意图。具体实施方式下面结合附图,对优选实施例作详细说明。应该强调的是下述说明仅仅是示例性的,而不是为了限制本专利技术的范围及其应用。根据检索引擎的工作流程,节点共分为三层,集群级节点为接入检索排序请求的服务器节点,负责接收其他服务器节点发来的有序数据,并将各有序数据流汇总后返回给客户端;节点级节点为响应检索排序请求的其他服务器节点,负责接收集群级节点发来的检索排序请求,将本服务器节点上符合时间范围和分区条件的日志数据排序后输出传输给集群级节点;文件级节点为服务器内部的文件排序进程,负责接收节点级节点发来的检索排序请求,将与排序进程相关的日志文件排序后输出有序数据给节点级节点。因此,为了实现流水排序的目标,需要在文件级、节点级和集群级三级上分别做到检索结果是保序的。三级流水的具体结构如图1所示,下面将针对各流水级做详细说明。文件级文件级保序通过文件排序器(FileSorter)实现。如果节点级节点接收检索排序请求后,通过时间范围及分区条件确定需要排序的文件集合,然后为该文件集合中的每一个待排序文件分配一个文件排序器进程(即文件级节点)。排序器进程负责根据查询条件检索文件内包含的日志数据,并收集符合检索条件的记录。最后对满足检索条件的记录集合排序并将排序结果输出送入节点级节点。节点级节点级保序通过节点排序器(NodeSorter)实现。节点排序器的输入是各个本地文件排序器的输出结果,通过对各个文件的检索结果进行归并排序,得到本节点保序的检索结果。由于文件排序器的输出是保序的,因此节点排序器在获得各个文件排序器的首批排序结果后即可进行排序,首批排序结果即可作为集群级排序的输入。通话情况下,每个日志文件只保存一个特定时间区间内的数据,因此节点排序器无需等待从所有本节点的日志文件获取首批记录。节点排序器首先将文件排序器按时间区间合并成多个组(如图虚框所示),每一个组内的文件属于同一时间区间;然后依次从各个文件排序器组获取排序结果。集群级集群级保序通过集群排序器(ClusterSorter)实现。集群排序器的输入是各个节点排序器的输出结果,通过对各个节点的检索结果进行归并排序,得到最终保序的检索结果。由于节点排序器的输出是保序的,因此集群排序器在获得各个节点排序器的首批排序结果后即可进行排序(实际上,不用等每个节点的首批结果都返回),排序结果可作为最终结果返回给用户。上级与下级的具体关系描述图2展示了排序流程的上级排序器与下级排序器的关系,该结构既可以适用于节点级与文件级关系的描述,也可以适用于集群级与节点级关系的描述,这里假定了下级节点的个数为4个。如图2所示,下级节点将排好序的部分数据放入该下级节点的缓冲区中等待,上级节点通过拉取模式不断从下级节点的缓冲区中获取数据存入上级节点的待排序缓冲区中,并将排好的部分数据放入上级节点缓冲区的输出流中,从这个工作流程可以看出,每一个文件级节点维护了一块保序数据的缓冲区,集群级节点维护了一块待排序数据的缓冲区,该缓冲区缓冲了下层节点送来的多个保序数据流,节点级节点同时维护了待排序数据缓冲区以及待输出的保序数据缓冲区。因此各级节点采用维护一部分数据的缓冲区的方法,降低了排序所需的内存资源,缓冲区的大小可由用户根据业务数据特点自行定义,缓冲区在10M~20MB之间即可满足排序需求。为了进一步加快排序过程和减少缓冲区内存的使用量,上级节点在发送排序命令时会执行剪枝操作。上级节点接收检索请求后,通过分析检索条件中的时间范围及分区条本文档来自技高网...
一种海量数据实时排序优化方法

【技术保护点】
一种海量数据实时排序优化方法,其步骤为:1)设置一集群级节点、若干节点级节点和若干文件级节点;其中,集群级节点为接入检索排序请求的服务器节点,节点级节点为响应检索排序请求的服务器节点,文件级节点为节点级节点内部的文件排序进程;2)集群级节点将收到的检索排序请求发送给各节点级节点,各节点级节点将该检索排序请求发送给本节点的文件级节点;3)各文件级节点根据该检索排序请求,将与本节点相关的日志文件排序后输出有序数据给节点级节点;4)各节点级节点根据该检索排序请求将本节点上符合时间范围和分区条件的日志数据排序后输出给该集群级节点;5)该集群级节点将各节点级节点发送过来的有序数据流进行排序汇总。

【技术特征摘要】
1.一种海量数据实时排序优化方法,其步骤为:1)设置一集群级节点、若干节点级节点和若干文件级节点;其中,集群级节点为接入检索排序请求的服务器节点,节点级节点为响应检索排序请求的服务器节点,文件级节点为节点级节点内部的文件排序进程;2)集群级节点将收到的检索排序请求发送给各节点级节点,各节点级节点将该检索排序请求发送给本节点的文件级节点;3)各文件级节点根据该检索排序请求,将与本节点相关的日志文件排序后输出有序数据给节点级节点;4)各节点级节点根据该检索排序请求将本节点上符合时间范围和分区条件的日志数据排序后输出给该集群级节点;5)该集群级节点将各节点级节点发送过来的有序数据流进行排序汇总。2.如权利要求1所述的方法,其特征在于,所述节点级节点根据该检索排序请求确定需要排序的文件集合,然后为该文件集合中每一待排序文件分配一文件级节点;然后该文件级节点查询对应待排序文件中符合该检索排序请求的日志数据,并将其排序后发送给所述节点级节点。3.如权利要求2所述的方法,其特征在于,所述节点级节点将其包含...

【专利技术属性】
技术研发人员:李波古晓艳钟进文王卓王伟平孟丹
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

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

1