Hbase新旧查询过程详解
来源:互联网 发布:电视软件哪个好 编辑:程序博客网 时间:2024/06/04 22:12
1基础介绍
在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的 RegionServer。0.96版本之前hbase内置两张表'.META.','-ROOT-',这两张表存储Region的分布情况以及每个Region的详细信息,'-ROOT-'表记录'.META.'表的redion分布信息,'.META.'表记录用户定义表region信息。0.96版本之后'-ROOT-'表去掉了,只有'mate'表。
内置表的表结构:
我们来仔细分析一下这个结构,每条Row记录了一个Region的信息。
首先是RowKey,RowKey由三部分组成:TableName, StartKey 和 TimeStamp。RowKey存储的内容我们又称之为Region的Name。用来存放Region的文件 夹的名字是RegionName的Hash值,因为RegionName可能包含某些非法字符。现在你应该知道为什么RegionName会包含非法字符 了吧,因为StartKey是被允许包含任何值的。将组成RowKey的三个部分用逗号连接就构成了整个RowKey,这里TimeStamp使用十进制 的数字字符串来表示的。这里有一个RowKey的例子:
Table1,RK10000,12345678
然后是表中最主要的Family:info,info里面包含三个Column:regioninfo, server, serverstartcode。其中regioninfo就是Region的详细信息,包括StartKey, EndKey 以及每个Family的信息等等。server存储的就是管理这个Region的RegionServer的地址。
所以当Region被拆分、合并或者重新分配的时候,都需要来修改这张表的内容。
2定位Region过程
2.1 0.96版本之前查询过程
1、client访问zookeeper,查找'-root-'表的存储地址,获取存储'-root-'表的regionserver
2、通过'-ROOT-表获取'.META.'表的regionserver
3、从.META.表里面查询哪个Region包含这条数据,获取管理这个Region的RegionServer地址
4、连接这个RegionServer, 查到这条数据。
2.2 0.96之后查询过程
hbase0.96版本后删除了root 表,因为觉的目的是根据root表获取meta地址,过程是通过zookeeper获取root表地址,在根据root表记录meta表地址进行访问,还不如和zookeeper通讯一次
1、client访问zookeeper,查找'meta'表的存储地址,获取存储'meta'表的regionserver
2、从mate表里面查询哪个Region包含这条数据,并获取regionserver地址
3、连接这个RegionServer, 查到这条数据
3定位到region后的查询过程
下面介绍下的client与region server查询交互过程。
1、查询memstore(memstore是一个按key排序的树形结构的缓冲区),即写内存是否存储rowkey数据,如果有就返回,没有进行第二步查询;
2、查询region server的读缓存BlockCache 是否存在rowkey对应数据,如果有就返回,没有的话就行进行第三步查询。
3、在HFile里面根据rowkey查询数据,不管有没有都返回到client。
参考文献
http://hbase.apache.org/book.html#arch.catalog.meta
http://blog.csdn.net/map_lixiupeng/article/details/40857825
http://www.cnblogs.com/seaspring/p/5949248.html
- Hbase新旧查询过程详解
- hbase查询的过程
- hbase 新旧API对比
- Hbase新旧api对比
- hbase安装过程详解
- hbase 简单的查询过程
- Hbase Region迁移过程详解
- Hbase 查询过程详解(基于hbase0.98版本后分析的)
- Hbase 查询过程详解(基于hbase0.98版本后分析的)
- Hbase 查询过程详解(基于hbase0.98版本后分析的)
- HBase查询一条数据的过程.
- Impala查询过程详解
- hbase学习教程(二):HBase容错性和Hbase使用场景、Hbase读写过程详解
- [HBase] 完全分布式安装过程详解
- HBase完全分布式安装过程详解
- HBase完全分布式安装过程详解
- [HBase]完全分布式安装过程详解
- HBase完全分布式安装过程详解
- 第6章:访问控制权限
- 使用Zbrush的缩放功能的方法
- Unity Shader (二)裁剪(Culling)
- 关于不同浏览器对URL编码的分析
- eclipse mars 安装groovy插件
- Hbase新旧查询过程详解
- BZOJ3524: [Poi2014]Couriers/BZOJ2223: [Coci 2009]PATULJCI
- Cloudera Manager分析
- ConcurrentHashMap源码解读
- 哈理工OJ 1176 小陈老师、雪人(排序+优先队列模拟)
- 美团推荐算法实践
- git学习笔记--git图像化界面GUI的使用
- iOS 10.0系统麦克风、相机权限崩溃问题解决 —— HERO博客
- 在php中使用正则preg_replace