一种在分布式存储系统中统计数据的方法、装置及系统与流程

文档序号:11830344阅读:234来源:国知局
一种在分布式存储系统中统计数据的方法、装置及系统与流程

本发明涉及通信领域,特别涉及一种在分布式存储系统中统计数据的方法、装置及系统。



背景技术:

HBase数据存储系统是一种分布式存储系统,具有高可靠性、高性能、面向列、可伸缩等特性,利用HBase数据存储系统可以在廉价的PC Server上搭建起大规模结构化存储集群。目前HBase数据存储系统常常用作网站的存储系统,用于存储网站与用户交互中产生的各类网络数据。

网站的技术人员为了把握市场需求需要常常对网站中产生的各类网络数据进行统计,根据各类网络数据的统计结果分析市场需求。目前技术人员可以在自己的终端上向网站的HBase数据存储系统发送查询请求消息;HBaes数据存储系统中的各服务器将自身存储的网络数据发送给终端;然后终端接收每个服务器发送的网络数据,从接收的网络数据中找出所需要统计的数据,对找出的数据进行统计得到统计结果。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

目前HBase数据存储系统中的每服务器将自身存储的网络数据发送给终端,导致网络IO(Input Output,输入输出)开销大,另外,由终端对所有数据进行统计,统计效率低下。



技术实现要素:

为了减少网络IO开销以及提高统计效率,本发明提供了一种在分布式存储系统中统计数据的方法、装置及系统。所述技术方案如下:

一种在分布式存储系统中统计数据的方法,所述方法包括:

接收查询请求消息,所述查询请求消息携带数据条件;

向分布式存储系统中的数据服务器发送所述查询请求消息,使所述数据服 务器分别从自身存储的数据中找出满足所述数据条件的数据,统计所述找出的数据得到统计结果;

接收所述分布式存储系统中的数据服务器返回的统计结果,对接收的统计结果进行汇总得到最终统计结果。

一种在分布式存储系统中统计数据的装置,所述装置包括:

接收模块,用于接收查询请求消息,所述查询请求消息携带数据条件;

发送模块,用于向分布式存储系统中的数据服务器发送所述查询请求消息,使所述数据服务器分别从自身存储的数据中找出满足所述数据条件的数据,统计所述找出的数据得到统计结果;

汇总模块,用于接收所述分布式存储系统中的数据服务器返回的统计结果,对接收的统计结果进行汇总得到最终统计结果。

一种分布式存储系统,所述分布式存储系统包括:交互服务器和多个数据服务器;

所述交互服务器,用于接收终端发送的查询请求消息,所述查询请求消息携带数据条件,向分布式存储系统中的数据服务器发送该查询请求消息;接收所述数据服务器返回的统计结果,对接收的各统计结果进行汇总得到最终统计结果;

所述数据服务器,用于接收所述交互服务器发送的查询请求消息,从自身存储的数据文件中找出满足所述数据条件的数据,对找出的数据进行统计得到统计结果,向所述交互服务器发送所述统计结果。

在本发明实施例中,各数据服务器具有统计数据的功能,各数据服务器可以并行的进行数据统计,统计时间由之前的分级缩短到秒级,大大提高了数据统计的效率;另外,各数据服务器只将统计结果返回给交互服务器,再由交互服务器返回给客户端,相比直接返回数据,大大减少网络IO的开销。

附图说明

图1-1是本发明实施例1提供的一种分布式存储系统的网络架构图;

图1-2是本发明实施例1提供的分区结构示意图;

图1-3是本发明实施例1提供的合并数据文件示意图;

图2是本发明实施例2提供的一种在分布式存储系统中统计数据的方法流 程图;

图3是本发明实施例3提供的一种在分布式存储系统中统计数据的方法流程图;

图4是本发明实施例4提供的一种在分布式存储系统中统计数据的装置结构示意图;

图5是本发明实施例5提供的一种服务器结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例1

参见图1-1,本发明实施例提供了一种分布式存储系统,包括:

交互服务器和多个数据服务器,交互服务器分别与每个数据服务器相连,并与每个数据服务器组成一个局域网,交互服务器接入外网并通过外网与用户的终端进行交互。

用户需要统计数据时可以在其对应的终端上设置数据条件,然后终端向交互服务器发送携带该数据条件的查询请求消息,以请求交互服务器统计分布式存储系统中满足该数据条件的数据。

交互服务器用于接收终端发送的查询请求消息,该查询请求消息携带数据条件,向分布式存储系统中的数据服务器发送该查询请求消息;接收数据服务器返回的统计结果,对接收的各统计结果进行汇总得到最终统计结果,向终端发送该最终统计结果。

