HBASE 架构

 

  • Client

    • 包含访问HBase的接口并维护cache来加快对HBase的访问

  • Zookeeper

    • 保证任何时候,集群中只有一个活跃HMaster

    • 存贮所有HRegion的寻址入口

    • 实时监控HRegionServer的上线和下线信息,并实时通知HMaster

    • 存储HBase的schema和table元数据

  • HMaster

    • 为HRegionServer分配HRegion

    • 负责HRegionServer的负载均衡

    • 发现失效的HRegionServer并重新分配其上的HRegion

    • 维护集群的元数据信息

  • HRegionServer

    • HRegionServer维护HRegion,处理对这些HRegion的IO请求

    • HRegionServer负责切分在运行过程中变得过大的HRegion

  • HRegion

    • HBase自动把表水平划分成多个区域(HRegion),每个HRegion会保存一个表里面某段连续的数据

    • 每个表一开始只有一个HRegion,随着数据不断插入表,HRegion不断增大,当增大到一个阀值的时候,HRegion就会等分会两个新的HRegion(裂变)

    • 当table中的行不断增多,就会有越来越多的HRegion。这样一张完整的表被保存在多个HRegionserver 上

  • Memstore 与 storefile

    • 一个HRegion由多个store组成,一个store对应一个CF(列族)

    • store包括位于内存中的memstore和位于磁盘的storefile

    • 写操作先写入memstore,当memstore中的数据达到某个阈值,HRegionServer会启动flash,将cache写入storefile,每次写入形成单独的一个storefile,storefile以HFile格式保存在HDFS上

    • 当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major compaction),在合并过程中会进行版本合并和删除工作(majar),形成更大的storefile

    • 当一个HRegion所有storefile的大小和数量超过一定阈值后,会把当前的HRegion分割为两个,并由HMaster分配到相应的HRegionserver服务器,实现负载均衡

    • 客户端检索数据,先在memstore找,找不到再找storefile

posted @ 2019-07-01 20:36  北漂屌丝  阅读(145)  评论(0编辑  收藏  举报