整体框架



使用 ZooKeeper 框架协助 RegionServer(类似于HDFS的nodemanager)用户请求从 Client 到 Zookeeper 进行判断数据属于哪一个 Region 辅助 HBase 进行数据存储/检索

主节点 Master (类似HDFS的ResourceManager) 管理 RegionServer ,数据不经过 Master

物理模型

  • Table中多有行按照RowKey字典顺序排列
  • Table在行的方向上分割为多个Region

  • 随着Region大小的增大,达到一定阈值的时候,会分裂成两个新的Region
  • Table在行的方向上分割为多个Region

数据写入流程:put

  • Wal(Write Ahead Log) 预写日志(HLog)文件(HDFS/Hbase/目录下):这个是修改日志,不是整个文件?就像git一样?
  • memStore
  • storeFile

完整架构图HBase Architecture

数据存储

客户端 -> Zookeeper -> 得到 hbase:meta 表的 RegionServer -> 客户端从 meta 表中查得用户所需表的 RegionServer -> put/get/scan ...

1.nameSpace:类似于 RDBMS 中 Database 概念,用户创建的表在 default namespace 下 ,系统自带表在 hbase namespace 下

hbase:meta 表存储了 HBase 中所有(自己除外)表的元数据信息
hbase:namespace 表存储了 namespace 信息
# 显示所有 namespace
> list_namespace # 显示 namespace 下的表
> list_namespace_tables 'hbase' # 使用 hbase namespace 下的表 hbase:meta
> scan 'hbase:meta'

2.表数据存储位置:hdfs://HBase/data/

HFile:HBase中KeyValue数据的存储格式,是 Hadoop 的二进制文件格式,是 StoreFile 的轻量级包装
HLog File:(Write Ahead Log) 预写日志(HLog)文件,在物理上是 Hadoop 的 Sequence File

3.预写日志文件目录:hdfs://HBase/wals/

4.Zookeeper 作用:用户申请数据首先经过 Zookeeper,Zokkeeper 中存储了 mate 所在的 Region 被哪一个 RegionServer 管理的信息。Hmaster 管理 RegionServer 的信息存储在 Zookeeper 中

# 查看mate-server(bin/zkCli.sh)
$ get /hbase/meta-region-server # 查看 RegionServer 信息(分文件夹存储)
$ ls /hbase/rs

人工干预数据的读写

# 从 memStore 到 Hfile
$ flush 'tablename' # 合并小文件
$ compact 'tablename'

各个组件的功能和作用(参考JAVA API 导包)

Client

  • 整个集群的访问入口
  • 使用 HBase RPC(Remote Procedure Call Protocol)——远程过程调用协议 与 HMAster 和 HRegionServer 进行通信
  • 与 HMAster 进行通信,进行管理类操作(创建表,删除表...)
  • 与 HRegionServer 进行数据读写类操作(put get ...)
  • 包含访问 HBase 的接口,并维护 cache(缓存) 来加快对 HBase 的访问

Zookeeper

  • 通过 Zookeeper 协作,允许开启/存在多个 HMaster 但 Zookeeper 通过 Master Election 保证了任何时候,集群中只有一个 HMaster
  • 保存了所有的 HRegion 的寻址入口(Client 访问 Zookeeper 找到 Region 的信息)
  • 实时监控 HRegionServer 的上线和下线信息,并通知给 HMaster
  • 存储了 HBase 的所有表信息的元数据信息 namespace 的信息
  • 存储了 meta 表和 HMaster 的地址

HMaster

  • HMaster 不存在单点问题,HBase 中可以启动多个 HMaster (详情请看bin/master-backup.sh)通过 Zookeeper 通过 Master Election 保证了任何时候,集群中只有一个 HMaster 在运行,负责 Table 和 Region 的管理工作
  • 管理用户对 Table 的增删改查操作
  • 管理 HRegionServer 的负载平衡,调整 Region 分布
  • Region Split 后,负责新 Region 的分布
  • 在 HRegionServer 停机后,负责失效 HRegionServer 的 Region 转移工作

HRegionServer

  • 维护 HRegion 处理 HRegion 的 IO 请求,向 HDFS 文件系统中读写数据
  • 负责 Region Split ,之后再交给 HMaster 调整 Region 分布
  • 负责数据的访问过程,数据不经过 HMater ,HMaster 仅仅维护 Table 和 Region 的元数据信息,负载很低<<寻址访问 Zookeeper 和 HRegionServer ,数据访问 HRegionServer >>(重点)

HBase 高级架构解析的更多相关文章

  1. 深入HBase架构解析(二)【转】

    转自:http://www.blogjava.net/DLevin/archive/2015/08/22/426950.html 前言 这是<深入HBase架构解析(一)>的续,不多废话, ...

  2. [转]毕设- 深入HBase架构解析(二)

    深入HBase架构解析(二) 前言 这是<深入HBase架构解析(一)>的续,不多废话,继续.... HBase读的实现 通过前文的描述,我们知道在HBase写时,相同Cell(RowKe ...

  3. [转]毕设- 深入HBase架构解析(一)

    深入HBase架构解析(一)   前记 公司内部使用的是MapR版本的Hadoop生态系统,因而从MapR的官网看到了这篇文文章:An In-Depth Look at the HBase Archi ...

  4. 从程序员到CTO的Java技术路线图 JAVA职业规划 JAVA职业发展路线图 系统后台框架图、前端工程师技能图 B2C电子商务基础系统架构解析

    http://zz563143188.iteye.com/blog/1877266在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样 ...

  5. HBase 系统架构及数据结构

    一.基本概念     2.1 Row Key (行键)     2.2 Column Family(列族)     2.3 Column Qualifier (列限定符)     2.4 Column ...

  6. HBase 学习之路(二)—— HBase系统架构及数据结构

    一.基本概念 一个典型的Hbase Table 表如下: 1.1 Row Key (行键) Row Key是用来检索记录的主键.想要访问HBase Table中的数据,只有以下三种方式: 通过指定的R ...

  7. HBase 系列(二)—— HBase 系统架构及数据结构

    一.基本概念 一个典型的 Hbase Table 表如下: 1.1 Row Key (行键) Row Key 是用来检索记录的主键.想要访问 HBase Table 中的数据,只有以下三种方式: 通过 ...

  8. Netty原理架构解析

    Netty原理架构解析 转载自:http://www.sohu.com/a/272879207_463994本文转载关于Netty的原理架构解析,方便之后巩固复习 Netty是一个异步事件驱动的网络应 ...

  9. 从HBase底层原理解析HBASE列族不能设计太多的原因?

    在之前的文章<深入探讨HBASE>中,笔者详细介绍了: HBase基础知识(包括简介.表结构).系统架构.数据存储 WAL log和HBase中LSM树的应用 HBase寻址机制 mino ...

随机推荐

  1. February 26 2017 Week 9 Sunday

    There is only one happiness in life, to love and be loved. 生命中只有一种幸福,爱与被爱. Some one told me that hea ...

  2. BZOJ1820:[JSOI2010]Express Service 快递服务(DP)

    Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在同一栋大楼内,所以「飞奔」公司收件的地点(收件点)最多只有m点 (1, 2, …, ...

  3. Linux 进程状态标识 Process State Definition

    From : http://www.linfo.org/process_state.html 译者:李秋豪 进程状态标识是指在进程描述符中状态位的值. 进程,也可被称为任务,是指一个程序运行的实例. ...

  4. HTTP请求方式中8种请求方法(简单介绍)

    简单介绍 HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范.HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动态分配的.当我们没有指定端口访问时,浏览器会 ...

  5. WebApiConfig设置返回json并且对于get,post可以重名

    webapi2默认返回的是xml格式的,并且一个控制器中的方法名不能重名,列如:一个get,一个post这个也是不允许的,这些我们都可以进行设置. 下面设置:返回json格式,并且一个控制器中的方法可 ...

  6. LINQ to XML简介

    我们的配置文件使用XML存储信息.ADO.NET的DataSet(利用扩展方法)可以方便的将数据保存(或加载)为XML..NET特有的XML API,如XmlReader/XmlWriter类.微端提 ...

  7. data-ng-hide指令

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  8. linux系统命令与常识

    之前短期学过linux,用到时才发现已经忘得一干二净了. 现在对学过的和了解到的做一个总结: 先明确一些使用工具: winscp : WinSCP是一个Windows环境下使用SSH的开源图形化SFT ...

  9. Restframework框架总结及restful规范

    1. django rest framework框架的作用? 帮助开发者可以快速开发出遵循restful规范的API 2. django rest framework框架都有哪些组件(10)? -版本 ...

  10. Oracle递归 start with...connect by...prior

    prior一侧是父节点 另一侧是子节点 --查询region_id等于4519的节点下面的所有子节点 查找出给定节点的所有子节点 SELECT sr.* FROM spc_region sr wher ...