一种基于HBase与Phoenix的低成本海量结构化数据快速检索方法与流程

文档序号:24123271发布日期:2021-03-02 12:23阅读:108来源:国知局
一种基于hbase与phoenix的低成本海量结构化数据快速检索方法
技术领域
:[0001]本发明涉及一种低成本海量结构化数据快速检索方法,特别涉及基于hbase与phoenix的海量结构化数据快速检索方法。
背景技术
::[0002]随着社会进步和互联网技术的发展,网络数据量飞速增长且规模日渐庞大。这些海量数据进行有效存储后,需要快检索出用户需要的数据。hbase是一个在分布式文件系统hdfs上开发的分布式数据库,适合于存储大数据,在大数量下能快速检索单条或批量数据。phoenix是一种运行在hbase基础之上的sql化执行引擎,它提供了一套完整的基于hbase表索引解决方案,支持以sql的方式进行表索引操作。[0003]hbase是一种分布式的key-value(键值对)数据库。用户只能通过key(键)去检索value(值),本身并不支持表级别的索引操作。phoenix的hbase表索引解决方案答题思路是:(1)建立数据表,用于存储数据。数据表的rowkey存储的是该条数据的唯一id,value存储指定字段的值,如果一条数据有多个字段,就有多个key-value对。[0004](2)建立索引表。在phoenix全局索引的情况下,一个索引就是一张hbase表。该表的rowkey存储的是索引对应的值,value存储的是索引对应数据的唯一id。[0005](3)phoenix在做精确或模糊条件检索时,首先会找到指定表对应的索引表,在索引表中根据用户指定的条件检索出对应数据的唯一id,再在数据表中根据id检索出指定数据。整个检索流程如图1所示。[0006]hbase表的内部是按roweky的字段序顺序存储的。前缀相同的key-value对存储在一起。这就意味着,用户在下发精确或模糊条件检索时,下发到索引表检索数据,在磁盘底层是一个顺序扫描过程。索引表检索返回一条或多条符合条件数据的唯一id,但这些唯一id是随机的,因此phoenix客户端在数表中检索数据时,对应到磁盘底层时,是多个随机读的过程。[0007]当前服务器使用的磁盘主要有机械硬盘和固态硬盘。机械硬盘的顺序读取能力在150mb/s左右,随机读的效率比较差,大约在0.5mb/s;固态硬盘的顺序读取能力在500mb/s左右,随机效率在40mb/s左右。在生产环境中,机械硬盘和固态硬盘的顺序读取能力,固态硬盘的随机读能力均能达到要求,机械硬盘的随机读取效率太低,往往达不到用户的要求。但固态硬盘的价格比较贵,往往是机械硬盘售价的6倍左右。[0008]目前一些企业使用hbase与phoenix作为海量结构化数据存储与检索方案。由于存在大量的随机读操作,鉴于机械硬盘随机读灾难性的性能,许多企业使用固态硬盘作为hbase集群服务器的存储介质,大大提高了成本。[0009]hbase底层文件存储在hdfs分布式系统上。hdfs自2.4版本后,开始支持异构存储。异构存储是为了解决爆炸式的存储容量增长以及计算能力增长所带来的数据存储需求,一份数据热数据在经历计算产生出新的数据,那么原始数据有可能变为冷数据,随着数据不断增长差异化存储变的非常迫切,需要经常被计算或者读取的热数据为了保证性能需要存储在高速存储设备上,当一些数据变为冷数据后不经常会用到的数据会变为归档数据,可以使用大容量性能要差一些的存储设备来存储来减少存储成本。其中本专利关注的是hot策略和one_ssd策略。其中hot策略是hdfs的默认hot策略,数据全部存储在机械硬盘上;one_ssd策略是指将数据一份存储在固态硬盘上,而其他的冗余备份数据存储在固态硬盘上。技术实现要素:[0010]本发明为了解决现有技术存在的问题,提出了一种基于hbase与phoenix的低成本海量结构化数据快速检索方法。该方法将hdfs的异构存储策略引入到hbase中,在满足用户检索性能的前提上,充分发挥机械硬盘和固态硬盘的优点,降低了用户的成本。[0011]本发明为实现发明目的提出的一种基于hbase与phoenix的低成本海量结构化数据快速检索方法,其步骤如下:步骤1.将hdfs异构存储策略引入数据表。数据表由于随机读比较多,适合存储在固态硬盘上。因此将数据表存储策略修改为one_ssd。[0012]步骤1.1.重载hbase的建表接口htabledescriptor(tablename)为htabledescriptor(tablename,type),其中type为存储策略,数据表的存储策略为ssd;并将该参数加入到序列化/反序列结构中。[0013]步骤1.2.改写hbase建表的实现接口,修改实现接口中新建hdfs文件目录的方式,如果反序列化中有type参数,就将该hbase表对应的hdfs目录设置为对应存储策略,数据表的存储策略为one_ssd。[0014]步骤2.将hdfs异构存储策略引入索引表。索引表由于顺序读比较多,适合存储在机械硬盘上。将索引表存储策略修改为hot。[0015]步骤2.1.重载hbase的建表接口htabledescriptor(tablename)为htabledescriptor(tablename,type),其中type为存储策略,索引表的存储策略为hot;并将该参数加入到序列化/反序列结构中。[0016]步骤2.2.改写hbase建表的实现接口,修改实现接口中新建hdfs文件目录的方式,如果反序列化中有type参数,就将该hbase表对应的hdfs目录设置为对应存储策略,数据表的存储策略为hot。[0017]步骤3:phoenix适配hbase异构存储策略。修改phoenix的sql解析接口,将新建数据表实现对接为one_ssd存储策略建表接口;新建索引表实现对接为hot存储策略建表接口。[0018]本发明方法,将hdfs的存储策略引入hbase后,数据表采用one_ssd策略存储,即一份数据存储在固态硬盘中,其他副本存储在机械硬盘中,保证数据的随机读性能的同时,最大程度降低成本;索引表采用hot存储策略,将所有数据存储在机械硬盘中,保证数据的顺序读性能的同时,最大程度降低成本。[0019]本发明将hdfs的异构存储策略引入到hbase中,在满足用户检索性能的前提上,充分发挥机械硬盘和固态硬盘的优点,降低了用户的成本。附图说明[0020]图1是phoenix检索流程图。[0021]图2是本发明基于hbase与phoenix的低成本海量结构化数据快速检索方法程序框图。具体实施方式[0022]下面结合实施例,对本发明作进一步详细说明。实施例[0023]1.将一种基于hbase与phoenix的低成本海量结构化数据快速检索方法部署到人物画像应用系统中,该系统历史数据量有9tb。使用hbase存储数据,phoenix做sql查询的条件下,我们规划了3*960g的固态硬盘,24*2tb的机械硬盘来存储数据。未改造hbase与phoenix的版本中,使用的是50*960gb的固态硬盘。[0024]2.将一种基于hbase与phoenix的海量结构化数据快速检索方法,原系统进行对比。对比维度有两个:(1)用户检索速度;(2)使用计算机磁盘的成本。[0025]①ꢀ测试了4种用户的检索场景,将一种基于hbase与phoenix的低成本海量结构化数据快速检索速度,与原系统检索速度进行对比,对比的具体情况如下:从实验数据可以看出,一种基于hbase与phoenix的海量结构化数据快速检索速度与原系统检索速度相当,无检索速度衰减。[0026]②计算硬盘的购买成本。假定1tb机械硬盘的价格指数是1,那么1tb固态硬盘的价格指数是6,改造后的hbase与phoenix所需要采购硬盘的价格是66,未改造后的hbase与phoenix所需要采购硬盘的价格是300,改造后的版本磁盘成本大约只有改造前的1/5。[0027]通过测试证明将用本发明方法,在对hbase与phoenix进行改造后,在保证检索速度的基础上,充分发挥机械硬盘和固态硬盘的优点,大大降低了磁盘购买成本。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1