Hbase系统架构简述
由于最近要开始深入的学习一下hbase,所以,先大概了解了hbase的基本架构,在此简单的记录一下。
Hbase的逻辑视图
Hbase的物理存储
HRegion
- Table中所有行都按照row key的字典序排列。
- Table在行的方向上分割为多个HRegion。
- HRegion按大小分割的,每个表开始只有一个HRegion,随着数据增多,HRegion不断增大,当增大到一个阀值的时候,HRegion就会等分会两个新的HRegion,之后会有越来越多的Region。
- HRegion是Hbase中分布式存储和负载均衡的最小单元,不同HRegion分布到不同HRegionServer上。
Store
- HRegion虽然是分布式存储的最小单元,但并不是存储的最小单元。
- HRegion由一个或者多个Store组成,每个Store保存一个columns family。 所以,每个column family存储在HDFS上的一个单独文件中,空值不会被保存。
- 每个HRtrore又由一个MemStore和0至多个StoreFile组成,StoreFile包含HFile。
- MemStore存储在内存中,StoreFile存储在HDFS上。
Hbase基本组件
Client
- 包含访问HBase的接口,并维护cache来加快对HBase的访问,比如HRegion的位置信息。
Master
- 为HRegionServer分配HRegion:比如在HRegion split时分配新的HRegion;在HRegionServer退出时迁移其内的HRegion到其他HRegionServer上
- 负责HRegionServer的负载均衡
- 发现失效的HRegionServer并重新分配其上的HRegion
- 管理用户对table的增删改查操作
- 管理namespace和table的元数据
- 权限控制(ACL)
HRegionServer
- HRegionServer维护HRegion,处理对这些HRegion的IO请求
- 存放和管理本地Hregion
- 读写HDFS,管理Table中的数据 HRegionserver负责切分在运行过程中变得过大的Hregion
- Client直接通过HRegionServer读写数据(从HMaster中获取元数据,找到RowKey所在的HRegion/HRegionServer后)
Zookeeper
- 通过选举,保证任何时候,集群中只有一个master,Master与RegionServers 启动时会向ZooKeeper注册
- 存贮所有Region的寻址入口
- 实时监控Region server的上线和下线信息。并实时通知给Master
- 存储HBase的schema和table元数据
Zookeeper的引入使得Master不再是单点故障
上图清晰的表达了HMaster和NameNode都支持多个热备份,使用ZooKeeper来做协调。
- ZooKeeper一般由三台机器组成一个集群,内部使用PAXOS算法支持三台Server中的一台宕机,也有使用五台机器的,此时则可以支持同时两台宕机,既少于半数的宕机。
- 然而随着机器的增加,它的性能也会下降。
- RegionServer和DataNode一般会放在相同的Server上实现数据的本地化。
协同工作
- HBase Client通过RPC方式和HMaster、HRegionServer通信。
- 一个HRegionServer可以存放1000个HRegion。
- 底层Table数据存储于HDFS中,而HRegion所处理的数据尽量和数据所在的DataNode在一起,实现数据的本地化。
- 数据本地化并不是总能实现,比如在HRegion移动(如因Split)时,需要等下一次Compact才能继续回到本地化。
Hbase的数据恢复
HLog
- 每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类。
- 在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中。
- HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。
恢复过程
- 当HRegionServer意外终止后,HMaster会通过Zookeeper感知到。
- HMaster首先会处理遗留的HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下。
- 然后再将失效的region重新分配,领取到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理。
- 因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。
- 示意图:
Hbase的容错
HRegionServer
- HRegionServer定时向Zookeeper汇报心跳。
- 如果一旦时间内未出现心跳,HMaster将该RegionServer上的Region重新分配到其他RegionServer上。
- 失效服务器上“预写”日志由主服务器进行分割并派送给新的HRegionServer。
HMaster
- 当现有Hmaster出现灾难无法运转,Zookeeper会重新选择一个新的Master,从而保障Master不再是单点故障。
- 无Master过程中,数据读取仍照常进行。
- 无master过程中,region切分、负载均衡等无法进行。
Zookeeper
- Zookeeper是一个可靠地服务,一般配置3或5个Zookeeper实例。
- Region定位流程:ZooKeeper--> -ROOT-(单Region)--> .META.--> 用户表
本文只是简单介绍一下hbase系统架构,后续会详细地补充。
Hbase系统架构简述的更多相关文章
- 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 中的数据,只有以下三种方式: 通过 ...
- Hbase系统架构
HBase 系统架构 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列 ...
- HBase 系统架构
HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列的存储模型.它存储的是 ...
- HBase系统架构及数据结构(转)
原文链接:Hbase系统架构及数据结构 HBase中的表一般有这样的特点: 1 大:一个表可以有上亿行,上百万列 2 面向列:面向列(族)的存储和权限控制,列(族)独立检索. 3 稀疏:对于为空(nu ...
- Hbase 系统架构(zhuan)
一.系统架构 客户端连接hbase依赖于zookeeper,hbase存储依赖于hadoop client: 1.包含访问 hbase 的接口, client 维护着一些 cache(缓存) 来加快对 ...
- 列式存储hbase系统架构学习
一.Hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行 ...
- hbase基础-系统架构
HBase 系统架构 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列 ...
随机推荐
- 使用C++11实现完美资源管理
1.资源管理包括内存管理.文件句柄等等需要进行打开(申请).关闭(释放)操作的过程 2.VS2010使用的C++规范,严格说来不是C++11,而是C++0x,但是一脉相承的 一:管理数组 相较于aut ...
- BASE64编码的字符进行URL传输丢失特殊字符的问题
因为BASE64的编码里含有“+”号等特殊字符,在url传输的时候会把+号编程空格,解决这个问题的方法: 请求时把BASE64编码进行url的编码再进行传输 接收时把BASE64编码进行url的解码 ...
- Linux内核收包过程
net/core/dev.c int __init net_dev_init(void) { queue->backlog.poll = process_backlog; open_softir ...
- July 02nd 2017 Week 27th Sunday
No safe wading in an unknown water. 未知水深浅,涉水有危险. Is this the theory that has been the guideline for ...
- 全国大学生数据挖掘邀请赛中的NDCG
转:http://www.zhizhihu.com/html/y2011/2794.html 评价标准 性能良好的评分模型,应该能够给予那些引起msg或click的候选会员更高的评分(排序靠前),从而 ...
- x:Name与Name区别
x:Name与Name有两个不同点: 1.x:Name是Xaml的标记特性,任何在Xaml中定义的元素,都可以使用x:Name来为元素指定名称. Name是FrameworkElement定义的依赖项 ...
- java动态代理的实现以及原理
1.前言 之前对动态代理的技术只是表面上理解,没有形成一个体系,这里总结一下,整个动态代理的实现以及实现原理,以表述的更清楚一些. 2.动态代理的实现应用到的技术 1.动态编译技术,可以使用Java自 ...
- BZOJ3670:[NOI2014]动物园(KMP)
Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习 ...
- 实现websocket
转:http://www.cnblogs.com/dolphinX/p/3462898.html 在之前的博客中提到过看到html5 的websocket后很感兴趣,终于可以摆脱长轮询(websock ...
- 字符串匹配KMP算法(转自阮一峰)
转自 http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 字符串匹配是计算 ...