我是靠谱客的博主 阔达棉花糖,最近开发中收集的这篇文章主要介绍Hbase Region定位,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Hbase Region定位

2017年3月4日

15:36

 

 

获取每个table的row对应的locate,具体实现如下:

1、调用locateRegionInMeta函数,首先查找cache中是否有table对应的row,比较缓存中的Table对应的startkey与endkey,判断row是否在某个region中;若能找到,直接返回该regionlcation信息

2、若cache没有开启或cache为空或没有找到,则需要构造一个metakey,该metakey是用来在meta表中查找Regionlocation的rowkey,构造rowkey=tableName+startkey+9999999999999+encode

3、在尝试次数范围内,清空metaCache中的对应本次查询的tableName和row的信息;

metaCache.clearCache(tableName,row);

4、重新获取metaLocation

metaLocation=locateRegion(TableName.META_TABLE_NAME,metaKey,false,false);

4.1、从ZK中获取metaLocation信息

this.registry.getMetaRegionLocation();

4.2、从ZK的meta-region-server节点获取当前metaLocation信息


4.3、将获取到的metaLocation对应的ServerName返回

5、构造ClientService请求服务

ClientService.BlockingInterfaceservice=getClient(metaLocation.getDefaultRegionLocation().getServerName());

6、调用getRowOrBefore获取metakey在metaInfo中对应的RegionServer信息


6.1、首先构造一个GetRowOrBeforeRequest请求

6.2、通过ClinetService将GetRowOrBeforeRequest请求发送

6.3、根据request中的Region以及row和family,调用如下函数:

r=region.getClosestRowBefore(row,family);

6.3.1、获取family对应的Store

Storestore=getStore(family);

6.3.2、首先先去memstore中获取rowkeyCandidate

this.memstore.getRowKeyAtOrBefore(state);

6.3.3、逐个遍历Store中所有StoreFiles,如果能找到metakey的candidate,则比较此次找到的是否是最接近的

6.3.4、返回最接近的candidate

 

6.4、将结果r返回


最后

以上就是阔达棉花糖为你收集整理的Hbase Region定位的全部内容,希望文章能够帮你解决Hbase Region定位所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部