HBase集群安装

1.前提准备

2.集群规划

节点 角色
node1 HMaster, HRegionServer
node2 HMaster, HRegionServer
node3 HMaster, HRegionServer

下列配置以三台服务器组成hbase高可用集群为例, 实际生产环境中管理节点和工作节点应尽量分离, master在小型集群(几十台以内)中有3台即可, 大型集群配置5台管理节点

3.安装配置

  1. 解压文件夹 tar zxvf hbase-2.3.7-bin.tar.gz -C /opt/

  2. 配置 cd /opt/hbase-2.3.7/conf

    • vim hbase-env.sh

      # 堆外内存大小,用来缓存数据
      HBASE_OFFHEAPSIZE=32G
      # 确定本机的jdk实际路径
      export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
      # 不使用hbase内置的zookeeper
      export HBASE_MANAGES_ZK=false
      # hadoop配置文件路径
      export HBASE_CLASSPATH=/opt/hadoop-3.1.3/etc/hadoop/
      # hmaster堆内存大小
      export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xmx8g"
      # regionserver堆内存大小, MaxDirectMemorySize要大于等于HBASE_OFFHEAPSIZE, 老年代占比0.7开始回收
      export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:CMSInitiatingOccupancyFraction=70 -Xms30g -Xmx30g -XX:MaxDirectMemorySize=32g"
      

      hbase内存使用要根据实际硬件衡量修改, 上述配置需要 8 + 32 + 30 = 70g内存, 保证实际可用物理内存不能低于该值, 若硬件资源不足, 可以考虑先调小堆外用来缓存实际数据的内存(HBASE_OFFHEAPSIZE和-XX:MaxDirectMemorySize), 再调小堆内存

    • vim hbase-site.xml

      <configuration>
      <!-- 开启分布式 -->
      <property>
          <name>hbase.cluster.distributed</name>
          <value>true</value>
      </property>
      <!-- zookeeper集群 -->
      <property>
          <name>hbase.zookeeper.quorum</name>
          <value>node1:2181,node2:2181,node3:2181</value>
      </property>
      <property>
          <name>zookeeper.session.timeout</name>
          <value>180000</value>
          <description>hbase和zookeeper连接的超时时间, 需要zookeeper配置zoo.cnf中的maxSessionTimeout大于等于该值时才会生效, 否则仍然以zookeeper中的事件为准</description>
      </property>
      <property>
          <name>hbase.rootdir</name>
          <value>hdfs://hdfscluster/hbase</value>
      </property>
      <property>
          <name>hbase.hregion.max.filesize</name>
          <value>10737418240</value>
          <description>单个region的大小, 超过该值将split成2个</description>
      </property>
      <property>
          <name>hbase.regionserver.handler.count</name>
          <value>100</value>
         <description>regionserver监听rpc的线程数</description>
      </property>
      <property>
          <name>hbase.bucketcache.ioengine</name>
          <value>offheap</value>
          <description>BucketCache使用堆外内存,缓存data block</description>
      </property>
      <!-- 此值不能大于hbase-env.sh中的HBASE_OFFHEAPSIZE, 单位mb-->
      <property>
          <name>hbase.bucketcache.size</name>
          <value>30720</value>
          <description>bucketcache使用堆外内存大小</description>
      </property>
      <property>
          <name>hbase.regionserver.global.memstore.size</name>
          <value>0.40</value>
      </property>
      <property>
          <name>hfile.block.cache.size</name>
          <value>0.40</value>
      </property>
      <property>
          <name>hbase.hregion.majorcompaction</name>
          <value>604800000</value>
      </property>
      <property>
          <name>hbase.hstore.blockingStoreFiles</name>
          <value>128</value>
      </property>
      <property>
          <name>hbase.hregion.memstore.block.multiplier</name>
          <value>16</value>
      </property>
      <property>
          <name>hbase.hstore.blockingwaittime</name>
          <value>30000</value>
      </property>
      <property>
          <name>hbase.hstore.flusher.count</name>
          <value>4</value>
      </property>
      <property>
          <name>hbase.regionserver.max.logs</name>
          <value>160</value>
      </property>
      <property>
          <name>hbase.wal.provider</name>
          <value>multiwal</value>
          <description>一个regionserver一个wal,更改为一个region一个wal</description>
      </property>
      </configuration>
      
    • vim backup-masters

      此文件conf目录中没有, 需要新建

      node1
      node2
      node3
      
    • vim regionservers

      node1
      node2
      node3
      
  3. 分发到其他节点

    scp -r hbase-2.3.7 node2:$PWD

    scp -r hbase-2.3.7 node2:$PWD

  4. 添加hadoop库软连接

    由于hbase安装包中并不含有LZ4压缩所需的依赖库, 所以将hadoop中内置的依赖软连接到hbase, 这样hbase创建表时即可使用LZ4压缩

    cd /opt/hbase-2.3.7/lib && mkdir native && ln -s ${HADOOP_HOME}/lib/native native/Linux-amd64-64

4.启动服务

启动集群

/opt/hbase-2.3.7/bin/start-hbase.sh

查看状态

  1. jps查看进程

    image-20220623143730636

  2. web页面查看 http://node1:16010

image-20220623143738510

进入控制台: /opt/hbase-2.3.7/bin/hbase shell

停止集群: stop-hbase.sh