美文网首页我爱编程
Hbase学习笔记-Hbase架构详解

Hbase学习笔记-Hbase架构详解

作者: 时待吾 | 来源:发表于2017-05-03 00:29 被阅读574次

    主从架构: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与Zookeeper

    Hbase元数据存储在zookeeper中

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

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

    Hmaster与HregionServer启动时会向Zookeeper注册

    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带项目符号的内容。在机器学习的迭代计算中非常有优势

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

    不是立即删除。

    Log flusher -> HLog线程同步

    HRegionServer:

    其管理一些列Hregion对象

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

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

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

    Family会更高效

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

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

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

    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定长保存每一段的偏移量

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

    相关文章

      网友评论

        本文标题:Hbase学习笔记-Hbase架构详解

        本文链接:https://www.haomeiwen.com/subject/gzahtxtx.html