Hbase学习笔记-Hbase架构详解

主从架构:HmasterHRegionServer

协调服务Zookeeper协调hmaster与hregionServer

底层hbase数据存储hbase文件中

Client与zookeeper和hregionServer交互不与Hmaster交互类似于hdfs

namenode和datanode

客户端Client:

整个hbase集群的入口进行表的增删查改操作入口与zookeeper进行一系列的的交互

使用hbase

rpc机制与hmaster、hregionServer进行通信

与hmaster通信进行管理类的操作

与hregionserver通信进行读写类的操作表的交互

包含访问hbase的接口,并维护cache加快对hbase的访问,与hregionServer交互

协调服务zookeeper

保证任何时候,集群中只有一个master HA解决单节点故障

存储所有region的寻址入口

实时监控Region server的上线和下线信息并实时通知给master

存储hbase的schema和table元数据

Hbase主节点Hmaster

通过zookeeper选举机制解决单节点故障问题

管理用户对表table的增删改查操作主要是针对表的管理不是表数据的管理

管理HregionServer的负载均衡和调整Region的分布

在Region Split(扩大)后,负责新Region的分配

Hmaster失效仅会导致所有元数据无法被修改,表的数据读写还是可以正常进行

RegionServer节点:

维护Hregion并往HDFS中写数据

当表的大小超过设置时候,split HRegion

在Hregion Server停机后,负责失效HregionServer上的Region迁移

Hbase学习笔记-Hbase架构详解_第1张图片

Hbase与Zookeeper

Hbase元数据存储在zookeeper中

默认情况下,Hbase(自带zookeeper,生产环境中一般使用外置通用的的zookeeper)管理Zookeeper的实例比如启动或停止zookeeper

Zookeeper解决Hbase单点故障问题zookeeper选举机制

Hmaster与HregionServer启动时会向Zookeeper注册

Hbase学习笔记-Hbase架构详解_第2张图片

Zookeeper文件->root表信息(0.96后不存储root表信息)->meta Data->user Table

寻找RegionServer过程:

Zookeeper(读取zookeeper找到root表位置) ->

Root (root表包含meta表所在的region列表该表只会有一个Region

zookeeper中记录了root的location)

Meta(meta表包含所有用户控件region列表以及RegionServer服务器的地址)

用户表

Client第一次操作后,会将root meta缓存到本地不需要再访问zoookeeper

Hbase容错:

Master容错:zookeeper重新选择一个新的master

无master过程中,数据读取照常进行客户端读取数据无需经过hmaster

无master过程中,region切分、负载均衡等无法进行

RegionServer容错:定时向zookeeper汇报心跳如果一段时间未出现心跳,master将该RegionServer的region重新分配到其他RegionServer

失效服务器上的预写日志由主服务器进行分割并派送给新的RegionServer

Zookeeper容错:zookeeper高可靠的服务不存在单点故障

HBase数据存储:

HLog HFileStoreFile是对HFile做一层封装

插入一条数据写两份文件一个是HLog文件二进制日志文件

Region文件,内存中写数据-memstore文件达到一定大小后StoreFile文件

Hbase中所有数据文件都存储在hadoop

hdfs文件系统上,格式主要有:

HFile:Hbase中keyValue数据的存储格式,Hfile是hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile

HLogFile:Hbase中WAL write

ahead log的存储格式,物理上是hadoop的sequence file带项目符号的内容。在机器学习的迭代计算中非常有优势

Hbase学习笔记-Hbase架构详解_第3张图片

Delete是针对数据打上标签,后期进行compactor时候,再进行删除操作。

不是立即删除。

Log flusher -> HLog线程同步

HRegionServer:

其管理一些列Hregion对象

每个HRegion对应Table中一个Region,HRegion由多个HStore组成

每个HStore对应Table中一个Column Family的存储

Column Family就是一个集中地存储单元,将具有IO特性的Column放在一个Column

Family会更高效

Hbase学习笔记-Hbase架构详解_第4张图片

版本合并和数据删除:删除的数据是客户端打了标签的数据,即之前delete的数据。

Hbase学习笔记-Hbase架构详解_第5张图片

Hbase的写操作非常快,直接往内存中写数据。

所有的更新和删除操作都是在conpact阶段做的。

Hbase学习笔记-Hbase架构详解_第6张图片

StoreFile文件结构:

StoreFile以HFile格式保存在HDFS上

Data Block段-保存表中的数据,可以被压缩

Meta block段可选,保存用户自定义的kv对,可以被压缩

File info段,HFile的元信息,不压缩用户也可以在这一部分添加自己的元信息

Data block index段– data block索引,每条索引的key是被索引的block的第一条记录的key

Meta block index段meta block索引

Trailer定长保存每一段的偏移量

Hbase学习笔记-Hbase架构详解_第7张图片
Hbase学习笔记-Hbase架构详解_第8张图片
Hbase学习笔记-Hbase架构详解_第9张图片
Hbase学习笔记-Hbase架构详解_第10张图片

类似于Mysql的banglog用于做灾难恢复集群挂了下次启动根据日志恢复

Hbase学习笔记-Hbase架构详解_第11张图片

你可能感兴趣的:(Hbase学习笔记-Hbase架构详解)