在

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表(六)的更多相关文章

  1. Hadoop HBase概念学习系列之HBase里的HRegion(五)

    首先,要区分,HRegion服务器包含两大部分:HLog部分和HRegion部分 HBase里的HRegion服务器  HBase里的HRegion 当表的大小超过设置值的时候,HBase会自动将表划 ...

  2. Hadoop HBase概念学习系列之HBase里的高表设计概念(表设计)(二十八)

    在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBa ...

  3. Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)

    在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBa ...

  4. Hadoop HBase概念学习系列之HBase里的长表VS宽表VS窄表(十五)

    有时候啊,HBase表的设计方案通常,还会考虑如下一些因素,当然,这只是考虑范围里的部分呢. 更多的行还是更多的版本?后者使用了HBase自带的功能.但是需要在列簇中定义最大版本数,这样做可能有风险. ...

  5. Hadoop HBase概念学习系列之HBase表的一些设置(强烈推荐好好领悟)(十三)

    压缩格式:默认压缩格式是NONE.可选值有GZ.LZO.SNAPPY. 版本数:HBase默认定义为3个版本. 以秒为单位的存活时间TTL:使用对象是行中的列簇,一旦达到过期时间,HBase会删除这些 ...

  6. Hadoop HBase概念学习系列之HBase里的客户端和HBase集群建立连接(详细)(十四)

    需要遵循以下步骤: 1.客户端和Zookeeper集群建立连接.在这之前客户端需要获得一些信息(可以从HBase配置文件中读取或是直接指定).客户端从Zookeeper集群中读取-ROOT-表的位置信 ...

  7. Hadoop HBase概念学习系列之优秀行键设计(十六)

    我们通过行键访问HBase.尽管使用扫描过滤器可以一次性指明大量的键,但是HBase仅仅能够根据行键识别出一行. 优秀的行键设计可以保证良好的HBase性能. 1.行键存在于HBase中的每一个单元格 ...

  8. Hadoop HBase概念学习系列之HRegion服务器(三)

    所有的数据库数据一般是保存在Hadoop分布式系统上面的,用户通过一系列HRegion服务器获取这些数据.一台机器上一般只运行一个HRegion服务器,而且每一分区段的HRegion也只会被一个HRe ...

  9. Hadoop HBase概念学习系列之HMaster服务器(四)

    每台HRegion服务器都会和HMaster服务器通信,HMaster的主要任务就是告诉每个HRegion服务器它要维护哪些HRegion. 当一台新的HRegion服务器登录到HMaster服务器时 ...

随机推荐

  1. 【LeetCode题解】24_两两交换链表中的节点(Swap-Nodes-in-Pairs)

    目录 描述 解法一:迭代 思路 Java 实现 Python 实现 复杂度分析 解法二:递归(不满足空间复杂度要求) 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解 ...

  2. 对Java虚拟机理解

    深入理解Java虚拟机 Java技术体系 Java体系分为四个平台 Java card 运行在小内存上的 Java ME 运行在手机上 Java SE 完整Java 核心api JavaEE 支持使用 ...

  3. SpringMVC之使用 POJO 对象绑定请求参数值

    Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值.支持级联属性.如:dept.deptId.dept.address.tel 等 示例: User实体类 p ...

  4. MyCAT入门实践

    1.MyCAT简单介绍 MyCAT是一个彻底开源的,面向企业应用开发的大数据库集群,支持事务.ACID.可以替代MySQL的加强版数据库,是一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Or ...

  5. 使用 SQLServer On Linux 作为开发数据库遇到的编码问题

    在维护旧的项目的时候,遇到了使用 varchar 类型存储中文的情况,本地数据库是直接使用来自上古时期的 T-SQL 创建的.为了方便,我就没有安装 Windows 版的 SQLServer,直接用的 ...

  6. Android-Activity启动流程

    http://www.jianshu.com/p/6037f6fda285 zygote是什么?有什么作用? zygote意为“受精卵“. 在Android系统里面,zygote是一个进程的名字.An ...

  7. ActivityManagerService原理&源码

    https://www.kancloud.cn/alex_wsc/android-deep2/413386 http://wiki.jikexueyuan.com/project/deep-andro ...

  8. IDEA创建Struts2报错——web.xml

    这里记录一个问题,用IDEA创建Struts2时会出现的错误,cannot resolve class or package ‘filter’,出现在web.xml文件中,不修改这个,那么你配置好了T ...

  9. Linux常用基本命令( touch )

    touch命令: 作用:创建空文件,或者改变文件的时间戳属性 格式: touch [option] [file] 1,同时创建一个或者多个空文件 ghostwu@dev:~/linux/mkdir$ ...

  10. RBAC 介绍 (权限)

    RBAC是什么? RBAC是基于角色的访问控制(Role-Based Access Control )在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限.这就极大地简化了权 ...