数据服务器用于存储分布式存储系统中的数据文件,接收交互服务器发送的查询请求消息,从自身存储的数据文件中找出满足该数据条件的数据,对找出的数据进行统计得到统计结果,向交互服务器发送该统计结果。

进一步地,交互服务器还用于获取服务器列表,该服务器列表中的数据服务器用于存储分布存储系统中的各数据文件且一个数据文件存储在一个数据服务器中;在接收到该查询请求消息时,向该服务器列表中的各数据服务器发送该查询请求消息。

可选的,交互服务器将分布式存储系统中属于同一分区的各数据文件合并为一个数据文件;配置一个服务器集合,该服务器集合中包括分布式存储系统中的一个或多个数据服务器;将合并的数据文件分别存储在该服务器集合中的各数据服务器中;从该服务集合中选择一数据服务器,将选择的数据服务器的标识添加到服务器列表中。

在本实施例中,各数据服务器具有统计数据的功能,各数据服务器可以并行的进行数据统计,统计时间由之前的分级缩短为秒级,大大提高了数据统计的效率;另外,各数据服务器只将统计结果返回给交互服务器,再由交互服务器返回给客户端,相比直接返回数据,大大减少网络IO的开销。

数据服务器中存储的数据都是网站在与用户交互时产生的数据,网站将产生的数据存储在数据服务器的数据文件中。网站在分布式存储系统中是按分区来存储数据,一个分区中可以包括一个或多个数据文件,且一个分区可以位于同一数据服务器上或在不同的数据服务器上。例如,参见图1-2,分区1中包括数据文件HFile11、HFile12……HFile1N,网站产生数据时,如果将该数据存储在分区1,网站从分区1包括的数据文件HFile11、HFile12……HFile1N中选择一个或多个数据文件,假设选择数据文件HFile11和HFile12,将该数据存储在数据文件HFile11和HFile12中。

当一个分区包括多个数据文件且该多个数据文件可能位于不同的数据服务器中,由于多个数据文件中可能存在部分数据相同,由各数据服务器直接对自身存储的数据进行统计会影响统计结果的精度,所以在请求每个数据服务器对数据进行统计之前,交互服务器还用于将分布式存储系统中属于同一分区的各数据文件合并为一个数据文件,并存储在一台数据服务器中。

交互服务器合并一个数据文件后,还配置一个服务器集合,该服务器集合中包括分布式存储系统中的一个或多个数据服务器;将合并的数据文件分别存储在服务器集合中的各数据服务器中,服务器集合中的各数据服务器相互备份各自的数据;从服务器集合中选择一数据服务器,选择的数据服务器用于进行数据统计,其他未选择的数据服务器对选择的数据服务器进行备份,将选择的数据服务器的标识添加到服务器列表中。相应地,交互服务器在接收到终端发送的查询请求消息时,向服务器列表中的各数据服务器发送该查询请求消息。

参见图1-3,交互服务器可以将属于分区1的数据文件HFile11、HFile12…… HFile1N合并成一个数据文件HFile1,配置一个服务器集合,该服务器集合中包括数据服务器Server1、Server2和Server3,将合并的数据文件HFile1分别存储在数据服务器Server1、Server2和Server3中,然后选择数据服务器Server1并将数据服务器Server1的标识添加到服务器列表中。其中,数据服务器Server1用于进行数据统计,数据服务器Server2和Server3用于对数据服务器Server1进行备份。

在本实施例中,分布式存储系统可以为HBase存储系统,数据文件为可以为HFile文件。在数据服务器中存储的数据可以为(key,value)对,value为具体的数据内容,key为数据标识。例如,该(key,value)对可以为用户标识与用户信息,用户信息可以包括用户性别、姓名、所在城市和/或爱好等信息。

在本发明实施例中,分布式存储系统为Hbase分布式存储系统。

在本发明实施例中,各数据服务器具有统计数据的功能,各数据服务器可以并行的进行数据统计,统计时间由之前的分级缩短到秒级,大大提高了数据统计的效率;另外,各数据服务器只将统计结果返回给交互服务器,再由交互服务器返回给客户端,相比直接返回数据,大大减少网络IO的开销。交互服务器还用于将分布式存储系统中属于同一分区的各数据文件合并为一个数据文件,并存储在一台数据服务器中,提高了统计结果的精度。

实施例2

参见图2,本发明实施例提供了一种在分布式存储系统中统计数据的方法,包括:

步骤201:接收查询请求消息,该查询请求消息携带数据条件。

