-ROOT-表和.META.表结构详解
在《HBase技术简介》中我们知道,HBase中有两个特殊的表:-ROOT-
和.META.
。
由于HBase中的表可能非常大,故HBase会将表按行分成多个region,然后分配到多台RegionServer上。数据访问的整个流程如下图所示:
注意两点:
- Client端在访问数据的过程中并没有涉及到Master节点,也就是说HBase日常的数据操作并不需要Master,不会造成Master的负担。
- 并不是每次数据访问都要执行上面的整个流程,因为很多数据都会被Cache起来。
从存储结构和操作方法的角度来说,-ROOT-
、.META.
与其他表没有任何区别。它们与众不同的地方是HBase用它们来存贮一个重要的系统信息:
- -ROOT-:记录.META.表的Region信息。
- .META.:记录用户表的Region信息。
其中-ROOT-表本身只会有一个region,这样保证了只需要三次跳转,就能定位到任意region,
一、META表结构
在 HBase Shell 里对.META.
表进行 scan 和 describe :
可以看出,.META.
表的结构如下:
.META.
表中每一行记录了一个Region的信息。
1) RowKey
RowKey就是Region Name,它的命名形式是TableName,StartKey,TimeStamp.Encoded.
。
其中 Encoded 是TableName,StartKey,TimeStamp
的md5值。
例如:
mytable,,1438832261249.ea2b47e1eba6dd9a7121315cdf0e4f67.
表名是mytable
,StartKey为空,时间戳是1438832261249
,前面三部分的md5是:
$ echo -n "mytable,,1438832261249" | md5sum # -n选项表示不输出换行符
ea2b47e1eba6dd9a7121315cdf0e4f67 -
2) Column Family
.META.
表有两个Column Family:info
和 historian
。
其中info
包含了三个Column:
regioninfo
:region的详细信息,包括StartKey、EndKey以及Table信息等等。server
:管理该region的 RegionServer 的地址。serverstartcode
:RegionServer 开始托管该region的时间。
至于historian
:
That was a family used to keep track of region operations like open,
close, compact, etc. It proved to be more troublesome than handy so we
disabled this feature until coming up with a better solution. The
family stayed for backward compatibility.
大致的意思是:这个Column Family是用来追踪一些region操作的,例如open、close、compact等。事实证明这非常的麻烦,所以在想出一个更好的解决方案之前我们禁用了此功能。这个列族会保持向后兼容。
综上所述,.META.
表中保存了所有用户表的region信息,在进行数据访问时,它是必不可少的一个环节。当Region被拆分、合并或者重新分配的时候,都需要来修改这张表的内容 来保证访问数据时能够正确地定位region。
二、ROOT表结构
当用户表特别大时,用户表的region也会非常多。.META.
表存储了这些region信息,也变得非常大,这时.META.
自己也需要划分成多个Region,托管到多个RegionServer上。
这时就出现了一个问题:当.META.
被托管在多个RegionServer上,如何去定位.META.
呢? HBase的做法是用另外一个表来记录.META.
的Region信息,就和.META.
记录用户表的Region信息一样,这个表就是-ROOT-
表。
在 HBase Shell 里对-ROOT-
表进行 scan 和 describe :
-ROOT-
表的结构如下:
可以看出,除了没有historian
列族之外,-ROOT-
表的结构与.META.
表的结构是一样的。另外,-ROOT-
表的 RowKey 没有采用时间戳,也没有Encoded值,而是直接指定一个数字。
-ROOT-
表永远只有一个Region,也就只会存放在一台RegionServer上。—— 在进行数据访问时,需要知道管理-ROOT-
表的RegionServer的地址。这个地址被存在 ZooKeeper 中。
个人站点:http://songlee24.github.com
参考:www.greatwqs.iteye.com/blog/1838904
-ROOT-表和.META.表结构详解的更多相关文章
- Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例
Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13| 分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解 ...
- PHP扩展代码结构详解
PHP扩展代码结构详解: 这个是继:使用ext_skel和phpize构建php5扩展 内容 (拆分出来) Zend_API:深入_PHP_内核:http://cn2.php.net/manual/ ...
- JVM之内存结构详解
对于开发人员来说,如果不了解Java的JVM,那真的是很难写得一手好代码,很难查得一手好bug.同时,JVM也是面试环节的中重灾区.今天开始,<JVM详解>系列开启,带大家深入了解JVM相 ...
- Java内存结构详解
Java内存结构详解 Java把内存分成:栈内存,堆内存,方法区,本地方法区和寄存器等. 下面分别介绍栈内存,堆内存,方法区各自一些特性: 1.栈内存 (1)一些基本类型的变量和对象的引用变量都是在函 ...
- OpenCV-Mat结构详解
前面博客中Mat函数谈到一些理解,但是理解的比较浅显,下面谈谈通道,行列等意义: Mat的常见属性 opencv中type类型· CV_<bit_depth>(S|U|F)C<num ...
- 内核栈与thread_info结构详解
本文转载自内核栈与thread_info结构详解 什么是进程的内核栈? 在内核态(比如应用进程执行系统调用)时,进程运行需要自己的堆栈信息(不是原用户空间中的栈),而是使用内核空间中的栈,这个栈就是进 ...
- JVM结构详解
JVM 结构详解 JVM 结构图 程序计数器(PC 寄存器) 程序计数器的定义 程序计数器是一块较小的内存空间,是当前线程正在执行的那条字节码指令的地址.若当前线程正在执行的是一个本地方法,那么此时程 ...
- Linux下的文件目录结构详解
Linux下的文件目录结构详解 / Linux文件系统的上层根目录 /bin 存放用户可执行的程序 /boot 操作系统启动时所需要的文件 /dev 接口设备文件目录,例如:had表示硬盘 /etc ...
- Linux文件系统的目录结构详解
Linux文件系统的目录结构详解 一.前 言 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构. 二.目 录 1.什么是文件系统 2.文件 ...
- [转帖]Tomcat目录结构详解
Tomcat目录结构详解 https://www.cnblogs.com/veggiegfei/p/8474484.html 之前应该是知道一点 但是没有这么系统 感谢原作者的描述. 1.bin: 该 ...
随机推荐
- BZOJ3144 [Hnoi2013]切糕 【最小割】
题目 输入格式 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x,y,z) (1≤x≤ ...
- 转:java native
今日在hibernate源代码中遇到了native关键词,甚是陌生,就查了点资料,对native是什么东西有了那么一点了解,并做一小记. native关键字说明其修饰的方法是一个原生态方法,方法对应的 ...
- python之装饰器【转】
装饰器 先来看一个例子,一个函数f1接收另一个函数f2作为参数,并将该参数f2返回给f2: def deco(func): print("before myfunc() called.&qu ...
- BZOJ 3910: 火车
3910: 火车 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 358 Solved: 130[Submit][Status][Discuss] D ...
- hihocoder #1407 : 后缀数组二·重复旋律2
#1407 : 后缀数组二·重复旋律2 Time Limit:5000ms Case Time Limit:1000ms Memory Limit:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢 ...
- Bzoj3652 大新闻
Time Limit: 10 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 215 Solved: 112 Description Input ...
- 百度识图for windows phone 上线
原文发布时间为:2013-07-04 -- 来源于本人的百度文章 [由搬家工具导入] 百度识图主要用于找女神,找男神,找美图,找宠物,找图文新闻,找相似图,找原图,还能鉴别头像照片真伪,免得被网络照片 ...
- 使用C#的BitmapData
原文发布时间为:2009-01-16 -- 来源于本人的百度文章 [由搬家工具导入] 我在前两篇图片处理的文章里几乎都用BitmapData来做图片处理的,那么这个东东究竟是个什么玩意儿呢? C#好是 ...
- What and How in an Application
Basically, two concerntrations: 1. What: business docs and prototype design 2. How: technical docs a ...
- ckeditor编辑的使用方法
一.下载安装Ckeditor,并将其整合到项目中 1.什么是CKeditor?为什么要使用它? 我们在做门户网站或者公文系统时,客户经常要求在录入时能够更改字体样式.大小.颜色并具备插入图片的功能.而 ...