Hbase

Hbase

官方: Apache HBase™ is the Hadoop database, a distributed, scalable, big data store.
HBase是一个分布式,可扩展的Hadoop大数据存储框架
Hbase是基于谷歌公司的一篇论文,bigtable
Hbase也是构建在HDFS上的一个数据库,底层存储依赖于HDFS
在这里插入图片描述

关于Hbase的一些注意点

  1. Hbase创建表的时候并不是指定列,而是指定列簇,而列对应的是数据(不同于mysql)
  2. Hbase中RegionServer(以下简称RS)类似Hadoop中的Datanode,负责数据的真正读写操作,管理Region表,合并StoreFile
  3. HMaster类似于Namenode,通过zookeeper存储元数据信息(HMaster和HRegionServer都是java进程)
  4. HLog对应于Hadoop中的edits,store对应列簇
  5. HBase中列不能抛开列簇单独存在,一个列名必须加上CF列簇名字
  6. 当Region(简单理解为一张表)过大被切分时,是将列簇HStore横向切分,所以在切分后,一个列簇可以对应有多个HStore,而反过来一个HStore只对应着一个列簇
  7. HFile是Hbase在HDFS上存储的一种格式
  8. 每个列簇会在memFile后冲刷到storeFile,所以会有许多小文件产生,但后期会有合并机制
  9. 元数据入口指的是客户端会先去找ZK拿到元数据信息
  10. RS只是HBase表的一个管理者,真正数据存储还是在HDFS上(DN),而HMaster负责HBase元数据的管理,当一个Region失效,HMaster会将其管理的地址信息分配给其余的RS来保证数据的完整性(数据并未丢失,而数据存储地址管理由HMaster负责)

HBase读写流程

  1. Hbase版本0.98以后没有-root-表,元数据信息都存在meta表中,而zookeeper中维护着meta表的地址信息;若是老版本则总体后推一步,包含元数据信息的meta表存在于-root-表中,而root表地址信息维护在zookeeper中。(zookeeper中只负责维护表的地址信息,不可能大量的存在表,从而占用zookeeper空间)

  2. Hbase读数据流程:
    Hbase读流程和HMaster没有关系,HMaster挂掉一样不影响Hbase的读流程,且读较写流程要慢

  1. Client向ZK集群发送获取元数据所在的RegionServer
  2. ZK集群返回meta表所在的RegionServer(RS1:hadoop01)
  3. Client向RS1请求rowkey所在的RS
  4. RS1返回rowkey所在的RS2:hadoop02
  5. Client向RS2发起读数据请求
  6. RS2返回结果(先读最新的数据也即在内存中的数据,若内存中没有则再读磁盘)
  1. Hbase写数据流程
    1. 当Client将数据通过HLog写入Mem Store以后则Client的写入已经结束,而后期的关于MemStore的刷写以及合并过程则跟客户端毫无关系,而是Hbase本身的框架进行后期的一系列的操作
    2. 写入过程只要不涉及region的切分,则不需要元数据更新。而Hmaster挂掉一样可以进行写的操作,但是长时间处于挂掉状态集群就会很危险,导致数据的严重倾斜,不会进行region的切分以及数据的合并
  1. Client向ZK集群发送请求,获取meta表所在的RS
  2. ZK集群返回meta表所在的RS1
  3. Client获取meta表
  4. RS1返回meta表的数据给Client
  5. Client发送写入数据请求
  6. 先编写HLog编辑日志信息(多副本形式保存在HDFS)
  7. 将数据写入Memstore
  8. 向Client反馈写入成功信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值