CN102725753B - 优化数据访问的方法及装置、优化数据存储的方法及装置 - Google Patents
优化数据访问的方法及装置、优化数据存储的方法及装置 Download PDFInfo
- Publication number
- CN102725753B CN102725753B CN201180002537.6A CN201180002537A CN102725753B CN 102725753 B CN102725753 B CN 102725753B CN 201180002537 A CN201180002537 A CN 201180002537A CN 102725753 B CN102725753 B CN 102725753B
- Authority
- CN
- China
- Prior art keywords
- data
- input
- key assignments
- piecemeal
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 93
- 238000013500 data storage Methods 0.000 title claims abstract description 22
- 238000005457 optimization Methods 0.000 claims description 42
- 238000005192 partition Methods 0.000 claims description 30
- 238000013507 mapping Methods 0.000 claims description 2
- 238000000638 solvent extraction Methods 0.000 abstract 3
- 230000008569 process Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 241001269238 Data Species 0.000 description 4
- 208000033361 autosomal recessive with axonal neuropathy 2 spinocerebellar ataxia Diseases 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 238000009472 formulation Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种优化数据访问的方法及装置、以及一种优化数据存储的方法及装置,该优化数据访问的方法包括:主控制器接收用户访问HBASE中数据表的请求,所述请求中携带数据输入范围信息,所述数据输入范围信息包括多个数据输入范围;根据所述数据表的分区信息及所述数据输入范围信息,确定输入分块信息;根据所述输入分块信息确定Map任务个数;按照所述Map任务个数分配从处理器读取所述数据表中的数据;将所述从处理器读取的数据返回给所述用户。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种优化数据访问的方法及装置、以及一种优化数据存储的方法及装置。
背景技术
MapReduce作为大规模数据并行处理方法,已经广泛应用于大规模数据分析中。HBASE(Hadoop Database)是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,HBASE可以作为MapReduce的数据来源和数据目的地,从而使得MapReduce能够处理HBASE中保存的数据或者将输出数据保存在HBASE中。
在HBASE作为MapReduce的数据来源时,通过表名和范围查询对象来定义MapReduce访问的表和访问的数据范围,其中范围查询对象通过制定起始键值和终止键值来定义数据查询范围。
当用户程序调用MapReduce函数,就会引起如下操作:
(1)MapReduce根据表名从HBASE中获取制定表的所有分区(Region)信息,通过比较范围查询对象定义数据范围和所有分区信息得到分块信息和个数M。
(2)主控制器根据分块信息和个数创建Map(映射)任务,每个Map任务处理一个分块中的数据。
(3)其它流程同基本MapReduce过程。
在HBASE作为MapReduce的数据目的地时,通过表名来定义MapReduce数据将要保存的表,主要有如下操作:
(1)用户程序中的MapReduce函数库首先将输入文件分成M块,根据数据要保存的表,访问HBASE元数据表得到表对应的范围信息,通过范围信息指定Reduce(化简)个数R。
(2)主控制器得到输入划分信息,为每个划分创建一个Map任务。根据配置的Reduce数量,创建Reduce任务。总共有M个Map任务和R个Reduce任务需要分派。主控制器向从处理器分派任务。总共有M个Map任务和R个Reduce任务需要分派。
(3)其它流程同基本MapReduce过程。
由上述处理过程可以看出,现有技术至少存在以下问题:
在HBASE作为MapReduce的数据来源时,根据一个范围查询对象中的数据查询范围来定义MapReduce访问的数据范围,为了使符合要求的记录数据不被遗漏,只能通过扩大范围查询对象指定的数据范围,从而导致涵盖过多分区且分区中包含大量无效数据。MapReduce程序读取分区中的符合要求的记录外,还必须读取大量无效记录进行比较并丢弃,造成大量无效操作,严重降低了数据处理执行速度。
在HBASE作为MapReduce的数据目的地时,如果数据保存的分区范围有限,则会产生多个无用Reduce进程,浪费调度时间和系统资源,降低了数据处理执行速度。
发明内容
本发明实施例一方面提供一种优化数据访问的方法及装置,以减少无效数据的读取,提高数据处理效率。
本发明实施例一方面提供一种优化数据存储的方法及装置,以减少无效MapReduce任务的执行,提高数据处理效率。
为了解决以上技术问题,本发明实施例采取的技术方案是:
一种优化数据访问的方法,包括:
主控制器接收用户访问HBASE中数据表的请求,所述请求中携带数据输入范围信息,所述数据输入范围信息包括多个数据输入范围;
根据所述数据表的分区信息及所述数据输入范围信息,确定输入分块信息;
根据所述输入分块信息确定Map任务个数;
按照所述Map任务个数分配从处理器读取所述数据表中的数据;
将所述从处理器读取的数据返回给所述用户。
一种优化数据存储的方法,包括:
主控制器接收用户向HBASE中数据表存储数据的请求,所述请求中携带一个或多个数据输出范围;
根据所述数据表的分区信息及所述数据输出范围,确定输出分块信息;
根据所述输出分块信息确定Reduce任务个数;
按照所述Reduce任务个数分配从处理器向所述数据表中写入数据。
一种优化数据访问的装置,包括:
接收单元,用于接收用户访问HBASE中数据表的请求,所述请求中携带数据输入范围信息,所述数据输入范围信息包括多个数据输入范围;
输入分块单元,用于根据所述数据表的分区信息及所述数据输入范围信息,确定输入分块信息;
任务确定单元,用于根据所述输入分块信息确定Map任务个数;
分配单元,用于按照所述Map任务个数分配从处理器读取所述数据表中的数据;
发送单元,用于将所述从处理器读取的数据返回给所述用户。
一种优化数据存储的装置,包括:
接收单元,用于接收用户向HBASE中数据表存储数据的请求,所述请求中携带一个或多个数据输出范围;
输出分块单元,用于根据所述数据表的分区信息及所述数据输出范围,确定输出分块信息;
任务确定单元,用于根据所述输出分块信息确定Reduce任务个数;
分配单元,用于按照所述Reduce任务个数分配从处理器向所述数据表中写入数据。
本发明实施例优化数据访问的方法及装置,在HBASE作为MapReduce的数据来源时,通过指定多个数据输入范围来减少无效数据的读取,提高数据处理效率;相应地,本发明实施例优化数据存储的方法及装置,在HBASE作为MapReduce的数据目的地时,通过指定多个数据输出范围来减少无效MapReduce任务的执行,提高数据处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有的MapReduce的操作流程示意图;
图2是现有HBASE数据库中表的数据模型示意图;
图3是现有技术中HBASE作为数据来源时MapReduce的操作流程示意图;
图4是现有技术中HBASE作为数据目的地时MapReduce的操作流程示意图;
图5是本发明实施例优化数据访问的方法的流程图;
图6是本发明实施例HBASE中数据表的示意图;
图7是按照现有技术中对图6所示数据表进行查询的示意图;
图8是按照本发明实施例的方法对图6所示数据表进行查询的示意图;
图9是本发明实施例优化数据存储的方法的流程图;
图10是按照现有技术中对图4所示数据表进行存储的示意图;
图11是按照本发明实施例的方法对图4所示数据表进行存储的示意图;
图12是本发明实施例优化数据访问的装置的结构示意图;
图13是本发明实施例优化数据访问的装置中输入分块单元的一种结构示意图;
图14是本发明实施例优化数据存储的装置的结构示意图;
图15是是本发明实施例优化数据存储的装置中输出分块单元的一种结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
下面首先对现有的MapReduce的操作流程作简单说明。
如图1所示,MapReduce包括三个独立的实体,分别为:用户程序、主控制器、从处理器。其中,主控制器用于协调作业的运行,向从处理器分派任务;从处理器处理作业运行后的Map任务和Reduce任务。
当用户程序调用MapReduce函数时,会引起如下操作:
1)用户程序中的MapReduce函数库首先将输入文件分成M块。
2)主控制器得到输入划分信息,为每个划分创建一个Map任务。根据配置的Reduce数量,创建Reduce任务。总共有M个Map任务和R个Reduce任务需要分派。主控制器向从处理器分派任务。
3)一个分配了Map任务的从处理器读取并处理相关的输入小块。
4)Map任务缓冲到内存的中间结果将被定期写到本地硬盘,数据通过分区函数分成R个区。中间结果在本地硬盘的位置信息将被发送回主控制器,然后主控制器负责将这些位置信息传送给Reduce任务的从处理器。
5)当主控制器通知Reduce任务的从处理器中间数据位置时,从Map任务的从处理器的本地硬盘上读取缓冲的中间数据。
6)Reduce任务的从处理器处理中间数据,将中间结果值集合传递给用户定义的Reduce函数。该Reduce函数中对于本Reduce区块的输出到一个最终的输出文件。
7)当所有的Map任务和Reduce任务都已经完成了的时候,主控制器激活用户程序,MapReduce返回用户程序的调用点。
HBASE作为分布式列存储数据库,其中表的数据模型如图2所示:
图2中所示为一个HBASE表中的数据,包括以下信息:
行键(RowKey):每一行数据的标识,类似关系数据库中表的主键。
列簇(Column Family),HBASE表是不同列簇的集合。类似关系数据库中表的列,需要预先定义。与关系数据库中表的列不同的是,列簇下可以有多个列。
列(Column),是列簇下的一个标签,可以在写入数据时任意添加。
列值(Value),与关系数据库中的列的值类似。
分区(Region),表中数据按照一定大小进行分区组织。当表中列簇下数据达到阈值时,分区会分裂,建立新的分区,将原来列簇下的数据按照行键顺序搬迁一部分到新的分区中。
HBASE可以作为MapReduce的数据来源,也就是说,MapReduce可以处理HBASE中保存的数据。
如图3所示,当用户程序调用MapReduce函数时,会引起如下操作:
1)MapReduce根据表名从HBASE中获取制定表的所有Region信息,通过比较范围查询对象定义数据范围和所有Region范围信息得到分块信息和个数。
2)主控制器根据上述分块信息和个数创建Map任务,每个Map任务处理一个分块中的数据。
3)主控制器向从处理器分派Map任务。
4)其它流程同基本MapReduce过程。
HBASE也可以作为MapReduce的数据出口,也就是说,MapReduce可以将输出数据存储到HBASE中,通过表名来定义MapReduce的数据要存储的表。
如图4所示,当用户程序调用MapReduce函数时,会引起如下操作:
1)用户程序中的MapReduce函数首先将输入文件分成多个分块,根据数据要保存的表,访问HBASE数据表得到表对应的Region信息,通过Region信息指定Reduce个数。
2)主控制器得到输入文件分块信息,为每个分块创建一个Map任务。根据配置的Reduce数量,创建Reduce任务。
3)主控制器向从处理器分派Map任务和Reduce任务。
4)其它流程同基本MapReduce过程。
本发明实施例优化数据访问的方法及装置,针对上述现有技术存在的问题,在HBASE作为MapReduce的数据来源时,通过指定多个数据输入范围来减少无效数据的读取,提高数据处理效率。
相应地,本发明实施例优化数据存储的方法及装置,针对上述现有技术存在的问题,在HBASE作为MapReduce的数据目的地时,通过指定多个数据输出范围来减少无效MapReduce任务的执行,提高数据处理效率。
下面分别对本发明实施例优化数据访问的方法及装置、以及优化数据存储的方法及装置进行详细说明。
如图5所示,是本发明实施例优化数据访问的方法的流程图,包括以下步骤:
步骤501,主控制器接收用户访问HBASE中数据表的请求,所述请求中携带数据输入范围信息,所述数据输入范围信息包括多个数据输入范围。
上述多个数据输入范围可以通过分隔符进行分割,相应地,主控制器可以利用分隔符对输入字符串进行划分来获取多个数据输入范围。
所述数据输入范围可以采用多种形式,比如,可以是以下任意一种形式:
a)列表形式,并且列表中包含多个范围查询对象,每个范围查询对象为一个数据输入范围,例如:
SCAN1(20010101,20010131),
SCAN2(20010201,20010228),
SCAN3(20010301,20010331)。
b)列表形式,并且列表中包含多个起始、终止数据范围对,每个起始、终止数据范围对表示一个数据范围,例如:
(20010101,20010131),
(20010201,20010228),
(20010301,20010331)。
c)文件形式,即通过文件的形式,将多个数据输入范围保存在文件中,主控制器通过读取文件获取数据输入范围,例如:
(20010101,20010131),(20010201,20010228),(20010301,20010331)。
步骤502,根据所述数据表的分区信息及所述数据输入范围信息,确定输入分块信息。
在该过程中,可以首先获取所述数据表中所有分区的起始键值和终止键值,然后将所述数据输入范围信息中的每个数据输入范围分别与各分区的起始键值和终止键值进行比较,得到每个数据输入范围在各分区中的覆盖范围,根据该覆盖范围即可确定输入分块信息。
另外,在得到每个数据输入范围在各分区中的覆盖范围后,也可以先将得到的所有覆盖范围中属于同一个分区并且连续的覆盖范围合并,然后再根据合并后的覆盖范围确定输入分块信息。
为了进一步提高处理效率,在上述过程中,在将所述数据输入范围信息中的数据输入范围分别与各分区的起始键值和终止键值进行比较之前,可以先对所述数据输入范围信息中的数据输入范围进行排序,然后对排序后的数据输入范围依次与各分区的起始键值和终止键值进行比较。
当然,也可以不进行上述排序,而是在得到每个数据输入范围在各分区中的覆盖范围后,对得到的所有覆盖范围进行排序,然后再将其中属于同一个分区并且连续的覆盖范围合并。
上述输入分块信息可以包括:输入分块个数及每个输入分块的起始键值和终止键值。
步骤503,根据所述输入分块信息确定Map任务个数。
具体地,可以根据所述输入分块个数确定Map任务个数,每个Map任务对应一个输入分块。
步骤504,按照所述Map任务个数分配从处理器读取所述数据表中的数据。
具体地,主控制器可以为每个Map任务分配一个从处理器,并将所述Map任务对应的输入分块的起起始键值和终止键值传送给所述从处理器。相应地,所述从处理器根据所述输入分块的起起始键值和终止键值读取所述数据表中的数据。
步骤505,将所述从处理器读取的数据返回给所述用户。
需要说明的是,在上述用户访问HBASE中数据表的请求中,还包括所述数据表的表名信息。在实际应用中,主控制器接收到该请求后,可以先对该请求中的表名及携带的各数据输入范围进行检查,判断这些信息是否正确。也就是说,根据该请求中的表名信息检查HBASE中是否有相应的数据表,以及所述数据输入范围是否在相应数据表存储的数据范围内。如果这些信息正确,再执行上述步骤502。
具体地,可以查询HBASE的系统表,如果所述系统表中没有所述表名,则说明输入表错误;如果有所述表名,则说明表名正确。然后获取所述表名对应的数据表的Region信息,通过比较数据输入范围和Region信息,如果数据输入范围小于表的起始键值或者大于表的终止键值则可确定数据输入范围不正确,否则可以确定数据输入范围正确。
另外,本发明实施例优化数据访问的方法在实际应用中,也可以与现有的方法相兼容,比如,主控制器接收到用户访问HBASE中数据表的请求后,判断该请求中是否携带了多个数据输入范围,如果是,则按照上述步骤502至步骤504的流程访问HBASE中的数据表;否则,按照现有技术的方式访问HBASE中的数据表。
下面举例进一步说明本发明实施例优化数据访问的方法中MapReduce的处理过程与现有技术的区别。
例如,图6所示的HBASE中的一个数据表,该数据表为影片访问信息表,表示不同影片在每天被不同类型终端访问的次数。
图6所示的数据表中的Region信息如下表1所示。
表1:
Region名称 | 起始键值 | 终止键值 |
Region0 | 影片1#20110104 | 影片1#20110808 |
Region1 | 影片2#20110102 | 影片2#20110808 |
Region2 | 影片3#20110101 | 影片3#20110808 |
如果按照现有技术,对图6所示的数据表执行MapReduce处理,汇聚8月份第一周每个影片不同终端的访问总量,则处理过程如图7所示,具体如下:
设置范围查询对象的起始键值为:影片1#20110801,结束键值为:影片3#20110807。
将范围查询对象起始键值和结束键值和Region信息进行比较得到有效输入数据范围为:
Region0(影片1#20110801,影片1#20110808)
Region1(影片2#20110102,影片2#20110808)
Region2(影片3#20110101,影片1#20110807)
这些有效输入数据范围属于三个不同的Region,实际上其中每个有效数据范围中可能会包括无效数据。
将该有效输入数据范围划分为三个不同的分块信息,分别为:
第一个分块信息:影片1#20110801--影片 1#20110808,其中影片1#20110808为无效数据。
第二个分块信息:影片2#20110102--影片 2#20110808,其中影片2#20110101-影片2#20110731,影片2#20110808为无效数据。
第三个分块信息:影片3#20110101--影片 1#20110807,其中影片3#20110101-影片3#20110731为无效数据。
因此,主控制器根据这三个分块信息启动三个Map任务,分派给从处理器进行处理。三个Map任务分别处理不同分块中的数据,而上述无效数据也被包含在上述分块中。从处理器在处理数据时会从HBASE表中读取各分块中的每条记录,判断是否是8月第一周数据,如果是则进行相加,如果不是则直接丢弃不进行处理。如图7所示,粗线框内的数据为有效数据,其它为无效数据。
由此可见,按照Map任务会读取大量无效数据进行判断,造成大量无效操作,降低了数据处理执行速度,使得效率较低。
如果按照本发明实施例优化数据访问的方法,对图6所示的数据表执行MapReduce处理,汇聚8月份第一周每个影片不同终端的访问总量,则处理过程如图8所示,具体如下:
1.主控制器接收用户进行数据访问的请求,所述请求中携带多个数据输入范围信息,比如,在该示例中,有3个数据输入范围,具体如下:
SCAN1(起始键值:影片1#20110801,终止键值:影片1#20110807);
SCAN2(起始键值:影片2#20110801,终止键值:影片2#20110807);
SCAN3(起始键值:影片3#20110801,终止键值:影片3#20110807)。
2.调用MapReduce分别对每个数据输入范围进行分块划分,其中:
对于第一个数据输入范围和Region信息进行比较,得到有效输入数据范围为:
Region0(影片1#20110801,影片1#20110807);
对于第二个数据输入范围和Region信息进行比较,得到有效输入数据范围为:
Region1(影片2#20110801,影片2#20110807);
对于第三个数据输入范围和Region信息进行比较,得到有效输入数据范围为:
Region2(影片3#20110801,影片3#20110807)。
上述有效输入数据范围属于三个不同的Region,因此根据上述得到的三个有效输入数据范围,得到三个不同的输入分块信息,分别为:
SPLIT0(影片1#20110801......影片1#20110807)
SPLIT1(影片2#20110801......影片2#20110807)
SPLIT2(影片3#20110801......影片3#20110807)。
3.根据上述输入分块信息和个数,主控制器启动三个Map任务,分派给从处理器进行处理。三个Map任务分别处理不同输入分块信息中的数据。由图6可以看出,上述三个输入分块信息中的数据均为有效数据,而不包含无效数据。
由此可见,本发明实施例优化数据访问的方法中,通过细分和设置多个数据输入范围,即查询对象,通过简单的多次比较操作限定有效输入数据范围,使得数据处理过程中减少了大量无效数据的读取,大大提高了处理效率。
如图9所示,是本发明实施例优化数据存储的方法的流程图,包括以下步骤:
步骤901,主控制器接收用户向HBASE中数据表存储数据的请求,所述请求中携带一个或多个数据输出范围。
上述多个数据输出范围可以通过分隔符进行分割,相应地,主控制器利用分隔符对输出字符串进行划分来获取多个数据输出范围。
所述数据输出范围可以采用多种形式,比如,可以是以下任意一种形式:
a)列表形式,列表中包含一个起始、终止数据范围对,例如:
(20010101,20010331)。
c)列表形式,并且列表中包含多个起始、终止数据范围对,每个起始、终止数据范围对表示一个数据输出范围,例如:
(20010101,20010131),
(20010201,20010228),
(20010301,20010331)。
d)文件形式,即通过文件的形式,将一个或多个数据输出范围保存在文件中,主控制器通过读取文件获取数据输出范围,例如:
(20010101,20010131),(20010201,20010228),(20010301,20010331)。
步骤902,根据所述数据表的分区信息及所述数据输出范围,确定输出分块信息。
在该过程中,可以首先获取所述数据表中所有分区的起始键值和终止键值,然后将所述数据输出范围分别与各分区的起始键值和终止键值进行比较,得到所述数据输出范围覆盖的分区信息,根据所述分区信息确定输出分块信息。
上述输出分块信息包括:输出分块个数。
步骤903,根据所述输出分块信息确定Reduce任务个数。
具体地,可以根据所述输出分块个数确定Reduce任务个数,每个Reduce任务对应一个输出分块。
步骤904,按照所述Reduce任务个数分配从处理器向所述数据表中写入数据。
具体地,主控制器可以为每个Reduce任务分配一个从处理器,并将所述Reduce任务对应的存储数据传送给所述从处理器。相应地,所述从处理器将所述Reduce任务对应的存储数据写入所述输出分块对应的分区中。
下面举例进一步说明本发明实施例优化数据存储的方法中MapReduce的处理过程与现有技术的区别。
假设下表2是影片3的最新访问信息,需要将该信息保存到HBASE的数据表中,数据输出的表为图6所示的影片访问信息表。
表2:
如果按照现有技术,对表2所示的信息执行MapReduce处理,则处理过程如下:
根据图6所示的数据表中的Region信息得到输出数据范围:
Region0(影片1#20110104,影片1#20110808);
Region1(影片2#20110101,影片2#20110808);
Region2(影片3#20110101,影片3#20110808)。
这些输出数据范围属于三个不同的Region,则主控制器设置三个不同的Reduce任务,分派给从处理器上进行处理。其中每个Reduce任务处理一个输出数据范围,将满足条件“起始键值<输入数据≤终止键值”的数据保存在相应的Region内。
而表2中需要保存到HBASE的数据表中的实际数据范围为影片3#20110809--影片3#20110812,其属于Region2对应的Reduce数据范围内,因而Region0和Region1对应的Reduce不会处理任何数据。也就是说,由于实际输入数据满足Region2的数据范围,因此表2中的数据将保存在Region2中,而另外两个Reduce任务则无任何输出数据,为无效Reduce任务,如图10所示。
由此可见,现有技术中按照Reduce任务会产生多个无效的Reduce进程,浪费调度时间和资源,降低数据处理执行速度。
如果按照本发明实施例优化数据存储的方法,对表2所示的信息执行MapReduce处理,则处理过程如图11所示,具体如下:
1.主控制器接收用户进行数据存储的请求,所述请求中携带数据输出范围信息,比如,在该示例中,携带的数据输出范围信息为:<影片3#20110809,影片3#20110812>。
2.MapReduce对数据输出范围和图6所示的数据表的Region信息进行比较,得到有效输出数据范围,即Region2(影片3#20110101,影片3#20110808)。该有效输出数据范围只属于一个Region。
因此根据上述得到的一个有效输出数据范围,得到一个输出分块信息:
Region2(影片3#20110101,影片3#20110808)
3.主控制器根据上述输出分块信息,设置1个Reduce任务。分派给从处理器进行处理。
由此可见,本发明实施例数据存储的方法,通过细分和设置输出数据范围,通过简单的比较操作限定有效输出数据范围,使得数据处理过程中减少了大量无效Reduce任务的启动和销毁,大大提高了处理效率。
相应地,本发明实施例还提供一种优化数据访问的装置,如图12所示,是该装置的一种结构示意图。
在该实施例中,所述优化数据访问的装置包括:
接收单元121,用于接收用户访问HBASE中数据表的请求,所述请求中携带数据输入范围信息,所述数据输入范围信息包括多个数据输入范围;
输入分块单元122,用于根据所述数据表的分区信息及所述数据输入范围信息,确定输入分块信息;
任务确定单元123,根据所述输入分块信息确定Map任务个数;
分配单元124,用于按照所述Map任务个数分配从处理器读取所述数据表中的数据;
发送单元125,用于将所述从处理器读取的数据返回给所述用户。
上述输入分块单元122可以有多种方式实现,比如,如图13所示,该输入分块单元122可以包括:分区信息获取子单元1221,比较子单元1222,合并子单元1223和分块信息确定子单元1224。其中:
所述分区信息获取子单元1221,用于获取所述数据表中所有分区的起始键值和终止键值;
所述比较子单元1222,用于将所述数据输入范围信息中的数据输入范围分别与各分区的起始键值和终止键值进行比较,得到所述数据输入范围在各分区中的覆盖范围;
所述合并子单元1223,用于将所述比较子单元得到的所有覆盖范围中属于同一个分区并且连续的覆盖范围合并;
所述分块信息确定子单元1224,用于根据合并后的覆盖范围确定输入分块信息。
需要说明的是,上述合并子单元1223是可选的,也就是说,分块信息确定子单元1224也可以直接根据比较子单元1222得到的覆盖范围确定输入分块信息。
为了进一步提高处理效率,上述输入分块单元122还可进一步包括:排序子单元1225,用于在所述比较子单元1222将所述数据输入范围信息中的数据输入范围分别与各分区的起始键值和终止键值进行比较之前,对所述数据输入范围信息中的数据输入范围进行排序。
在本发明实施例中,所述输入分块信息可以包括:输入分块个数及每个输入分块的起始键值和终止键值。
相应地,上述任务确定单元123可以根据所述输入分块个数确定Map任务个数,每个Map任务对应一个输入分块。
相应地,上述分配单元124可以为每个Map任务分配一个从处理器,并将所述Map任务对应的输入分块的起起始键值和终止键值传送给所述从处理器,以使所述从处理器根据所述输入分块的起起始键值和终止键值读取所述数据表中的数据。
本发明实施例优化数据访问的装置可以作为MapReduce中的主控制器,利用该装置,可以通过简单的多次比较操作限定有效输入数据范围,使得数据处理过程中减少了大量无效数据的读取,大大提高了处理效率。具体处理过程可参照前面本发明实施例优化数据访问的方法中的描述,在此不再赘述。
相应地,本发明实施例还提供一种优化数据存储的装置,如图14所示,是该装置的一种结构示意图。
在该实施例中,所述优化数据存储的装置包括:
接收单元131,用于接收用户向HBASE中数据表存储数据的请求,所述请求中携带一个或多个数据输出范围;
输出分块单元132,用于根据所述数据表的分区信息及所述数据输出范围,确定输出分块信息;
任务确定单元133,用于根据所述输出分块信息确定Reduce任务个数;
分配单元134,用于按照所述Reduce任务个数分配从处理器向所述数据表中写入数据。
上述输出分块单元132可以有多种方式实现,比如,如图15所示,该输出分块单元132可以包括:分区信息获取子单元1321,比较子单元1322和分块信息确定子单元1323。其中:
所述分区信息获取子单元1321,用于获取所述数据表中所有分区的起始键值和终止键值;
所述比较子单元1322,用于将所述数据输出范围分别与各分区的起始键值和终止键值进行比较,得到所述数据输出范围覆盖的分区信息;
所述分块信息确定子单元1323,用于根据所述分区信息确定输出分块信息。
当然,上述输出分块单元132还可以有其它实现方式,对此本发明实施例不做限定。
在本发明实施例中,所述输出分块信息可以包括:输出分块个数。
相应地,上述任务确定单元133可以根据所述输出分块个数确定Reduce任务个数,每个Reduce任务对应一个输出分块;
相应地,上述分配单元134可以为每个Reduce任务分配一个从处理器,并将所述Reduce任务对应的存储数据传送给所述从处理器,以使所述从处理器将所述Reduce任务对应的存储数据写入所述输出分块对应的分区中。
本发明实施例优化数据存储的装置可以作为MapReduce中的主控制器,利用该装置,可以通过简单的比较操作限定有效输出数据范围,使得数据处理过程中减少了大量无效Reduce任务的启动和销毁,大大提高了处理效率。具体处理过程可参照前面本发明实施例优化数据访问的方法中的描述,在此不再赘述。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (14)
1.一种优化数据访问的方法,其特征在于,包括:
主控制器接收用户访问HBASE中数据表的请求,所述请求中携带数据输入范围信息,所述数据输入范围信息包括多个数据输入范围;
根据所述数据表的分区信息及所述数据输入范围信息,确定输入分块信息;
根据所述输入分块信息确定映射Map任务个数;
按照所述Map任务个数分配从处理器读取所述数据表中的数据;
将所述从处理器读取的数据返回给所述用户;
其中,所述根据所述数据表的分区信息及所述数据输入范围信息,确定输入分块信息包括:
获取所述数据表中所有分区的起始键值和终止键值;
将所述数据输入范围信息中的数据输入范围分别与各分区的起始键值和终止键值进行比较,得到所述数据输入范围在各分区中的覆盖范围;
根据所述覆盖范围确定输入分块信息。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在根据所述覆盖范围确定输入分块信息之前,将得到的所有覆盖范围中属于同一个分区并且连续的覆盖范围合并;
所述根据所述覆盖范围确定输入分块信息包括:
根据合并后的覆盖范围确定输入分块信息。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
在将所述数据输入范围信息中的数据输入范围分别与各分区的起始键值和终止键值进行比较之前,对所述数据输入范围信息中的数据输入范围进行排序。
4.如权利要求1所述的方法,其特征在于,所述多个数据输入范围为以下任意一种形式:
列表形式,并且列表中包含多个范围查询对象,每个范围查询对象为一个数据输入范围;
列表形式,并且列表中包含多个起始、终止数据范围对,每个起始、终止数据范围对表示一个数据输入范围;
文件形式。
5.如权利要求1~4任意一项所述的方法,其特征在于,所述输入分块信息包括:输入分块个数及每个输入分块的起始键值和终止键值;
所述根据所述输入分块信息确定Map任务个数包括:根据所述输入分块个数确定Map任务个数,每个Map任务对应一个输入分块;
所述按照所述Map任务个数分配从处理器读取所述数据表中的数据包括:
为每个Map任务分配一个从处理器,并将所述Map任务对应的输入分块的起始键值和终止键值传送给所述从处理器,以使所述从处理器根据所述输入分块的起起始键值和终止键值读取所述数据表中的数据。
6.一种优化数据存储的方法,其特征在于,包括:
主控制器接收用户向HBASE中数据表存储数据的请求,所述请求中携带一个或多个数据输出范围;
根据所述数据表的分区信息及所述数据输出范围,确定输出分块信息;
根据所述输出分块信息确定化简Reduce任务个数;
按照所述Reduce任务个数分配从处理器向所述数据表中写入数据;
其中,所述根据所述数据表的分区信息及所述数据输出范围,确定输出分块信息包括:
获取所述数据表中所有分区的起始键值和终止键值;
将所述数据输出范围分别与各分区的起始键值和终止键值进行比较,得到所述数据输出范围覆盖的分区信息;
根据所述分区信息确定输出分块信息。
7.如权利要求6所述的方法,其特征在于,所述数据输出范围为以下任意一种形式:
列表形式,并且列表中包含一个或多个起始、终止数据范围对,每个起始、终止数据范围对表示一个数据输出范围;
文件形式。
8.如权利要求6或7所述的方法,其特征在于,所述输出分块信息包括:输出分块个数;
所述根据所述输出分块信息确定Reduce任务个数包括:根据所述输出分块个数确定Reduce任务个数,每个Reduce任务对应一个输出分块;
所述按照所述Reduce任务个数分配从处理器向所述数据表中写入数据包括:
为每个Reduce任务分配一个从处理器,并将所述Reduce任务对应的存储数据传送给所述从处理器,以使所述从处理器将所述Reduce任务对应的存储数据写入所述输出分块对应的分区中。
9.一种优化数据访问的装置,其特征在于,包括:
接收单元,用于接收用户访问HBASE中数据表的请求,所述请求中携带数据输入范围信息,所述数据输入范围信息包括多个数据输入范围;
输入分块单元,用于根据所述数据表的分区信息及所述数据输入范围信息,确定输入分块信息;
任务确定单元,用于根据所述输入分块信息确定Map任务个数;
分配单元,用于按照所述Map任务个数分配从处理器读取所述数据表中的数据;
发送单元,用于将所述从处理器读取的数据返回给所述用户;
其中,所述输入分块单元包括:
分区信息获取子单元,用于获取所述数据表中所有分区的起始键值和终止键值;
比较子单元,用于将所述数据输入范围信息中的数据输入范围分别与各分区的起始键值和终止键值进行比较,得到所述数据输入范围在各分区中的覆盖范围;
分块信息确定子单元,用于根据所述覆盖范围确定输入分块信息。
10.如权利要求9所述的装置,其特征在于,所述输入分块单元还包括:
合并子单元,用于将所述比较子单元得到的所有覆盖范围中属于同一个分区并且连续的覆盖范围合并;
所述分块信息确定子单元,具体用于根据所述合并子单元合并后的覆盖范围确定输入分块信息。
11.如权利要求10所述的装置,其特征在于,所述输入分块单元还包括:
排序子单元,用于在所述比较子单元将所述数据输入范围信息中的数据输入范围分别与各分区的起始键值和终止键值进行比较之前,对所述数据输入范围信息中的数据输入范围进行排序。
12.如权利要求9~11任意一项所述的装置,其特征在于,所述输入分块信息包括:输入分块个数及每个输入分块的起始键值和终止键值;
所述任务确定单元,具体用于根据所述输入分块个数确定Map任务个数,每个Map任务对应一个输入分块;
所述分配单元,具体用于为每个Map任务分配一个从处理器,并将所述Map任务对应的输入分块的起起始键值和终止键值传送给所述从处理器,以使所述从处理器根据所述输入分块的起起始键值和终止键值读取所述数据表中的数据。
13.一种优化数据存储的装置,其特征在于,包括:
接收单元,用于接收用户向HBASE中数据表存储数据的请求,所述请求中携带一个或多个数据输出范围;
输出分块单元,用于根据所述数据表的分区信息及所述数据输出范围,确定输出分块信息;
任务确定单元,用于根据所述输出分块信息确定Reduce任务个数;
分配单元,用于按照所述Reduce任务个数分配从处理器向所述数据表中写入数据;其中,所述输出分块单元包括:
分区信息获取子单元,用于获取所述数据表中所有分区的起始键值和终止键值;
比较子单元,用于将所述数据输出范围分别与各分区的起始键值和终止键值进行比较,得到所述数据输出范围覆盖的分区信息;
分块信息确定子单元,用于根据所述分区信息确定输出分块信息。
14.如权利要求13所述的装置,其特征在于,所述输出分块信息包括:输出分块个数;
所述任务确定单元,具体用于根据所述输出分块个数确定Reduce任务个数,每个Reduce任务对应一个输出分块;
所述分配单元,具体用于为每个Reduce任务分配一个从处理器,并将所述Reduce任务对应的存储数据传送给所述从处理器,以使所述从处理器将所述Reduce任务对应的存储数据写入所述输出分块对应的分区中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/083021 WO2013078583A1 (zh) | 2011-11-28 | 2011-11-28 | 优化数据访问的方法及装置、优化数据存储的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102725753A CN102725753A (zh) | 2012-10-10 |
CN102725753B true CN102725753B (zh) | 2014-01-01 |
Family
ID=46950464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180002537.6A Active CN102725753B (zh) | 2011-11-28 | 2011-11-28 | 优化数据访问的方法及装置、优化数据存储的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102725753B (zh) |
WO (1) | WO2013078583A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109657009A (zh) * | 2018-12-21 | 2019-04-19 | 北京锐安科技有限公司 | 数据预分区存储周期表创建方法、装置、设备和存储介质 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838632B (zh) * | 2012-11-21 | 2017-04-12 | 阿里巴巴集团控股有限公司 | 数据查询方法及装置 |
CN103150403A (zh) * | 2013-03-28 | 2013-06-12 | 北京圆通慧达管理软件开发有限公司 | 数据处理系统和方法 |
CN103198109A (zh) * | 2013-03-28 | 2013-07-10 | 北京圆通慧达管理软件开发有限公司 | 数据处理系统和方法 |
CN103226532A (zh) * | 2013-03-28 | 2013-07-31 | 北京圆通慧达管理软件开发有限公司 | 数据处理系统和方法 |
CN104679590B (zh) * | 2013-11-27 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 分布式计算系统中的Map优化方法及装置 |
CN103646073A (zh) * | 2013-12-11 | 2014-03-19 | 浪潮电子信息产业股份有限公司 | 一种基于HBase表的条件查询优化方法 |
CN104112011B (zh) * | 2014-07-16 | 2017-09-15 | 深圳国泰安教育技术股份有限公司 | 一种海量数据提取的方法及装置 |
CN104252536B (zh) * | 2014-09-16 | 2017-12-08 | 福建新大陆软件工程有限公司 | 一种基于hbase的上网日志数据查询方法及装置 |
CN106326309B (zh) * | 2015-07-03 | 2020-02-21 | 阿里巴巴集团控股有限公司 | 一种数据查询方法和装置 |
CN106383826A (zh) * | 2015-07-29 | 2017-02-08 | 阿里巴巴集团控股有限公司 | 数据库查询方法和装置 |
CN106484689B (zh) * | 2015-08-24 | 2019-09-03 | 杭州华为数字技术有限公司 | 数据处理方法和装置 |
CN105183901A (zh) * | 2015-09-30 | 2015-12-23 | 北京京东尚科信息技术有限公司 | 一种数据查询引擎读取数据库表的方法及装置 |
CN105956043A (zh) * | 2016-04-26 | 2016-09-21 | 海尔优家智能科技(北京)有限公司 | 为Hbase数据库上运行的MapReduce分配Map task的方法及装置 |
CN106294886A (zh) * | 2016-10-17 | 2017-01-04 | 北京集奥聚合科技有限公司 | 一种从HBase中全量抽取数据的方法及系统 |
CN108427747B (zh) * | 2018-03-09 | 2021-10-15 | 广西师范大学 | 一种基于范围查询边界集的动态规划数据分片优化方法 |
US20210209069A1 (en) * | 2018-08-17 | 2021-07-08 | Siemens Aktiengesellschaft | Method, device, and system for processing distributed data, and machine readable medium |
CN109195175B (zh) * | 2018-09-03 | 2021-12-21 | 郑州云海信息技术有限公司 | 一种基于云计算的移动无线网络优化方法 |
CN110083658B (zh) * | 2019-03-11 | 2021-05-25 | 北京达佳互联信息技术有限公司 | 数据同步方法、装置、电子设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101285078B1 (ko) * | 2009-12-17 | 2013-07-17 | 한국전자통신연구원 | 스트림 데이터에 대한 점진적인 맵리듀스 기반 분산 병렬 처리 시스템 및 방법 |
CN101957863B (zh) * | 2010-10-14 | 2012-05-09 | 广州从兴电子开发有限公司 | 数据并行处理方法、装置及系统 |
-
2011
- 2011-11-28 CN CN201180002537.6A patent/CN102725753B/zh active Active
- 2011-11-28 WO PCT/CN2011/083021 patent/WO2013078583A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109657009A (zh) * | 2018-12-21 | 2019-04-19 | 北京锐安科技有限公司 | 数据预分区存储周期表创建方法、装置、设备和存储介质 |
CN109657009B (zh) * | 2018-12-21 | 2021-03-12 | 北京锐安科技有限公司 | 数据预分区存储周期表创建方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102725753A (zh) | 2012-10-10 |
WO2013078583A1 (zh) | 2013-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102725753B (zh) | 优化数据访问的方法及装置、优化数据存储的方法及装置 | |
CN111382174B (zh) | 多方数据联合查询方法、装置、服务器和存储介质 | |
US9672272B2 (en) | Method, apparatus, and computer-readable medium for efficiently performing operations on distinct data values | |
US9372880B2 (en) | Reclamation of empty pages in database tables | |
CN104731896B (zh) | 一种数据处理方法及系统 | |
US20130297557A1 (en) | Column based data transfer in extract, transform and load (etl) systems | |
CN110765489A (zh) | 多租户数据库隔离方法、系统、电子设备及计算机存储介质 | |
CN102902763B (zh) | 关联、检索信息处理数据和处理信息任务的方法及装置 | |
CN104111936B (zh) | 数据查询方法和系统 | |
US20130006996A1 (en) | Clustering E-Mails Using Collaborative Information | |
CN103810212A (zh) | 一种数据库索引的自动创建方法及系统 | |
WO2017058705A1 (en) | Partitioning of geographic data | |
US20070294276A1 (en) | Moving Records Between Partitions | |
CN103544153A (zh) | 一种基于数据库的数据更新方法和系统 | |
CN111813804A (zh) | 一种数据查询方法、装置、电子设备及存储介质 | |
CN111752944A (zh) | 数据分摊方法、装置、计算机设备及存储介质 | |
CN108551478B (zh) | 一种事务处理方法、服务器及事务处理系统 | |
CN112162982B (zh) | 数据查询方法、装置、设备及介质 | |
CN106570029A (zh) | 分布式关系型数据库的数据处理方法及系统 | |
Kumar et al. | An extended approach to Non-Replicated dynamic fragment allocation in distributed database systems | |
CN111414422A (zh) | 一种数据分布方法、装置、设备和存储介质 | |
CN110019448B (zh) | 一种数据交互方法及装置 | |
CN109582476A (zh) | 数据处理方法、装置及系统 | |
CN115221174A (zh) | 基于人工智能的数据分级存储方法、装置、设备及介质 | |
US20210149746A1 (en) | Method, System, Computer Readable Medium, and Device for Scheduling Computational Operation Based on Graph Data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220215 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |