HBase 高级架构解析
整体框架
使用 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 高级架构解析的更多相关文章
- 深入HBase架构解析(二)【转】
转自:http://www.blogjava.net/DLevin/archive/2015/08/22/426950.html 前言 这是<深入HBase架构解析(一)>的续,不多废话, ...
- [转]毕设- 深入HBase架构解析(二)
深入HBase架构解析(二) 前言 这是<深入HBase架构解析(一)>的续,不多废话,继续.... HBase读的实现 通过前文的描述,我们知道在HBase写时,相同Cell(RowKe ...
- [转]毕设- 深入HBase架构解析(一)
深入HBase架构解析(一) 前记 公司内部使用的是MapR版本的Hadoop生态系统,因而从MapR的官网看到了这篇文文章:An In-Depth Look at the HBase Archi ...
- 从程序员到CTO的Java技术路线图 JAVA职业规划 JAVA职业发展路线图 系统后台框架图、前端工程师技能图 B2C电子商务基础系统架构解析
http://zz563143188.iteye.com/blog/1877266在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样 ...
- HBase 系统架构及数据结构
一.基本概念 2.1 Row Key (行键) 2.2 Column Family(列族) 2.3 Column Qualifier (列限定符) 2.4 Column ...
- HBase 学习之路(二)—— HBase系统架构及数据结构
一.基本概念 一个典型的Hbase Table 表如下: 1.1 Row Key (行键) Row Key是用来检索记录的主键.想要访问HBase Table中的数据,只有以下三种方式: 通过指定的R ...
- HBase 系列(二)—— HBase 系统架构及数据结构
一.基本概念 一个典型的 Hbase Table 表如下: 1.1 Row Key (行键) Row Key 是用来检索记录的主键.想要访问 HBase Table 中的数据,只有以下三种方式: 通过 ...
- Netty原理架构解析
Netty原理架构解析 转载自:http://www.sohu.com/a/272879207_463994本文转载关于Netty的原理架构解析,方便之后巩固复习 Netty是一个异步事件驱动的网络应 ...
- 从HBase底层原理解析HBASE列族不能设计太多的原因?
在之前的文章<深入探讨HBASE>中,笔者详细介绍了: HBase基础知识(包括简介.表结构).系统架构.数据存储 WAL log和HBase中LSM树的应用 HBase寻址机制 mino ...
随机推荐
- Python3循环语句
Python3 循环语句 Python中的循环语句有for和while. 循环语句控制结构图如下: 一.while循环 ①循环结构 while 判断条件: 执行语句 实例: n = int(input ...
- Android(java)学习笔记4:线程的控制
1. 线程休眠: Java中线程休眠指让正在运行的线程暂停执行一段时间,进入阻塞状态,通过调用Thread类的静态方法sleep得以实现. 当线程调用sleep进入阻塞状态后,在其休眠的时间内,该线程 ...
- ACM-ICPC (10/14)
动态规划的四个姿势 动态规划要学好,姿势一定要骚,在实战的时候,你将你的转移方程按照以下四种姿势搞一发后,一定会是耳目一新,引来萌妹子的注意~~~哈哈!!! 言归正传了!!! 之所以写动态规划优化,是 ...
- Codeforces Round #422 (Div. 2)
Codeforces Round #422 (Div. 2) Table of Contents Codeforces Round #422 (Div. 2)Problem A. I'm bored ...
- 常用PowerShell命令
查看版本: 文件重命名: 别名查看: 当前路径:(别名pwd) 切换路径:(别名cd) 子列表:(别名ls -Force可查看隐藏项) 查看用户:(可显示隐藏) 资源管理器打开当前目录:(cmd亦可 ...
- TemplateSyntaxError at /article/list-article-titles/admin/
如图红圈所示,发现一个注释掉的{% if userinfo %}标签竟然可以影响后面的标签快,不能注释,需要完全删除才不会报错. 继续这类django在html模板中直接注释掉发生错误以及解决方案: ...
- Html5简单描述(优点与缺点)
什么是HTML5 HTML5指的是包括HTML.CSS和JavaScript在内的一套技术组合.它希望能够减少网页浏览器对于需要插件的丰富性网络应用服务(Plug-in-Based Rich Inte ...
- 【luogu P3901 数列找不同】 题解
对于区间查询的问题,提供一种思路: 莫队. 莫队是处理区间问题的乱搞神器,尤其是对于离线查询问题,当然也可以做在线查询,比如带修莫队. 对于有的题,莫队是乱搞骗分,而在某些地方,莫队是正解. 这道题来 ...
- 【luogu P1195 口袋的天空】 题解
题目链接:https://www.luogu.org/problemnew/show/P1195 嗯~我是被题目背景吸引到才做的,想吃棉花糖啦! 话说回来,这道题其实很容易就能想明白,k棵最小生成树. ...
- Extjs treePanel 加载等待框
beforeload : { fn : function (store, operation, eOpts){ loadMask = new Ext.LoadMask(Ext.get(this.get ...