基于HBase的高效存储方法及系统技术方案

技术编号:10369837 阅读:185 留言:0更新日期:2014-08-28 12:28
本发明专利技术公开了一种基于HBase的高效存储方法及系统,涉及大数据领域,该方法包括以下步骤:输入一行待存储到目标表的用户数据;判断内存中是否有目标表的字节组合编码的初始化信息,如果没有,则访问元数据库,对目标表的字节组合编码进行初始化,将初始化信息写入内存;如果有,解析出主键列值,进行字节编码并组合,形成1个字节序列,作为键值对存储格式的行键值;根据初始化信息解析出非主键列值,进行字节编码并组合,形成1个字节序列,作为键值对存储格式的值字段内容;将行键值字节序列和值字段字节序列组装成键值对,完成HBase写入。本发明专利技术能节省HBase的存储空间,提高HBase的吞吐性能。

【技术实现步骤摘要】
基于HBase的高效存储方法及系统
本专利技术涉及大数据领域,具体是涉及一种基于HBase的高效存储方法及系统。
技术介绍
随着移动互联网、智能终端、物联网、云计算以及智慧城市的普及,人们逐渐进入了“大数据”时代。美国互联网数据中心指出,互联网上的数据每年将增长50%,每两年便将翻一番,而目前世界上90%以上的数据是最近几年才产生的。除了互联网上发布的信息,全世界的工业设备、汽车、电表上有着无数的数码传感器,随时测量和传递着有关位置、运动、震动、温度、湿度乃至空气中化学物质的变化,也产生了海量的数据信息。大数据是规模非常巨大和复杂的数据集,数据量达到拍字节、艾字节或泽字节的级别后传统数据库管理工具处理起来面临很多问题,如获取、存储、检索和分析等。大数据引发了一些问题,如对数据库高并发读写要求、对海量数据的高效率存储和访问需求、对数据库高可扩展性和高可用性的需求,传统数据库以及数据仓库技术显得力不从心。Hadoop是由Apache软件基金会维护的一个能够对大量数据进行分布式处理的软件框架,Hadoop带来了廉价的处理大数据的能力。Hadoop是一个庞大的生态系统,为处理大数据提供了各种工具和平台。在Hadoop生态系统中,HBase是一个高可靠性、高性能、面向列、可伸缩的分布式非关系型数据库系统,可快速在海量数据中定位所需结果。HBase作为列存储数据库,表中的每个列,都归属于某个列族,列族是表的结构的一部分,必须在使用表之前定义,而列的数量以及类型则无需定义,因为它不属于表的结构。一个列族中可以包含多个列,这些列以其所在列族作为前缀命名,格式是<列族>:<列>。HBase中数据的读写都是在列族层面进行。HBase中的用户数据都以HFile格式存储在Hadoop文件系统上,HBase专有的存储格式参见图1所示,HFile格式中的数据块是实际存放用户数据的地方,每个数据块由一个防止数据损坏的随机数字开头,和其后紧接的若干个键值对拼接而成,键值对是HBase中不可再分的最小数据单元。参见图2所示,键值对是一个字节数组,包含了很多项,并且有固定的结构,其具体结构组成如下:键值对开始是两个固定长度的数值,分别表示键部分的长度和值部分的长度;紧接着是键部分,开始是固定2字节长度的数值,表示行键的长度;接着是行键值;然后是固定1字节长度的数值,表示列族名的长度;然后是列族名和列名;然后是固定8字节长度的时间戳和固定1字节长度的类型,标记该键值对是插入操作还是删除操作;最后是值部分存放该列的值。从图2中可以算出每个键值对的固定部分有22个字节(假定列族名和列名都是1个字节),如果按照行键值长度一般最少10个字节,那么一个键值对最少有32字节以上,而此时该键值对中的值部分却只存储了一个列的值,也就是说在HFile的存储中,一行记录的每个列都会存储为一个键值对。假如一个表中有N个列,N为正整数,那么存储这个表的一行数据就需要N个这样的键值对,固定消耗大约在(32*N)字节,而这些键值对中的键部分又基本上是相同的,这就在存储空间上造成极大的浪费,同时对HBase的吞吐性能也会造成一定影响。以如下结构化模型定义的表结构为例:{列1(主键):列1数据类型;列2:列2数据类型;列3:列3数据类型;列4:列4数据类型}该表有4列,其中第一列是主键。如果使用HBase固有方式存储该表,定义列族为F1,并将这些列都放在F1中,则例子中结构化表和HBase存储关系为:列1对应行键;列2对应<F1:C2>列;列3对应<F1:C3>列;列4对应<F1:C4>列;由此可知,该结构化表的一行记录在HBase中存储需要3个键值对,其存储结构参见图3所示,可以看到,对例子中的一行记录来说,需要3个键值对来存储,固定长度开销约为(32*3)字节,当海量记录存储时,就会有大量固定长度的存储开销,这样既浪费存储空间,又影响存储吞吐性能。
技术实现思路
本专利技术的目的是为了克服上述
技术介绍
的不足,提供一种基于HBase的高效存储方法及系统,能有效节省HBase的存储空间,提高HBase的吞吐性能。本专利技术提供一种基于HBase的高效存储方法,包括以下步骤:步骤101、输入一行待存储到目标表的用户数据;步骤102、判断内存中是否有目标表的字节组合编码的初始化信息,如果没有,则转到步骤103;如果有,则转到步骤104;步骤103、访问元数据库,对目标表的字节组合编码进行初始化,并将初始化信息写入内存中,返回步骤102;步骤104、根据内存中目标表行键字节组合编码的初始化信息,从待存用户数据中解析出主键列值作为字节组合编码对象,逐一进行字节编码并组合,形成1个字节序列,作为键值对存储格式的行键值,转到步骤105;步骤105、根据内存中目标表值字段字节组合编码的初始化信息,从待存用户数据中解析出非主键列值作为字节组合编码对象,逐一进行字节编码并组合,形成1个字节序列,作为键值对存储格式的值字段内容,转到步骤106;步骤106、存储HBase:将步骤104得到的行键值字节序列和步骤105得到的值字段字节序列,组装成键值对,并调用HBase客户端应用编程接口的数据插入方式完成HBase写入。在上述技术方案的基础上,步骤106之后,还包括以下查询HBase数据的步骤:步骤201、输入对目标表的查询请求;步骤202、判断内存中是否有目标表的字节组合编码的初始化信息,如果没有,则转到步骤203;如果有,则转到步骤204;步骤203、访问元数据库,对目标表的字节组合编码进行初始化,并将初始化信息写入内存中,返回步骤202;步骤204、根据内存中目标表的初始化信息逐一对属于查询请求范围中的主键进行字节组合编码,得到结果集对应HBase中的行键范围;步骤205、根据步骤204的行键范围扫描HBase,得到结果集对应HBase中的值范围,转到步骤206;步骤206、结合步骤205的结果集对应HBase中的值范围,根据值字段字节组合编码方式及其对象指示器进行反编码,得到此次查询请求结果,转到步骤207;步骤207、返回查询结果。在上述技术方案的基础上,所述初始化信息包括目标表的列名列表、列数据类型列表、主键列列表、行键字节组合编码方式及其对象指示器、值字段字节组合编码方式及其对象指示器。本专利技术还提供一种基于HBase的高效存储系统,所述系统包括HBase写入装置,所述HBase写入装置包括第一输入单元、第一初始化单元、主键列字节组合编码单元、非主键列字节组合编码单元、HBase写入单元,其中:所述第一输入单元,用于:输入一行待存储到目标表的用户数据;所述第一初始化单元,用于:判断内存中是否有目标表的字节组合编码的初始化信息,如果没有初始化信息,则访问元数据库,对目标表的字节组合编码进行初始化,并将初始化信息写入内存中;如果有初始化信息,则生成主键列字节组合编码触发信号,并发送至主键列字节组合编码单元;所述主键列字节组合编码单元,用于:根据内存中目标表行键字节组合编码的初始化信息,从待存用户数据中解析出主键列值作为字节组合编码对象,逐一进行字节编码并组合,形成1个字节序列,作为键值对存储格式的行键值,生成非主键列字节组合编码本文档来自技高网
...
基于HBase的高效存储方法及系统

