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

本文详细介绍了HBase的集群架构,包括HMaster、HRegionServer和ZooKeeper的角色和功能。ZooKeeper用于协调服务,管理HBase节点状态,并实现主从节点的failover。HMaster负责负载均衡、HRegion分配和DDL操作,而HRegionServer则管理数据读写。文章还简要提及了集群搭建的过程,包括安装和配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HBase集群

集群架构图

在这里插入图片描述

HBase架构篇

HBase架构组成

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

在这里插入图片描述

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倒序排列。

在这里插入图片描述

集群搭建

注意:确保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
    
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://mycluster/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>node1,node2,node3</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    
    [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
    

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值