hbase二级索引实现方案

hbase二级索引实现方案

ID:10188817

大小:7.56 MB

页数:6页

时间:2018-06-12

hbase二级索引实现方案_第1页
hbase二级索引实现方案_第2页
hbase二级索引实现方案_第3页
hbase二级索引实现方案_第4页
hbase二级索引实现方案_第5页
资源描述:

《hbase二级索引实现方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、HBase二级索引实现方案——ODP说明:本方案主要参照了华为公布的HBase二级索引实现方案。1.概要设计主要思路:为每个DataTable创建一个与之对应的IndexTable,通过各种途径,保证IndexTableRegion与DataTableRegion一一对应,并且存储在同一个RegionServer上,存储结构如图1所示。最终要实现的效果是,每个IndexTableRegion是对应的DataTableRegion的局部索引,使用索引进行查询时,将对每个IndexTableRegion进行检索,找出所有符合条件的DataTableRowKey,再根据DataTableR

2、owKey到对应的DataTableRegion中读取相应DataTableRow。图1HBase二级索引存储结构示意图2.详细设计2.1.IndexTable的创建IndexTable的创建主要出现在两个时机,一是创建新DataTable时,系统根据索引定义,自动创建对应的IndexTable;二是对已存在的DataTable,用户调用接口方法,动态创建索引。IndexTable的创建过程如下:第一步,获取DataTable的所有RegionInfo,得到所有DataTableRegion的StartKey。第二步,结合索引定义和DataTableRegion的StartKey信息

3、,调用HBaseAdmin的createTable(finalHTableDescriptordesc,byte[][]splitKeys)方法创建索引表。通过以上两步便建立了IndexTableRegion和DataTableRegion的以StartKey为依据的一一对应关系。1.1.IndexTableRowKey的设计IndexTable的RowKey由四部分组成,按顺序依次是:DataTableRegionStartKey、IndexName、IndexValue和DataTableRowKey,如图2所示。图2IndexTableRowKey结构示意图A.DataTabl

4、eRegionStartKey。将DataTableRegion的StartKey作为IndexTableRegion的RowKey的第一部分,主要基于两个方面的考虑。一是使得IndexTableRegion和对应的DataTableRegion拥有相同的StartKey,这样便可将StartKey作为两个Region的关联依据;二是当DataTableRegion分裂时,可使用相同的SplitKey对IndexTableRegion进行相应的分裂操作,并将新产生的DataTableRegion和IndexTableRegion建立关联关系。B.IndexName。在一张DataTa

5、ble的基础上可以定义多个索引,如果为每个索引创建一个IndexTable,则在实际应用过程中,势必会产生大量的IndexTable,当DataTableRegion分裂时,还需要对与之关联的所有IndexTableRegion分别执行分裂操作,这将消耗大量的系统资源,并且不易维护。因此,我们考虑将一张DataTable的所有索引数据,存放到同一张IndexTable中,不同索引的数据以IndexName进行区分。C.IndexValue。如果索引是单列索引,IndexValue就是DataTableRow的某个ColumnValue,如果索引是组合索引的话,则IndexValue就

6、是DataTableRow的多个ColumnValue组合而成的。D.DataTableRowKey。被用来定位DataTableRow,以获取最终的数据。1.2.IndexTableRegion的分配控制IndexTableRegion的分配控制过程,即是保证IndexTableRegion与DataTableRegion的一一对应,并且被分配到同一个RegionServer的过程。自定义LoadBalancer,重写balanceCluster方法,主要增加对IndexTableRegion的分配控制。以相同的StartKey作为IndexTableRegion和DataTabl

7、eRegion的关联依据,将IndexTableRegion和与其对应的DataTableRegion分配到同一个RegionServer。自定义LoadBalancer对IndexTableRegion的分配控制过程如图3所示。图3自定义LoadBalancer对IndexTableRegion的分配控制示意图注意:这里只增加对IndexTableRegion分配的控制,并不对DataTableRegion的分配进行干预,DataTableRegion由

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。