步骤202:向分布式存储系统中的数据服务器发送该查询请求消息,使数据服务器分别从自身存储的数据中找出满足数据条件的数据,统计找出的数据得到统计结果。

步骤203:接收分布式存储系统中的数据服务器返回的统计结果,对接收的统计结果进行汇总得到最终统计结果。

进一步地,在向分布式存储系统中的各数据服务器发送该查询请求消息之前,还包括:

获取服务器列表,该服务器列表中的数据服务器用于存储分布存储系统中 的各数据文件且一个数据文件存储在一个数据服务器中;

可选的,向分布式存储系统中的各数据服务器发送该查询请求消息,包括:

向服务器列表中的各数据服务器发送该查询请求消息。

可选的,获取服务器列表,包括:

将分布式存储系统中属于同一分区的各数据文件合并为一个数据文件;

配置一个服务器集合,该服务器集合中包括分布式存储系统中的一个或多个数据服务器;

将合并的数据文件分别存储在该服务器集合中的各数据服务器中;

从该服务集合中选择一数据服务器,将选择的数据服务器的标识添加到服务器列表中。

其中,分布式存储系统为Hbase分布式存储系统。

在本发明实施例中,各数据服务器具有统计数据的功能,各数据服务器可以并行的进行数据统计,统计时间由之前的分级缩短到秒级,大大提高了数据统计的效率;另外,各数据服务器只将统计结果返回给交互服务器,再由交互服务器返回给客户端,相比直接返回数据,大大减少网络IO的开销。

实施例3

参见图3,本发明实施例提供了一种在分布式存储系统中统计数据的方法,包括:

步骤301:交互服务器将分布式存储系统中属于同一分区的各数据文件合并为一个数据文件。

在分布式存储系统中每个数据文件中包含其属于的分区的分区标识。本步骤可以为:交互服务器对分布式存储系统中的每个数据服务器中的数据文件进行扫描,扫描出包含同一分区标识的数据文件,将包含同一分区标识的数据文件合并为一个数据文件。

分布式存储系统中的数据都是网站与用户进行交互时产生的数据。网站按分区来存储数据。一个分区中包括一个或多个数据文件,且一个分区可以位于同一数据服务器上或位于不同的数据服务器上。由于属于同一分区的数据文件中可能存在部分数据相同,如果将这些相同的数据分布在不同数据服务器,由各数据服务器分别进行统计,得到统计结果中存在部分数据被重复统计,造成 最终统计结果不准确,因此需要执行本步骤将同一分区的数据文件合并为同一数据文件。

步骤302:交互服务器配置服务器集合,该服务器集合中包括分布式存储系统中的一个或多个数据服务器。

分布式存储系统中的各数据服务器可以被事先划分成多个服务器集合,每个服务器集合中包括的数据服务器的数目相同。服务器集合中的各数据服务器用于进行相互间的备份,所以服务器集合中的各数据服务器存储的数据都相同。

步骤303:交互服务器将合并的数据文件分别存储在该服务器集合中的各数据服务器中。

步骤304:交互服务器从该服务器集合中选择一数据服务器,将选择的数据服务器的标识添加到服务器列表中。

服务器集合中包括的各数据服务器存储的数据都相同,所以一个服务器集合只需要一个数据服务器用于统计数据,其他的数据服务器对应该数据服务器进行备份。其中,交互服务器从服务器集合中选择出来的一个数据服务器即用于统计数据,其他未选择的各数据服务器对选择的数据服务器进行备份。

交互服务器重复按上述步骤301至304将分布式存储系统中的所有属于同一分区的数据文件合并为一数据文件。然后用户便可以在终端中请求交互服务器进行数据统计,具体流程如下。

步骤305:交互服务器接收终端发送的查询请求消息,该查询请求消息携带数据条件。

用户需要交互服务器进行数据统计时,可以在其对应的终端上设置数据条件,例如,该数据条件可以为统计所在地为上海的用户数目,统计爱好为打篮球的用户数目或统计性别为女性的用户数目等。然后终端向交互服务器发送携带该数据条件的查询请求消息。

步骤306:交互服务器向该服务器列表中的每个数据服务器发送该查询请求消息。

交互服务器根据该服务器列表中的每个数据服务器的标识,分别向每个数据服务器发送该查询请求消息。

步骤307:数据服务器接收该查询请求消息,根据该查询请求消息携带的数据条件从自身存储的数据中寻找出满足该数据条件的数据。

步骤308:数据服务器对找出的数据进行统计得到统计结果,返回该统计结果给交互服务器。

步骤309:交互服务器接收各数据服务器的统计结果,对各数据服务器的统计结果进行汇总得到最终统计结果,向终端发送最终统计结果。

