基于Hbase大数据查询优化.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Hbase大数据查询优化

基于Hbase大数据查询优化   摘要: Hbase有着先天的优势和先天的劣势,而劣势就是其较差的数据定位能力,也就是数据查询能力。因为面向列的特点,Hbase只能单单地以rowkey为主键作查询,而无法对表进行多维查询和join操作,并且查询通常都是全表扫描,耗费资源较大,查询效率较低。类比于传统型数据库里的一些查询方式,本文对Hbase的存储原理进行了研究,借助分布式计算框架Mapreduce在Hbase上构建了二级索引,就可以对表进行有针对性的定位和高效率的查找,同时也减轻zookeeper服务对资源调度的压力。   关键词: Hbase; 大数据处理; Secondary Indexing   中图分类号:TP311   文献标志码:A   文章编号:2095-2163(2017)04-0059-03   0引言   随着企业在发展过程中积累数据的日益递增,关于大量业务数据的存储和处理即已成为关涉企业运营效率的热点研究问题之一,此时则需对自身的数据库作出调整。而Google公司关于BigTable的开源实现,更为非传统型数据库探讨研发提供了高端设计可能。作为非传统型数据库的优秀代表,Hbase就因具备的高可靠性、高性能、面向列、可伸缩的特点,已然成为企业在面临大量数据处理时的基础实效应用设计模式。本文即针对这一内容展开如下研究论述。   1Hbase体系架构   Hbase技术来源于 Fay Chang 所撰写的Google论文“Bigtable”关于一个结构化数据的“分布式存储系统”。是和Hadoop分布式文件系统对应的一个分布式数据库的概念。具体地,Hbase是一个分布式、面向列开源数据库。而且也不同于一般的关系数据库,Hbase是一个适合于非结构化数据存储的数据库。进一步地,Hbase是基于列的而非基于行的模式,这就与传统型数据库呈现出显著差别。Hbase是Apache的Hadoop项目的顶级项目。综上可知,Hbase就是建立在HDFS上的分布式列存储系统。   2Hbase存储原理   Hbase所有的行数据都是按照rowkey的字典展开排序的,所以查询Hbase表的任何一行数据都要从rowkey的第一行开始扫描,依次向下,直至找到相关的行为止,如此可知查询的效率将会很低,但这只是从第一层查询效率来考虑的,也就是研究中表明的Hbase的一级索引(就是以rowkey字典排序的方式查询数据)。   如图1所示,Hbase表中的数据,都是存放在region里面的,原本一张表中只有一个region,随着行数的不断增多,region包含的数据资源也会不断增多,当达到一个阈值时(默认为256 M),这个region即会分成2个同样大小的region,重复这一过程,当插入的数据越多,这个表的region就越多。region是由regionserver管理的,通常情况下,一个regionserver可以管理多??region。   针对Hbase查询的特点,分析可知Hbase都是通过Rowkey的方式全盘扫描表的,因此效率较慢,并且,Hbase表并不支持非主键查询,和连接查询、join操作的。   [JP3]如果能够采用传统型数据库的索引方式来对Hbase建立索引,本次研究则拟将获得更高效率。显然,索引表仅需包含一个列值,因此索引表的大小要比原表小很多,所以索引表的一个region要比原表包含更多的记录。研究可以通过mapreduce构建一个二级索引,其主体思想可表述为:通过分布式计算框架[JP4]mapreduce构建一个二级索引的方法。对此,将重点给出阐释如下:[JP]   1)Map阶段。将Hbase中的相关表遍历rowkey值,根据rowkey读出维度值,再通过维度值读出value值,并将对应的rowkey-value输出。   2)Reduce阶段。取出rowkey和value,将两值取反,即将value值作为行键,行健作为value值存入Hbase。   4研发设计流程   综合前文研究所述,这里将得出在Hbase中的操作实现流程可如图2所示。   throws IOException, InterruptedException   {   Set keys = indexes.keySet();   for (byte[] k : keys)   {   [JP3]ImmutableBytesWritable indexTableName = indexes.get(k);[JP]   [JP4]byte[] val = value.getValue(Bytes.toBytes(columnFamily),k);[JP]   [JP3]Put put = ne

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档