Hadoop HBase概念学习系列之META表和ROOT表(六)
在
HBase里的HRegion
里,谈过,HRegion是按照表名+开始/结束主键,即表名+主键范围来区分的。由于主键范围是连续的,所以一般用开始主键就可以表示相应的HRegion了。
不过,因为我们有合并和分隔操作,此时,如果正好在执行这些操作的过程中出现死机,那么就可能存在多份表名和开始主键相同的数据,这样的话,只有光靠开始主键就不够了,这就需要通过HBase的元数据信息来区分哪一份才是正确的数据文件。为此,为了区分这样的情况,每个HRegion都有一个'regionId'来标识它的唯一性。
所以一个HRegion的表达符,最终是: 表名+开始主键+唯一Id,即tablename+startkey+regionId。
我们可以用这个识别符来区分不同的HRegion,这些数据就是元数据(META),而元数据本身也是被保存在HRegion里面的,所以,我们称呼这个表为元数据表(META表),即META Table,里面保存的就是HRegion标识符和实际HRegion服务器的映射关系。
元数据表也会增长,并且可能被分割为几个HRegion,为了定位这些HRegion,我们采用一个根数据表(ROOT表),即ROOT Table,它保存了所有元数据表的位置,而跟数据表是不能被分割的,永远只保存在一个HRegion。
在HBase启动的时候,主服务器先去扫描根数据表,因为这个表只会有一个HRegion,所有这个HRegion的名字是被写死的。当然要把跟数据表分配到一个HRegion服务器中需要一定的时间。
当根数据表被分配好之后,主服务器就会扫描根数据表,获取元数据表的名字和位置,然后把元数据表分配到不同的HRegion服务器中。最后就是扫描元数据表,找到所有HRegion区域的信息,把它们分配给不同的HRegion服务器。
主服务器在内存中保存着当前活跃的HRegion服务器的数据,因此如果主服务器死机,整个系统也就无法访问了,这时服务器的信息也就没有必要保存到文件里面了。
元数据和跟数据表的每一行都包含一个列簇(info列簇):
info:regioninfo包含了一个串行化的HRegionInfo对象
info:server保存了一个字符串,是服务器的地址HServerAddress.toString()
info:startcode是一个长整型的数字字符串,它是在HRegion服务器启动的时候传给主服务器的,让主服务器确定这个HRegion服务器的信息有没有更改。
因此,当一个客户端拿到根数据表地址以后,就没有必要再连接主服务器了,主服务器发负载相对就小了很多。它只会处理超时的HRegion服务器,并在启动的时候扫描根数据表和元数据表,以及返回根数据表的HRegion服务器地址。
META表,相当于ROOT表来说,存储更多。一个单个的META表能够在Rgion中包含所有的信息,能够详细到如此地步。
假设,把ROOT表当做一级目录,则META表是详细的一级目录。


