1.HBase系统架构
 
 
 
2. HRegion Sever架构图
  • 0.94之前的版本

  • 0.96+的版本

  • WAL: 即Write Ahead Log, 是HDFS上一个文件,早期版本中称为HLog,用以存储尚未进行持久化的数据。

所有写操作都会先保证将数据写入这个Log文件后,才会真正更新MemStore,最后写入HFile中。采用这种模式,可以保证HRegionServer宕机后,我们依然可以从该Log文件中读取数据,Replay所有的操作,而不至于数据丢失。这个Log文件会定期Roll出新的文件而删除旧的文件(那些已持久化到HFile中的Log可以删除)。

WAL文件存储在/hbase/WALs/${HRegionServer_Name}的目录中(在0.94之前,存储在/hbase/.logs/目录中),一般一个HRegionServer只有一个WAL实例,也就是说一个HRegionServer的所有WAL写都是串行的(就像log4j的日志写也是串行的),这当然会引起性能问题,因而在HBase 1.0之后,通过HBASE-5699实现了多个WAL并行写(MultiWAL),该实现采用HDFS的多个管道写,以单个HRegion为单位。

  • BlockCache: 是一个读缓存。在内存中存放经常读的数据,提升读性能。当缓存满的时候,最近最少使用的数据(Least Recently Used data )被踢出去。
  • MemStore:是一个写缓存。存储尚未写到磁盘中的数据。在写到磁盘之前,数据是经过排序的。在Region中每个column family对应一个HStore,每个HStore有一个MemStore和0到过个HFile。
  • Hfiles :在磁盘上,用于存储排序后的数据行(KeyValues.)
3. HMaster/HRegion 工作原理
 
HRegion Server上线
 
    HMaster通过Zookeeper来追踪HRegion Server的状态。
 
    HRegion Server 上线时,首先在Zookeeper的server目录中创建自己的文件,并取得文件的独占锁。
 
    由于HMaser订阅了server目录,当目录下有文件增加或者删除时,HMaster能收到来自Zookeeper的实时通知,因此当HRegion Server上线时HMaster能马上得到消息。
 
HRegion Server下线
   
    HRegion server下线时,它断掉了Zookeeper的通讯,Zookeeper便会释放代表server的文件的独占锁。
 
    HMaster轮询Zookeeper server目录下文件的独占锁。 当HMaster发现某个Region server丢失了自己的独占锁(或者HMaster与HRegion server连续几次通讯都不成功), HMaster将尝试获取该文件的读写锁,一旦获取成功,说明:
 
  • 该HRegion server与Zookeeper通讯已经断开
  • 该HResion server挂了
 
      无论哪种情况,HMaster将删除Server目录下代表该server的文件,并将该server的所有region,并将其分配给其他或者的server。 如果HRegion server因为临时网络断开丢失了锁,并很快恢复与Zookeeper的通讯,只要代表其的文件没有被删除,它会继续尝试或许该文件的锁,一旦获取成功,它就可以接着服务
 
HMaster上线
 
HMaster启动时:
1. 从 Zookeeper中获取一个代表HMaster的锁,用以阻止其他Master成为Master
2. 扫描Zookpper中的server目录,获取HRegion server的list
3. 与2中获取的server 通讯,获取已分配的region和region server的对应关系 
我的理解:
前面讲过region的encode值就是存放region的文件的目录名,这些目录位于hdfs中的hbase相关的数据目录中.
所以HMaster可以扫描这些目录获取region的信息,根据region的名字就可以从hbase:meta中获取相应的HRegion Server信息
4扫描hbase:meta表,记录尚未分配的region的信息,并添加到待分配的region列表中
 
HMaster下线
 
HMaster下线时,由于它不参与client的IO操作,所以这些操作不受影响。HMaster下线仅导致元数据的操作(比如无法创建表,无法修改表结构,无法进行负载均衡,无法进行region的合并,但是split可以进行,因为split只有HRegion server参与)受影响,用户的IO操作可以继续进行。所以短时间内的HMaster下线对HBase集群影响不大。 

