HBase架构

首先摆一个架构图

HBase架构

主要包含的方面是

  1. HDFS 因为数据是保存在HDFS上的HBase内存满了之后就会将内存中的数据写入到HDFS上.也就是说除了内存之外的数据全部保存在HDFS上
  2. Client:
    1. 与HBase进行读写操作
    2. 可以有多个Client来访问HBase
  3. ZooKeeper
    1. 客户端是与ZooKeeper进行交互的并不是直接与HMaster进行交互的ZooKeeper中存储的信息是非常重要的比如:
      1. 保证集群中只有一个HMaster,以及当前的Master是哪个,管理着哪些RegionServer
      2. 监控RegionServer的上下线,并实时通知Master
      3. HMaster
      4. 为RegionServer分配Region,
      5. RegionServer负载均衡
      6. 发现某一个RegionServer失效,则会把该RegionServer上的Region分配到其它的RegionServer上
        • HBase中可能会有多个Master但是整个集群只有一个Master可用,当一个Master挂掉.则通过Zookeeper选举一个Master,所以这里不会出现单点故障
      7. RegionServer:
      8. 维护Region,处理Region的IO请求
      9. RegionServer负责切分在运行过程中变得过大的Region
        • 负责 存储真正的数据;
        • 一个RegionServer中管理多个Region
      10. Region
      11. 按行对RowKey对应的数据进行拆分
      12. 一个Region中存储的是多个Store
      13. 每一个Store对应着一个ColumnFamily
      14. 数据先存储在MemStore中.
      15. 当MemStore中的数据达到一个阈值之后.
      16. 将数据放到StoreFile里面,以HFile的方式通过HDFS Client存放在DataNode上
      17. 最终数据是以HFile的方式存储在HDFS上面的
      18. Client
      19. 通过ZooKeeper来与HMaster进行交互
      20. HLog
      21. 记录操作记录,为了容错处理.
        • 数据丢失,可以回滚

HBase是依赖于ZooKeeper的,防止单点故障
1. ZooKeeper是外置的(推荐)
1. 因为HDFS等一些东西都需要ZooKeeper进行主备份的切换.
2. 同理既然已经有ZooKeeper则使用一个就可以了
2. HBase内置的

总结

  1. Client发起请求读写,HM通过Zk进行选举
  2. HMaster管理多个RegionServer的上下线,负载均衡等
  3. RegionServer管理多个Region
  4. 一个Region由多个Store组成
  5. 一个Store对应一个ColumnFamily
  6. Store中的数据首先存放在MemoryStore中
  7. 达到一定阈值会把MemoryStore中的数据写到StoreFile中
  8. StoreFile最终以HFile的方式写入到HDFS之上
  9. Client的每次操作都会以Log的方式记录,方便以后数据的回滚.