.mata. _root_ (转)
HRegionServer 里面存放了很多的HRegion,而且每一个HRegion都有一个唯一标识(表名+开始主键+唯一ID),这个唯一标识符在每一个HRegion中都有存储。
.mata.表存的数据为HRegion(标识符)和HRegionServer的映射关系,即某一个HRegion,到底在哪一个HRegionServer中。
.mata.是一张表,它也由许多的HRegion组成,所以在最开始数据量很少(HRegion很少时),.mata.只有一个HRegion,由于数据会不断的增加,所以会使得.mata.表不断的增加,所以.mata.也被split成许多的HRegion。为了定位这些HRegion,我们采用的就是就是_root_。
_root_表的结构和.mata.一样,里面存储的也是HRegion和HRegionServer的映射关系。不过这里的HRegion,是表.mata.的HRegion。所以根数据表保存的是元数据表的位置。_root_表和.mata.表的一个区别就是,_root_不能被分隔,只有一个。如果说_root_也变得很大了这么办呢?暂时,HBase就是这么设计的,没办法。
=============================================================================================
转自:http://www.cnblogs.com/songlee/p/5738024.html
-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 中。
.mata. _root_ (转)的更多相关文章
- 树莓派Ubuntu 16.04 MATA系统 修改用户文件夹名后,提示configure it with blueman-service
自从修改了树莓派的Ubuntu 16.04 MATA 系统的 /home/ 下的用户文件夹名后,使用vncserver远程操作,看到桌面每次都提示 Configured directory for i ...
- 树莓派3b+ Ubuntu 16.04 MATA系统 ssh远程登陆后修改主机名、用户密码和用户名
写在前面: 刚刚开始写博客,记录下自己的学习过程,备忘. 最近在使用树莓派做智能小车的开发,使用的是树莓派3b+,安装的是Ubuntu 16.04 MATA 系统,安装系统后需要修改主机名,登陆密码以 ...
- Mata标签,og标签
一.Mata标签 meta是用来在HTML文档中模拟HTTP协议的响应头报文,meta 标签用于网页的<head>与</head>中.meta 的属性有两种:name和http ...
- mata属性
声明文档使用的字符编码: <meta charset="utf-8" />声明文档的兼容模式: <meta http-equiv=" ...
- 什么是mata标签
<meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. <meta> 标签位于文档的头部,不包含任何内容.&l ...
- 为小米(红米)6A解锁_ROOT_安装天下游虚拟定位教程_已亲身验证通过!附图
第一步骤: 把TeamViewer发给客户 第二步骤: 在自己电脑上购买小米账号:http://shop1.91kami.com/UXWHTEY9KN?cid=1200 要求:(购买邮箱注册账号,需要 ...
- html编写头部,mata的含义
<meta name="viewport" content="width=device-width, initial-scale=1.0"> con ...
- Scala化规则引擎
1. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...
- Scala 包
包的绝对地址_root_.开始 如_root_.scala.collection.mutable.ArrayBuffer
随机推荐
- 基于V4L2的视频驱动开发【转】
转自:http://blog.chinaunix.net/uid-10747583-id-298573.html Tags:V4L2驱动框架.API.操作流程…… 原文地址:http://www.ee ...
- 原 android重启应用(应用重新启动自身)
private void restartApplication() { final Intent intent = getPackageManager().getLaunchIntentForPack ...
- 关闭vs警告
禁用所有编译器警告 当“解决方案资源管理器”中有项目选中时,在“项目”菜单上单击“属性”. 单击“编译”选项卡. 选中“禁用所有警告”复选框. 禁用单个编译器警告 在“解决方案资源管理器”中选定一个项 ...
- git的使用03
之前我们写的都是将代码存在本地,我们还可以将代码github官网上,放在github的服务器上去托管
- 用jsp开发web应用并不是一个高效率的选择
1. Android里有办法让js使用java方法像使用自己的方法一样方便,和flex的很相似,flex里面使用java方法就像使用自己的方法一样. 2. 用Flex开发准确的说就是用as ...
- hdu 5159(概率)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5159 题解:假设在 x 张牌中选b张牌,那么有 x^b 种选法,如果在 (x-1) 张牌中选 b 张 ...
- 51nod 1182 完美字符串【字符串排序+哈希】
1182 完美字符串 题目来源: Facebook Hacker Cup选拔 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 约翰认为字符串的完美度等 ...
- 「kuangbin带你飞」专题十八 后缀数组
layout: post title: 「kuangbin带你飞」专题十八 后缀数组 author: "luowentaoaa" catalog: true tags: - kua ...
- [51Nod1487]占领资源
题目大意: 有一个$n\times m(x,m\leq 100)$的网格图,每个格子有一个权值$w_{i,j}(1\leq w_{i,j}\leq 9)$.你可以在图中选两个格子,每个格子$(x,y ...
- 设置并删除Dreamweaver自动生成的_notes文件夹
在使用Dreamweaver做项目时站点下面的每个文件夹里面都会自动生成一个_notes文件夹,删除之后马上又会再次生成.最近做项目时,有童鞋一不小心把所有的_notes文件夹全部存回到SVN上面了, ...