【技术保护点】
一种基于HBase的高效存储方法,其特征在于,包括以下步骤:步骤101、输入一行待存储到目标表的用户数据;步骤102、判断内存中是否有目标表的字节组合编码的初始化信息,如果没有,则转到步骤103;如果有,则转到步骤104;步骤103、访问元数据库,对目标表的字节组合编码进行初始化,并将初始化信息写入内存中,返回步骤102;步骤104、根据内存中目标表行键字节组合编码的初始化信息,从待存用户数据中解析出主键列值作为字节组合编码对象,逐一进行字节编码并组合,形成1个字节序列,作为键值对存储格式的行键值,转到步骤105;步骤105、根据内存中目标表值字段字节组合编码的初始化信息,从待存用户数据中解析出非主键列值作为字节组合编码对象,逐一进行字节编码并组合,形成1个字节序列,作为键值对存储格式的值字段内容,转到步骤106;步骤106、存储HBase:将步骤104得到的行键值字节序列和步骤105得到的值字段字节序列,组装成键值对,并调用HBase客户端应用编程接口的数据插入方式完成HBase写入。

【技术特征摘要】
1.一种基于HBase的高效存储方法,其特征在于,包括以下步骤:步骤101、输入一行待存储到目标表的用户数据;步骤102、判断内存中是否有目标表的字节组合编码的初始化信息,所述初始化信息包括目标表的列名列表、列数据类型列表、主键列列表、行键字节组合编码方式及其对象指示器、值字段字节组合编码方式及其对象指示器,如果没有,则转到步骤103;如果有,则转到步骤104;步骤103、访问元数据库,对目标表的字节组合编码进行初始化,并将初始化信息写入内存中,返回步骤102;步骤104、根据内存中目标表行键字节组合编码的初始化信息,从待存用户数据中解析出主键列值作为字节组合编码对象,逐一进行字节编码并组合,形成1个字节序列,作为键值对存储格式的行键值,转到步骤105;步骤105、根据内存中目标表值字段字节组合编码的初始化信息,从待存用户数据中解析出非主键列值作为字节组合编码对象,逐一进行字节编码并组合,形成1个字节序列,作为键值对存储格式的值字段内容,转到步骤106;步骤106、存储HBase:将步骤104得到的行键值字节序列和步骤105得到的值字段字节序列,组装成键值对,并调用HBase客户端应用编程接口的数据插入方式完成HBase写入。2.如权利要求1所述的基于HBase的高效存储方法,其特征在于:步骤106之后,还包括以下查询HBase数据的步骤:步骤201、输入对目标表的查询请求;步骤202、判断内存中是否有目标表的字节组合编码的初始化信息,如果没有,则转到步骤203;如果有,则转到步骤204;步骤203、访问元数据库,对目标表的字节组合编码进行初始化,并将初始化信息写入内存中,返回步骤202;步骤204、根据内存中目标表的初始化信息逐一对属于查询请求范围中的主键进行字节组合编码,得到结果集对应HBase中的行键范围;步骤205、根据步骤204的行键范围扫描HBase,得到结果集对应HBase中的值范围,转到步骤206;步骤206、结合步骤205的结果集对应HBase中的值范围,根据值字段字节组合编码方式及其对象指示器进行反编码,得到此次查询请求结果,转到步骤207;步骤207、返回查询结果。3.一种基于HBase的高效存储系统,其特征在于:所述系统包括HBase写入装置,所述HBase写入装置包括第一输入单元、第一初始化单元、主键列字节组合编码单元、非主键列字节组合编码单元、HBase写入单元,其中:所述第...

【专利技术属性】
技术研发人员:向智宇郝俊瑞高汉松郭嘉许德玮王静
申请(专利权)人:武汉邮电科学研究院
类型:发明
国别省市:湖北;42

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

1