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

前提

下载地址: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。

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

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

问题

  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>

启动测试

  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。