封面画师:画师JW     封面ID:79206020

1. 前提

下载地址:HBase下载地址

安装参考地址:厦门大学数据库实验室

本次安装建立在虚拟机(或服务器)已成功安装 Hadoop 和 JDK8 的前提下!

建议配置 SSH 免密码登录。

版本选择:

Hadoop:3.2.1

JDK:1.8.0_231

HBase:2.2.2

Hadoop 和 HBase 有强烈的版本依赖性,请勿随意选择版本!

版本依赖查看方式:

官网 使用浏览器搜索(Ctrl + F)关键词 Hadoop version support matrix,查看二维版本支持表。


我的选择:

我在学习 Hadoop 选取了当时最新的 Hadoop 版本(3.2.1),但是在本次学习 HBase 时,发现官网并没有匹配我的 Hadoop 版本的 HBase 版本。但我并不想丢弃我已配置好的 Hadoop 版本,因此在搜索引擎搜索关键词,试图找寻匹配的 HBase 版本:

Hbase版本选择

然后发现有这样的结果,因此就选择了 HBase 2.2.2 的版本。

但是安装时也是抱着试试的态度,如果能成功就太好了,经过几小时的折腾,最终还是成功了。

安装前须知:

Linux 环境下,我当前的用户名:mofan,我的主机名:db06。

配置环境时,你需要将这两处改成你自己的名称!

2. HBase 安装

  1. 进入管理员权限:
1
[mofan@db06 ~]$ su
  1. 切换至根目录,并创建文件夹 HBase 用于放置 HBase 安装包,同时修改 HBase 文件夹权限使我们能够成功复制 Windows 下的安装包到这个目录下:
1
2
3
4
[root@db06 ~]# cd /
[root@db06 /]# mkdir HBase
[root@db06 /]# cd HBase
[root@db06 HBase]# chmod 777 HBase
  1. 将 Windows 下的安装包复制到 Linux 下的 HBase 目录下(复制时不建议使用直接拖拽的方式);
  2. 解压安装包 hbase-2.2.2-bin.tar.gz 至路径 /usr/local,并查看是否解压成功:
1
2
3
[root@db06 HBase]# tar -zxf hbase-2.2.2-bin.tar.gz -C /usr/local
[root@db06 HBase]# cd /usr/local
[root@db06 local]# ls -l

解压HBase

  1. 将解压文件名 hbase-2.2.2 修改为 hbase(方便以后操作),并查看是否修改成功:
1
2
[root@db06 local]# mv ./hbase-2.2.2 ./hbase
[root@db06 local]# ls -l
  1. 把 hbase 目录权限赋予给 mofan(这是我的用户名,你可以赋予你自己的用户)用户:
1
[root@db06 local]# chown -R mofan ./hbase
  1. 切换目录至/etc,编辑 profile 文件:
1
2
[root@db06 local]# cd /etc
[root@db06 local]# vi profile
  1. 在你以前配置 Java 和 Hadoop 环境变量的位置配置 HBase 的环境变量

按下键盘 i 键进入编辑模式,配置完环境变量后,按下 esc 键退出编辑模式,之后输入命令 :wq 退出编辑。

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

注意:「=」 前后不能有空格,否则会报错!

  1. 退出编辑后,我们需要 让我们的配置生效:
1
[root@db06 etc]# source profile

注意:如果不进行该操作环境变量可能会不生效,导致在运行 HBase 输入 start-hbase 命令时显示未找到命令:

HBase未找到命令

  1. 修改 hbase 的配置文件${HBASE_HOME}/conf/hbase-env.sh:
1
2
export JAVA_HOME=/home/mofan/jdk1.8.0_231
export HBASE_MANAGES_ZK=true

这里的 JAVA_HOME 就是你 JDK 的安装目录,而 HBASE_MANAGES_ZK 我们需要将其配置为 true。为什么?

注意:HBASE_MANAGES_ZK 为 true,表示 HBase 自己管理 zookeeper,为 false 表示需要单独的 zookepper。但我们并没有安装单独的 zookeeper,如果该配置项选择了 false,以后启动 HBase 后查看进程(命令 jps)时,就会导致 HMaster 进程会出现又消失的问题。

  1. 编辑.xml 配置文件 ${HBASE_HOME}/conf/hbase-site.xml:(此处并没有配置完,这样的配置会导致一些问题,问题与解决方式在下文「问题」处给出并解决)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://db06:9000/hbase</value>    
                <description>数据存放的位置。</description>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>db06</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
                <description>指定副本个数为1,因为伪分布式。</description>
        </property>
</configuration>

注意:hbase.rootdir 的主机和端口号与 hadoop 的配置文件 core-site.xml 的 fs.default.name 的主机和端口号一致。hbase.zookeeper.quorum 的值为主机号。

hadoop 的配置文件 core-site.xml 位置:${HADOOP_HOME}/etc/hadoop/core-site.xml

3. 问题

  1. 启动 HBase 后,执行 jps 命令,出现 HMaster 进程,但是过几秒又消失,查看日志

HMaster进程消失

解决:

在配置文件 hbase-site.xml 中添加:

1
2
3
4
<property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
</property>

  • 启动 Hbase,并输入 jps 命令,进程 HMaster、HRegionServer、HQuorumPeer 都有,但是无法访问 60010 端口

解决:

原因是 HBase 1.0 之后的版本都需要在 hbase-site.xml 中配置端口,配置如下:

1
2
3
4
<property>
    <name>hbase.master.info.port</name>
    <value>60010</value>
</property>

4. 启动测试

  1. 先启动 Hadoop,输入以下命令:
1
start-all.sh
  1. 再启动 HBase,(进入 HBase 下的 bin 目录)输入以下命令:
1
start-hbase.sh
  1. 检查进程是否已运行,输入命令:
1
jps
  1. 进程情况

HBase进程情况

  1. 在浏览器访问 60010 端口进行查看

访问60010

此处的地址是输入自己配置的 IP 地址,我在此处配置了静态 IP(192.168.32.123),方便在 Windows 环境下访问,因此是这样的 IP 地址,如果你没有配置静态 IP,那么使用 localhost:60010 就可以访问。

  1. 关闭环境:先关闭 HBase 再关闭 Hadoop。