小结:HMaster 和HRegion Server通在Zookeeper中创建Ephemeral(临时的)节点来完成注册。
具体来说,HMaster默认在 /hbasae/master目录下创建,HRegion Server在 /hbase/rs/*下创建, 创建后通过HeartBeat来维持关系。
 
 参考文献:
http://www.blogjava.net/DLevin/archive/2015/08/22/426877.html

HMaster/HRegion Server 工作原理的更多相关文章

  1. Kubernetes API server工作原理

    作为Kubernetes的使用者,每天用得最多的命令就是kubectl XXX了. kubectl其实就是一个控制台,主要提供的功能: 1. 提供Kubernetes集群管理的REST API接口,包 ...

  2. DHCP server工作原理

    1.CLIENT首先发出广播的DHCPDISCOVER报文,广播的目的是让DHCP SERVER能够收到这个请求报文.在这个报文中,CLIENT可以在"选项"字段中加入" ...

  3. Zookeeper 1、Zookeeper 定义与工作原理

    1.什么是Zookeeper » Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务 » 它包含一个简单的原语集,分布式应用程序可以基于它实现同步 ...

  4. HBase 1、HBase介绍和工作原理

    HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Google文件 ...

  5. 【夯实Nginx基础】Nginx工作原理和优化、漏洞

    本文地址 原文地址 本文提纲: 1.  Nginx的模块与工作原理    2.  Nginx的进程模型    3 . NginxFastCGI运行原理        3.1 什么是 FastCGI   ...

  6. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)

    RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...

  7. HTTP协议请求响应过程和HTTPS工作原理

    HTTP协议 HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本. 服务器按照一定规则,发送到客户端(一般是浏览器)的传送通信协议.与之类似的还有文件传送协议(file transfer p ...

  8. zookeeper工作原理、安装配置、工具命令简介

    1.Zookeeper简介 Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. 2.zo ...

  9. 详解Java GC的工作原理+Minor GC、FullGC

    详解Java GC的工作原理+Minor GC.FullGC 引用地址:http://www.blogjava.net/ldwblog/archive/2013/07/24/401919.html J ...

随机推荐

  1. UVa 10520【递推 搜索】

    UVa 10520 哇!简直恶心的递推,生推了半天..感觉题不难,但是恶心,不推出来又难受..一不小心还A了[]~( ̄▽ ̄)~*,AC的猝不及防... 先递推求出f[i][1](1<=i< ...

  2. 5、nginx配置

    1.安装 sudo apt-get install nginx 2.启用 sudo service nginx start 3.若要将 Nginx 配置为转发请求向 ASP.NET Core 应用程序 ...

  3. 解决 VS 跳转定义和 Resharper 重复

    在大约一周之前,Visual Studio 进行了一项更新,增加了 Ctrl+Click 点击跳转到定义的功能.这项功能与 ReSharper 重复了. 于是可以通过关闭其中一个跳转定义可以使用. V ...

  4. laravel 5.6 请教邮件中的cc,bcc是什么意思,有什么用?

    cc指抄送 bcc指暗送. cc:carbon copy bcc:blind carbon copy

  5. linux包之nmap之ncat命令

    [root@ka1che225 ~]# which nc/usr/bin/nc[root@ka1che225 ~]# which ncat/usr/bin/ncat[root@ka1che225 ~] ...

  6. LEMP--如何在Ubuntu上安装Linux、Nginx、MySQL和PHP

    简介 LEMP是用来搭建动态网站的一组软件,首字母缩写分别表示Linux.Nginx(Engine-X).MySQL和PHP. 本文将讲述如何在Ubuntu安装LEMP套件.当然,首先要安装Ubunt ...

  7. Python--day72--ajax完整版

    来源: AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格 ...

  8. Java集合系统

    前言: 要想学习java的集合体系,就必须先了解java的集合框架,总的来说,分为Collection和Map体系. Collection集合框架: Map集合框架: 一. Collection接口 ...

  9. HDU 1568

    - - 我自己开始以为是数值范围是1到100000000.... 搞了半天才发现是斐波那契数列的项数1到100000000 坑爹.!! 不会,只能看网上大牛的题解. 具体解释请看:http://www ...

  10. java项目和npm项目命令窗口部署方便调试

    1.maven窗口选择root项目 在点击lifstyle--> package 点击播放箭头 build完毕以后会出现在TARGET目录下todo.jar 在执行 java -jar todo ...