HBase索引

本文探讨了HBase索引实现的挑战,包括第三方项目如ITHBase的冗余问题和维护不足。作者建议自定义索引实现,提出了两种方案,并强调了自定义索引在冗余、可控性和灵活性上的优势。文章旨在分享HBase索引实施中的经验和教训,适用于关注HBase优化的读者。

HBase索引过程的实现确实是一个头两个大,一直在研究这方面的资料,苦不堪言呐!

不过经过一系列的测试和分析,得出一个结论:自己创建索引!

理由有二:

一、ITHBase、IHBase等等三方项目创建索引,基本思路就是创建一个额外的索引表,然后建立同步机制。这样问题来了:

      1.冗余比较大。我做过ITHBase的实验,基本是原表的每行数据在索引表中都创建一条,如下:

                                                                                     原表:

hbase(main):007:0> get 'xyz','row-2012-08-28 13:23:30 000249107195'                                
COLUMN                     CELL                                                                     
 info:num                  timestamp=1346131403529, value=\x00\x00\x00\x00\x00\x01\xA2\xBB          
 info:time                 timestamp=1346131403529, value=2012-08-28 13:23:30 000249                
2 row(s) in 0.0160 seconds

                                                                                      索引表:

hbase(main):008:0> get 'xyz-index','2012-08-28 13:23:30 000249row-2012-08-28 13:23:30 000249352897'
COLUMN                     CELL                                                                     
 __INDEX__:ROW             timestamp=1346132300017, value=row-2012-08-28 13:23:30 000249352897      
 info:time                 timestamp=1346132300017, value=2012-08-28 13:23:30 000249                
2 row(s) in 0.3330 seconds

      看到了吧,ITHBase是将原表中要索引的column的value和原表的rowKey合在一起作为索引表的rowKey,冗余比较大,而且也不一定能满足我们的业务需要。

      2.ITHBase两年多没有人维护了,别的不说,如果出现问题或者bug,解决就是一个大问题。

      3.ITHBase资料比较少,中文资料更是几乎没有。

      4.coprocessor的功能类似,可能还有在服务器统计计算的额外功能,这个价值还是比较大的。索引方面基本也是原表索引表的同步解决方案。没有太细的研究,不做实验说明。

二、Hbasene我只研究过一点,不是很熟悉,所以不加评论。lucene大家都听过吧,下面中没用过,但是原理知道一些,个人感觉用搜索引擎的框架做索引太复杂了。


我们要根据公司的业务自定义索引的实现,提出两个方案:


        方案一:建立额外的索表,在原表中插入新数据的同时,使用M/R根据rowKey的规则插入索引表;

        方案二:在原表中插入索引的rowKey结构。优点是hbase中的表少了一半(如果hbase中的表达几十个甚至成百上千个的话,我相信你会相信我的话得)。


        综合业务考虑我们选择了方案二。


       自定义索引实现的一个最大最大的优点是:冗余可控、索引可控、bug可控!


        本文的目的是希望分享一下hbase创建索引过程中的问题及经验,当然,可能每个公司的业务不同,需要具体分析吧;每个公司的高手也很多,希望大家多分享一下这方面的做的好的经验。


        本人水平有限,有不对的地方还请多多指正。





公司一款产品数据3个月的的数据:容量为3.0T,大约是占用了2000个region,每个region大小为1G。






评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值