栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hbase

Hbase

Hbase 是由三种类型的server组成的主从式(master-slave)架构:

1 几个角色:

        1 Region server 负责处理数据的读写请求,客户端请求数据时直接和Region server交互

        2 Hbase Master 负责Region的分配,DDL(创建、删除table)等操作

        3 Zookeeper,作为Hadoop的一部分,负责集群状态的维护

2 关于数据存储:

        1 Hadoop DataNode 负责存储Region server所管理的数据。所有的Hbase数据都存储在HDFS文件中。Region server 和 HDFS DataNode 往往是分布在一起的,这样 region server就能够实现数据的本地化(data locality,即将数据放在离需要者尽可能近的地方)。

        2 Hbase的数据在写的时候是本地化,但是当region被迁移的时候,数据可能就不再满足本地化性了,直到完成compaction,才能恢复数据本地化。

        

3 Region server

        1 Hbase表(table)根据rowkey的范围被水平拆分成若干个的region

        2 每个region都包含了这个region的start key 和 end key之间的所有行(row)

        3 Regions被分配给集群中的某些region server来管理,他们来负责处理数据的读写请求

        4 每个region server大约可以管理1000个regions

 4 Hbase  Master

        1 负责Region的分配,DDL(创建、删除表)等操作:

        2 统筹协调所有region server:

                1 启动时分配regions,在故障恢复和负载均衡时重新分配 regions

                2 监控集群中所有 Region Server 实例(从zk中获取通知信息)

       

5 zookeeper

        1 zk做分布式管理服务,来维护集群中所有服务的状态

        2 在hbase组件中,维护了 region server的健康可用状态,并在server故障时作出通知

6 Hbase各组件如何协调工作的

        1 zk用来协调分布式系统中集群状态信息的共享

        2 region server 和 active HMaster 与 zk 保持session会话

        3 zk通过heartbeat检测来维护所有临时节点  

        4 region server会在zk中注册临时节点,并保持heartbeat会话

        5 active 和 standby 的HMaster 会竞争注册临时节点,注册成功的成为active

        6 standby HMaster 监控active HMaster的状态,随时准备上位

      

7 读写操作

        1  meta table (一张特殊的Hbase表),包含了集群中所有regions的位置信息。zookeeper保存了这张meta table 存在哪个region server的位置信息。

        2 Hbase第一次读写时,client从zk获取那一台region server负责管理的meta table。

        3 client会请求负责管理meta table的region server,进而获取那一个region server负责管理着本次请求所需要的row key。客户端会缓存这个信息,以及meta table的位置信息本身。

        4 客户端,去访问row key所在的region server,获取数据。

        5 region数据迁移会导致client缓存失效。

8 meta table 

通过table key 从meta table 表 ,获取所在的 region server

    

9 region server

        region server运行在HDFS DataNode 上,由以下组件组成:

                1 WAL : write ahead log 是分布式文件系统上的一个文件(硬盘),用于存储新的还未被持久化的数据,它被用来做故障恢复

                2 BlockCache : 这是读缓存,在内存中存储了最常访问的数据

                3 Memstore : 这是写缓存,在内存中存储了新的还未被持久化到硬盘的数据。当被写入硬盘时,数据会首先被排序。

                   注意, 都会有一个每个region的每个column family 都会有一个MemStore

                4 HFile : 在硬盘上(HDFS)存储Hbase数据,以有序的keyvalue的形式 

10 Hbase写数据

        1 当客户端发起一个写数据请求(put 操作),第一步首先是将数据写入WAL中:

  • 新数据会被追加到WAL文件末尾,这种磁盘操作性能很高,不会太影响整体的请求响应时间
  • WAL用户故障恢复时,恢复会未被持久化的数据
  • 数据在写入WAL之后,会被加入到Memstore即写缓存
  • 然后服务端就可以向客户端返回ack表示写数据完成

        2 数据写入WAL和Memstore的顺序不能调换,必须先WAL再MemStore,从而保证容灾     

11 Memstore

        1 在内存中缓存数据更新,以有序的keyvalue形式

        2  以有序的keyvalue形式存储

        3 每个columnfamily都有一个Memstore 

        4 所有更新都以columnfamily为单位

12 Region flush 

        1 memstore中累积了足够多的数据后,整个有序数据集就会被写入一个新的HFile文件到HDFS

        2 每个column family 对应 一个memstore 同时对应一个 HFile,里面存储对应的cell , 即keyvalue数据

        3 随着时间推移,HFile会不断的产生,因为key-value会不断的从memstore中刷写到磁盘上

        4 HFile会记录最后写入的数据的最大序列号,这样系统就能够知道哪些数据已经被持久化

        5 序列号在故障恢复时也会用到

        6 最大序列号(sequence number)

                1 是一个meta 信息

                2 被存储在每个HFile中,标识持久化数据到哪一条了,应该从哪条继续

                3 region启动时,这些序列号会被读取,取其中最大的一个,作为基础序列号,后面的新数据就会在该值基础上递增产生新的序列号

 13 HFile

        1 数据以有序的key-value对形式,存储在HFile中

        2 当memstore中数据积累足够多后,整个有序数据集就会被写入一个新的HFile文件到HDFS

        3 整个刷写过程是 顺序写磁盘,速度非常快,因为它不需要移动磁盘头

14 HFile文件结构

        1 HFile 使用多层索引来查询数据而不必读取整个文件,这种多层索引类似于一个B+ Tree

        2 trailer 指向信息数据块,它是在数据持久化为HFile时被写到HFile文件尾部

        3 trailer 包含布隆过滤器和时间范围等信息

        4 bloom过滤器用来跳过那些不包含指定rowkey的文件

        5 时间范围信息,根据时间来过滤,跳过那些不在请求的时间范围之内的文件

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/602478.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号