HBase基础使用03-HA集群搭建

HBase集群

集群架构图

HBase基础使用03-HA集群搭建_第1张图片

HBase架构篇

HBase架构组成

HBase采用Master/Slave架构搭建集群,它隶属于Hadoop生态系统,由一下类型节点组成: HMaster 节点、
HRegionServer 节点、 ZooKeeper 集群,而在底层,它将数据存储于HDFS中,因而涉及到HDFS的NameNode、DataNode等,总体结构如下:

HBase基础使用03-HA集群搭建_第2张图片

ZooKeeper集群用于:

ZooKeeper为HBase集群提供协调服务,它管理着HMaster和HRegionServer的状态(available/alive等),并且会在它们宕机时通知给HMaster,从而HMaster可以实现HMaster之间的failover,或对宕机的HRegionServer中的HRegion集合的修复(将它们分配给其他的HRegionServer)。ZooKeeper集群本身使用一致性协议(PAXOS协议)保证每个节点状态的一致性。

  1. 存放整个 HBase集群的元数据以及集群的状态信息。

  2. 实现HMaster主从节点的failover。

HMaster节点用于:

HMaster没有单点故障问题,可以启动多个HMaster,通过ZooKeeper的Master Election机制保证同时只有一个
HMaster出于Active状态,其他的HMaster则处于热备份状态。一般情况下会启动两个HMaster,非Active的HMaster会定期的和Active HMaster通信以获取其最新状态,从而保证它是实时更新的,因而如果启动了多个HMaster反而增加了Active HMaster的负担。要有两方面的职责:

  1. 管理HRegionServer,实现其负载均衡。

  2. 管理和分配HRegion,比如在HRegion split时分配新的HRegion;在HRegionServer退出时迁移其内的HRegion到其他HRegionServer上。

  3. 实现DDL操作(Data Definition Language,namespace和table的增删改,column familiy的增删改等)。

  4. 管理namespace和table的元数据(实际存储在HDFS上)。

  5. 权限控制(ACL)。

HRegionServer节点用于:

HRegionServer一般和DataNode在同一台机器上运行,实现数据的本地性。HRegionServer包含一个WAL即Write Ahead Log一个BlockCache和多个HRegion

  1. 存放和管理本地HRegion。

  2. 读写HDFS,管理Table中的数据。

  3. Client直接通过HRegionServer读写数据(从HMaster中获取元数据,找到RowKey所在的
    HRegion/HRegionServer后)。

Log

WAL即Write Ahead Log,在早期版本中称为HLog,它是HDFS上的一个文件,如其名字所表示的,所有写操作
都会先保证将数据写入这个Log文件后,才会真正更新MemStore,最 保证HRegionServer宕机后,我们依然可
以从该Log文件中读取数据,Replay所有的操作,而不至于数据丢失。这个Log文件会定期Roll出新的文件而删
除旧的文件(那些已持久化到HFile中的Log可以删除)。

BlockCache

BlockCache是一个读缓存,即“引用局部性”原理(也应用于CPU,分空间局部性和时间局部性,空间局部性
是指CPU在某一时刻需要某个数据,那么有很大的概率在一下时刻它需要的数据在其附近;时间局部性是指某
个数据在被访问过一次后,它有很大的概率在不久的将来会被再次的访问),将数据预读取到内存中,以提
升读的性能。

HRegion

HBase使用RowKey将表水平切割成多个HRegion,从HMaster的角度,每个HRegion都纪录了它的StartKey和
EndKey(第一个HRegion的StartKey为空,最后一个HRegion的EndKey为空),由于RowKey是排序的,因而Client可以通过HMaster快速的定位每个RowKey在哪个HRegion中。HRegion由HMaster分配到相应的HRegionServer中,然后由HRegionServer负责HRegion的启动和管理,和Client的通信,负责数据的读(使用HDFS),HRegion由多个Store(HStore)构成

  • HStore

    每个HStore对应了一个Table在这个HRegion中的一个Column Family,即每个Column Family就是一个集中的存储单元,因而最好将具有相近IO特性的Column存储在一个Column Family,以实现高效读取(数据局部性原理,可以提高缓存的命中率)。HStore是HBase中存储的核心,它实现了读写HDFS功能,一个HStore由一个MemStore 和0个或多个StoreFile组成。

    • MemStore

      是一个写缓存(In Memory Sorted Bu?er),所有数据的写在完成WAL日志写后,会 写入MemStore
      中,由MemStore根据一定的算法将数据Flush到地层HDFS文件中(HFile),通常每个HRegion中的每个
      Column Family有一个自己的MemStore。

    • HFile(StoreFile)

      用于存储HBase的数据(Cell/KeyValue)。在HFile中的数据是按RowKey、Column Family、
      Column排序,对相同的Cell(即这三个值都一样),则按timestamp倒序排列。

HBase基础使用03-HA集群搭建_第3张图片

集群搭建

注意:确保HDFS HA集群运行正常

  • 安装

    [root@nodeX ~]# tar -zxvf hbase-1.2.4-bin.tar.gz -C /usr
    
  • 修改配置文件

    [root@nodeX ~]# vi /usr/hbase-1.2.4/conf/hbase-site.xml
    
    
        hbase.rootdir
        hdfs://mycluster/hbase
    
    
        hbase.cluster.distributed
        true
    
    
        hbase.zookeeper.quorum
        node1,node2,node3
    
    
        hbase.zookeeper.property.clientPort
        2181
    
    
    [root@nodeX ~]# vi /usr/hbase-1.2.4/conf/regionservers
    
    node1
    node2
    node3
    
    [root@nodeX ~]# vi .bashrc
    
    HBASE_MANAGES_ZK=false
    HBASE_HOME=/usr/hbase-1.2.4
    HADOOP_HOME=/usr/hadoop-2.6.0
    JAVA_HOME=/usr/java/latest
    CLASSPATH=.
    PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin
    export JAVA_HOME
    export CLASSPATH
    export PATH
    export HADOOP_HOME
    export HBASE_HOME
    export HBASE_MANAGES_ZK
    
    [root@nodeX ~]# source .bashrc
    
  • 启动服务

    [root@nodeX ~]# hbase-daemon.sh start master
    [root@nodeX ~]# hbase-daemon.sh start regionserver
    

HBase基础使用03-HA集群搭建_第4张图片

你可能感兴趣的:(Hadoop,BigData)