交互服务器对接收的各统计结果进行累加得到最终统计结果,向终端发送最终统计结果,终端接收并显示最终统计结果给用户,以使用户对统计结果进行分析。

在本实施例中,各数据服务器具有统计数据的功能,各数据服务器可以并行的进行数据统计,统计时间由之前的分级缩短至秒级,大大提高了数据统计的效率;另外,各数据服务器只将统计结果返回给交互服务器,再由交互服务器返回给客户端,相比直接返回数据,大大减少网络IO的开销。交互服务器还用于将分布式存储系统中属于同一分区的各数据文件合并为一个数据文件,并存储在一台数据服务器中,提高了统计结果的精度。

实施例4

参见图4,本发明实施例提供了一种在分布式存储系统中统计数据的装置,包括:

接收模块401,用于接收查询请求消息,所述查询请求消息携带数据条件;

发送模块402,用于向分布式存储系统中的数据服务器发送所述查询请求消息,使所述数据服务器分别从自身存储的数据中找出满足所述数据条件的数据,统计所述找出的数据得到统计结果;

汇总模块403,用于接收所述分布式存储系统中的数据服务器返回的统计结果,对接收的统计结果进行汇总得到最终统计结果。

进一步地,所述装置还包括:

获取模块,用于获取服务器列表,所述服务器列表中的数据服务器用于存储所述分布存储系统中的各数据文件且一个数据文件存储在一个数据服务器中;

可选的,所述发送模块402,用于向所述服务器列表中的各数据服务器发送所述查询请求消息。

可选的,所述获取模块包括:

合并单元,用于将所述分布式存储系统中属于同一分区的各数据文件合并为一个数据文件;

配置单元,用于配置一个服务器集合,所述服务器集合中包括所述分布式存储系统中的一个或多个数据服务器;

存储单元,用于将所述合并的数据文件分别存储在所述服务器集合中的各数据服务器中;

添加单元,用于从所述服务集合中选择一数据服务器,将所述选择的数据服务器的标识添加到服务器列表中。

其中,所述分布式存储系统为Hbase分布式存储系统。

在本实施例中,各数据服务器具有统计数据的功能,各数据服务器可以并行的进行数据统计,统计时间由之前的分级缩短至秒级,大大提高了数据统计的效率;另外,各数据服务器只将统计结果返回给交互服务器,再由交互服务器返回给客户端,相比直接返回数据,大大减少网络IO的开销。交互服务器还用于将分布式存储系统中属于同一分区的各数据文件合并为一个数据文件,并存储在一台数据服务器中,提高了统计结果的精度。

实施例5

参见图5,本发明实施例提供的服务器的结构示意图,该服务器可以为上述交互服务器。服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。

服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作系统1941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。

服务器1900可以包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:

接收查询请求消息,所述查询请求消息携带数据条件;

向分布式存储系统中的数据服务器发送所述查询请求消息,使所述数据服务器分别从自身存储的数据中找出满足所述数据条件的数据,统计所述找出的数据得到统计结果;

接收所述分布式存储系统中的数据服务器返回的统计结果,对接收的统计结果进行汇总得到最终统计结果。

进一步地,所述向分布式存储系统中的各数据服务器发送所述查询请求消息之前,还包括:

获取服务器列表,所述服务器列表中的数据服务器用于存储所述分布存储系统中的各数据文件且一个数据文件存储在一个数据服务器中;

所述向分布式存储系统中的各数据服务器发送所述查询请求消息,包括:

向所述服务器列表中的各数据服务器发送所述查询请求消息。

可选的,所述获取服务器列表,包括:

将所述分布式存储系统中属于同一分区的各数据文件合并为一个数据文件;

配置一个服务器集合,所述服务器集合中包括所述分布式存储系统中的一个或多个数据服务器;

将所述合并的数据文件分别存储在所述服务器集合中的各数据服务器中;

从所述服务集合中选择一数据服务器,将所述选择的数据服务器的标识添加到服务器列表中。

所述分布式存储系统为Hbase分布式存储系统。

在本实施例中,各数据服务器具有统计数据的功能,各数据服务器可以并行的进行数据统计,统计时间由之前的分级缩短至秒级,大大提高了数据统计的效率;另外,各数据服务器只将统计结果返回给交互服务器,再由交互服务器返回给客户端,相比直接返回数据,大大减少网络IO的开销。交互服务器还用于将分布式存储系统中属于同一分区的各数据文件合并为一个数据文件,并存储在一台数据服务器中,提高了统计结果的精度。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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