Hadoop HBase概念学习系列之META表和ROOT表(六)

 

  在 html

HBase里的HRegion

  里,谈过,HRegion是按照表名+开始/结束主键,即表名+主键范围来区分的。因为主键范围是连续的,因此通常用开始主键就能够表示相应的HRegion了。服务器

  不过,由于咱们有合并和分隔操做,此时,若是正好在执行这些操做的过程当中出现死机,那么就可能存在多份表名和开始主键相同的数据,这样的话,只有光靠开始主键就不够了,这就须要经过HBase的元数据信息来区分哪一份才是正确的数据文件。为此,为了区分这样的状况,每一个HRegion都有一个'regionId'来标识它的惟一性。post

  因此一个HRegion的表达符,最终是:  表名+开始主键+惟一Id,即tablename+startkey+regionIdurl

  咱们能够用这个识别符来区分不一样的HRegion,这些数据就是元数据(META),而元数据自己也是被保存在HRegion里面的,因此,咱们称呼这个表为元数据表(META表),即META Table,里面保存的就是HRegion标识符和实际HRegion服务器的映射关系spa

  

  元数据表也会增加,而且可能被分割为几个HRegion,为了定位这些HRegion,咱们采用一个根数据表(ROOT表),即ROOT Table,它保存了全部元数据表的位置,而跟数据表是不能被分割的,永远只保存在一个HRegion3d

  在HBase启动的时候,主服务器先去扫描根数据表,由于这个表只会有一个HRegion,全部这个HRegion的名字是被写死的。固然要把跟数据表分配到一个HRegion服务器中须要必定的时间。code

  当根数据表被分配好以后,主服务器就会扫描根数据表,获取元数据表的名字和位置,而后把元数据表分配到不一样的HRegion服务器中。最后就是扫描元数据表,找到全部HRegion区域的信息,把它们分配给不一样的HRegion服务器。server

  主服务器在内存中保存着当前活跃的HRegion服务器的数据,所以若是主服务器死机,整个系统也就没法访问了,这时服务器的信息也就没有必要保存到文件里面了。htm

 

  元数据和跟数据表的每一行都包含一个列簇(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表记录详细。

  理解了么,各博友们。~

相关文章
相关标签/搜索