下载Hbase

这里下载2.4.11版本的Hbase。下载网址:https://archive.apache.org/dist/hbase/2.4.11/

下载列表

下载 hbase-2.4.11-bin.tar.gz。点击即可下载。

弄到/usr/local目录下,可以借鉴zookeeper和hadoop的方法。接下来都是在/usr/local目录下操作。

然后解压:

.tar后缀:

1
sudo tar -xf hbase-2.4.11-bin.tar

.tar.gz后缀:

1
sudo tar -zxf hbase-2.4.11-bin.tar.gz

然后改名:

1
sudo mv hbase-2.4.11 hbase

更改拥有者和所属用户组:

1
2
sudo chown hadoop103 hbase
sudo chgrp hadoop103 hbase

删除压缩包(看你想不想删除,都行):

1
sudo rm hbase-2.4.11-bin.tar

配置Hbase

配置环境变量

1
vim ~/.bashrc

编写内容:

1
2
3
#HBASE_HOME 
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HBASE_HOME/bin

刷新:

1
source ~/.bashrc

测试是否有效:

1
cd $HBASE_HOME

如果从原本的/usr/local目录跳转到你/usr/local/hbase目录就正确了。

其他两台节点同样配置。

配置文件

配置文件目录:$HBASE/conf

主要配置hbase-env.shhbase-site.xmlregionservers文件。

  • hbase-env.sh

    1
    vim $HBASE_HOME/conf/hbase-env.sh
    • 找到 # export JAVA_HOME=/usr/java/jdk1.8.0/

      放开注释,并修改为export JAVA_HOME=$JAVA_HOME

    • 下面三行 # export HBASE_CLASSPATH=

      放开注释,并修改为:export HBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop

      如图:

      修改hbase-nev.sh

    • 找到# export HBASE_MANAGES_ZK=true 这个在倒数几行。

      放开注释,并改为false。如果想要用HBase自带的Zookeeper就不要修改这一步。

      如图:

      修改hbase-env.sh

      其实这里用true的话就可以用它内置的zookeeper了,但是我们部署好了zookeeper了,就不需要了,而且直接部署的zookeeper的稳定性更好。

      这里应该需要强制保存退出,输入:wq!

  • hbase-site.xml(如果Hadoop集群是高可用的,请仔细看这里的注释

    1
    vim $HBASE_HOME/conf/hbase-site.xml

    修改配置最终为(需要删除两个原本的property,原本有三个,只保留第一个并且value改为true):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?xml version="1.0"?> 
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

    <configuration>
    <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    </property>
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop103,hadoop104,hadoop105</value>
    <description>The directory sharedvi by RegionServers.</description>
    </property>
    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://hadoop103:8020/hbase</value> <!-- 如果Hadoop集群是HA高可用集群,这里写hdfs://集群名称/hbase,例如我的:hdfs://myhacluster/hbase -->
    <description>The directory shared by RegionServers.</description>
    </property>
    <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
    </property>
    <property>
    <name>dfs.replication</name>
    <value>3</value>
    </property>
    <property>
    <name>hbase.wal.provider</name>
    <value>filesystem</value>
    </property>
    </configuration>
  • regionservers

    这个和hadoop的workers类似

    1
    vim $HBASE_HOME/conf/regionservers

    编写:

    1
    2
    3
    hadoop103
    hadoop104
    hadoop105
  • 解决HBase和Hadoop的log4j兼容性问题,修改HBase的jar包,使用Hadoop的jar包:

    1
    sudo mv $HBASE_HOME/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar $HBASE_HOME/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar.bak
  • HBase的高可用(在hadoop103上操作)

    1
    2
    touch $HBASE_HOME/conf/backup-masters
    echo hadoop104 > $HBASE_HOME/conf/backup-masters

分发hbase(注意,在分发前一定要在其他两台机器对应位置创建好目录,并且把权限改为对应用户):

1
xsync $HBASE_HOME

启动HBase服务

要提前确保HDFS和zookeeper是已经启动状态。即启动hadoop集群和zookeeper集群。

Zookeeper正常部署

如果使用HBase自带的Zookeeper就跳过这一步。

想要部署Hbase集群需要先部署运行Zookeeper集群,如果您还没有Zookeeper集群,请参看:搭建Zookeeper集群

启动Zookeeper集群,你如果是跟着我的步骤搭建的Zookeeper集群,那么你可以直接用启停脚本启动。

启动:

1
zk start

查看是否启动成功,查看状态。

1
zk status

如果你没有编写启停脚本,就每台节点都去执行一次启动命令也行。

Hadoop正常部署

Hbase也是基于Hadoop集群的,如果您没有搭建,请参看:hadoop集群搭建指南

启动hadoop集群,如果你是跟着我的指南搭建的hadoop集群,那么你可以直接使用启停脚本:

1
myhadoop start

如果你没有脚本,那么你就单独启动每台节点。


上两步效果:

启动效果

启动HBase

  1. 单点启动

    1
    2
    $HBASE_HOME/bin/hbase-daemon.sh start master
    $HBASE_HOME/bin/hbase-daemon.sh start regionserver
  2. 群起

    1
    $HBASE_HOME/bin/start-hbase.sh

    群起

  3. 停止

    1
    $HBASE_HOME/bin/stop-hbase.sh

    有时候停会一直出现省略号,等很久都停不掉。分别输入(每台节点都要去关,不能自动全关了):

    1
    2
    3
    hbase-daemon.sh stop master

    hbase-daemon.sh stop regionserver

    还不行就直接kiil -9 进程号。

    进程号用jps查看,前面的数字就是进程号。

查看Hbase页面

HBase的管理页面,打开链接:http://hadoop103:16010

单点启动效果如图(只启动了hadoop103):

截屏2023-02-25 22.17.34

集群启动效果如图:

截屏2023-02-25 22.23.02

常见问题

总的来说,这样配置的HBase都不太稳定,建议配置高可用的Hadoop集群(可参看:搭建Hadoop HA(高可用)集群)。最好也配置上自己的Zookeeper,HBase自带的Zookeeper也不稳定。

出问题的话,hbase安装时需要考虑的东西是不多的,相比Hadoop简单很多(因为基本环境以及准备好了)。主要配置文件也就是hbase-env.shhbase-site.xml两个文件。主要问题应该是在版本上。我目前的版本:

  • hadoop:3.3.1
  • zookeeper:3.7.1
  • hbase:2.4.11

版本不一定稳定,后续有问题会更新说明。

如果和我相同版本,出了问题,大概率就是你的配置文件和我的不同。


可以正常jpsall,但是无法访问web端。

原因:

1
2
3
4
5
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop103:8020/hbase</value>
<description>The directory shared by RegionServers.</description>
</property>

这里的端口和hadoop的core-site.xml的内容不对应。

如果是jpsall之后成功启动了,但是过个十多二十秒,就自动关闭了,那就是没有配置集群时间同步(Ubuntu22.04自带有集群时间同步,大概率排出这个问题)。要配置集群时间同步请参看文章:集群时间同步