总结
ROOT表可以看作是一张简表,简单的信息,记录不是很多,但ROOT表记录了META的信息。
META表可以看作是一张详表,记录了所有HRegion的信息。ROOT表也记录了HRegion表的信息,但没META表记录详细。
理解了么,各博友们。~
Hadoop HBase概念学习系列之META表和ROOT表(六)的更多相关文章
- Hadoop HBase概念学习系列之HBase里的HRegion(五)
首先,要区分,HRegion服务器包含两大部分:HLog部分和HRegion部分 HBase里的HRegion服务器 HBase里的HRegion 当表的大小超过设置值的时候,HBase会自动将表划 ...
- Hadoop HBase概念学习系列之HBase里的高表设计概念(表设计)(二十八)
在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBa ...
- Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBa ...
- Hadoop HBase概念学习系列之HBase里的长表VS宽表VS窄表(十五)
有时候啊,HBase表的设计方案通常,还会考虑如下一些因素,当然,这只是考虑范围里的部分呢. 更多的行还是更多的版本?后者使用了HBase自带的功能.但是需要在列簇中定义最大版本数,这样做可能有风险. ...
- Hadoop HBase概念学习系列之HBase表的一些设置(强烈推荐好好领悟)(十三)
压缩格式:默认压缩格式是NONE.可选值有GZ.LZO.SNAPPY. 版本数:HBase默认定义为3个版本. 以秒为单位的存活时间TTL:使用对象是行中的列簇,一旦达到过期时间,HBase会删除这些 ...
- Hadoop HBase概念学习系列之HBase里的客户端和HBase集群建立连接(详细)(十四)
需要遵循以下步骤: 1.客户端和Zookeeper集群建立连接.在这之前客户端需要获得一些信息(可以从HBase配置文件中读取或是直接指定).客户端从Zookeeper集群中读取-ROOT-表的位置信 ...
- Hadoop HBase概念学习系列之优秀行键设计(十六)
我们通过行键访问HBase.尽管使用扫描过滤器可以一次性指明大量的键,但是HBase仅仅能够根据行键识别出一行. 优秀的行键设计可以保证良好的HBase性能. 1.行键存在于HBase中的每一个单元格 ...
- Hadoop HBase概念学习系列之HRegion服务器(三)
所有的数据库数据一般是保存在Hadoop分布式系统上面的,用户通过一系列HRegion服务器获取这些数据.一台机器上一般只运行一个HRegion服务器,而且每一分区段的HRegion也只会被一个HRe ...
- Hadoop HBase概念学习系列之HMaster服务器(四)
每台HRegion服务器都会和HMaster服务器通信,HMaster的主要任务就是告诉每个HRegion服务器它要维护哪些HRegion. 当一台新的HRegion服务器登录到HMaster服务器时 ...
随机推荐
- 第一次项目上Linux服务器(二:——安装jdk)
本人采用的是rpm安装jdk1.8 1.下载jdk 去jdk下载页面找到要下载的jdk 本人下载的是jdk-8u161-linux-x64.rpm,百度云资源链接:链接:https://pan.bai ...
- 【nginx笔记】系统参数设置-使Nginx支持更多并发请求的TCP网络参数
首先,需要修改/etc/sysctl.conf来更改内核参数.例如,最常用的配置: fs.file-max = 999999 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tc ...
- UVa 514 Rails(栈的应用)
题目链接: https://cn.vjudge.net/problem/UVA-514 /* 问题 输入猜测出栈顺序,如果可能输出Yes,否则输出No 解题思路 貌似没有直接可以判定的方法,紫书上给出 ...
- [转]Vue.js 入门教程
本文转自:http://www.runoob.com/w3cnote/vue-js-quickstart.html 什么是 Vue.js? Vue.js 是用于构建交互式的 Web 界面的库. Vu ...
- ASP.NET MVC的ContentResult
ASP.NET MVC的ContentResult返回简单的纯文本内容,可通过ContentType属性指定应答文档类型,通过ContentEncoding属性指定应答文档的字符编码. 一个例子来演习 ...
- C# Hadoop学习笔记(二)—架构原理
一,架构 二.名词解释 (一)NameNode(简称NN),Hadoop的主节点,负责侦听节点是否活跃,对外开放接口等.在未来的大数据处理过程中,由于访问量和节点数量的不断增多,需要该节点的处理能 ...
- Expression<Func<T>>和Func<T>
以前用EF的时候,由于where的时候有Expression<Func<T>>和Func<T>两种查询条件,误用了Func<T>那个重载,后来还想通过f ...
- Java JDBC的基础知识(三)
在前面的Java JDBC的基础知识(二)和(三)中,主要介绍JDBC的原理和简单的应用过程.尤其在(二)中,可以发现代码进行多次try/catch,还有在前面创建连接等过程中好多参数我都给写定了. ...
- Lifting the Stone(hdu1115)多边形的重心
Lifting the Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- Points on Cycle (hdu1700,几何)
Points on Cycle Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...