(一)NoSQL数据库分类

                 

hbase的客户端程序无法连接zookeeper hbase的客户端有哪些_JAVA

           (二)Hbase整体架构

            

 

 

hbase的客户端程序无法连接zookeeper hbase的客户端有哪些_JAVA_02

       ①Client(客户端)

            Hbase系统的入口,使用者直接通过客户端操作Hbase;不限定是原生JAVA接口还是Thrift,Avro,Rest等客户端模式。甚至Mapreduce也可以被看作是一种客户端、

       ②ZooKeeper(协调服务组件)

         ZooKeepr Quorum(队列)复杂管理HBase多HMaster的选举,服务器之间状态同步、

HMaster:多节点HMaster没有单点问题。在HBase中可以启动多个HMaster,通过Zookeeper的Master选举制度保证总有一个master正常运行并提供服务、其他HMaster作为备选时刻准备提供服务。HMaster主要负责Table和Regiond的管理工作:①管理用户对Table的增、删、改、差操作。

       ②管理RegiondServerd的负载均衡。

        ③在Regiond分裂后,负责新Regiond的分配

RegiondServer死机之后,负责失效RegiondServerd上的Regiond迁移。

hbase的客户端程序无法连接zookeeper hbase的客户端有哪些_JAVA_03

  

       HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。
      HRegisonServer内部管理了一系列HRegison。HRegion由多个HStore组成,每个HStore对应了Table中的一个Column Family的存储。
      HStore存储是HBase存储的核心,由两部分组成:MemStore和StoreFile。MemStore是Sorted Memory Buffer,用户写入的数据首先会放入MemStore中,当MemStore满了以后会缓冲(flush)成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阀值,会出发Compact操作,将多个StoreFile合并成一个StoreFile,在合并过程中会进行版本合并和数据删除。

       SoreFile在触发Compact操作后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阀值后,会触发Split操作,同时把当前Region分裂成2个Region,父Region会下线,新分裂的2个子Region会被HMaster分配到响应的HRegionServer上,使得原先一个Region的压力得以流到2个Region上。每个HRegionServer中都有一个Hlog对象,Hlog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到Hlog文件中,Hlog文件定期会滚动出新,并删除旧的文件(已持久化到StoreFile中的数据)。在HRegionServer意外终止后,HMaster会通过ZooKeeper感知到,首先处理遗留的HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应新Region的目录下,领取到这些Region的HRegionServer在加载Region的过程中,会发现有历史HLog中的数据放到MemStore中,然后缓冲(flush)到StoreFiles,完成数据恢复。