一 说明
1.1 查阅Hbase,java,hadoop 版本兼容性
在安装前需要先查阅个组件兼容性,参考官方网址如下:
http://hbase.apache.org/book.html#java
我们前期安装好的hadoop 集群是3.2.1 版本,所以根据上面的兼容性表格,我们可以下载HBase-2.2.x 或者HBase-2.3.x 。
1.2 下载Hbase
进入官网下载所需版本:
https://mirrors.bfsu.edu.cn/apache/hbase/
1.3 安装规划
Zookeeper 进程:
Qp:QuorumPeerMain
Dfs 进程:
Nn:NameNode
Dn:DataNode
Jn:JournalNode
Df :DFSZK Failover Controller
Yarn 进程:
Rm: Resource Manager
Nm:NodeManager
Hbase 进程:
Hm:HMaster
Hr:HRegionServe
各进程规划如下:
程序 |
zk |
dfs |
yarn |
hbase | |||||
进程 |
qp |
nn |
dn |
jn |
df |
rm |
nm |
hm |
hr |
192.168.242.81/ hadoop1 |
* |
* |
|
* |
* |
* |
|
* |
|
192.168.242.82/ hadoop2 |
* |
* |
* |
* |
* |
* |
* |
* |
* |
192.168.242.83/ hadoop3 |
* |
|
* |
* |
|
|
* |
|
* |
前期已经安装好了hadoop 分布式集群,再此基础上,我们直接安装Hbase 。
二 Hbase 集群安装
2.1 上传安装包
上传所需安装包到相应目录
[root@hadoop1 soft]# ls -rtl
total 753224
-rw-r--r--. 1 root root 179439263 Jun 27 2019 jdk-8u211-linux-x64.rpm
-rw-r--r--. 1 root root 359196911 Jun 23 14:34 hadoop-3.2.1.tar.gz
-rw-r--r--. 1 root root 12436328 Jun 23 15:34 apache-zookeeper-3.6.1-bin.tar.gz
-rw-r--r--. 1 root root 220221311 Jul 2 17:35 hbase-2.2.5-bin.tar.gz
2.2 解压hbase 到相应目录
[root@hadoop1 soft]# tar -zxvf hbase-2.2.5-bin.tar.gz -C /hadoop/hbase
2.3 配置环境变量
vi /etc/profile
添加:
#set Hbase environment
export HBASE_HOME=/hadoop/hbase/hbase-2.2.5
export PATH=$HBASE_HOME/bin:$PATH
2.4 修改配置文件
hbase 的配置文件在hbase 目录下的conf 中,这里只修改其中一台服务器的,其他的也一样,只要拷贝过去就行。
修改hbase-env.sh 文件,增加环境变量
[root@hadoop1 ~]# cd /hadoop/hbase/hbase-2.2.5/conf
[root@hadoop1 conf]# vi hbase-env.sh
# 加入JAVA_HOME
export JAVA_HOME=/hadoop/jdk1.8/jdk1.8.0_211-amd64
# 指定不使用自带的zookeeper
export HBASE_MANAGES_ZK=false
修改hbase-site.xml 配置文件
[root@hadoop1 conf]# vi hbase-site.xml
hbase.rootdir hdfs://mycluster/hbase hbase.cluster.distributed true hbase.unsafe.stream.capability.enforce false hbase.tmp.dir /hadoop/hbase/hbase-2.2.5/tmp hbase.zookeeper.quorum hadoop1:2181,hadoop2:2181,hadoop3:2181
修改regionservers 配置文件,加入RegionServer 节点列表
[root@hadoop1 conf]# vi regionservers
# 默认有一行localhost ,删除,并添加RegionServer 节点列表
hadoop2
hadoop3
2.5 配置Hmaster 高可用
为了保证HBase 集群的高可靠性,HBase 支持多Backup Master 设置。当Active Master 挂掉后,Backup Master 可以自动接管整个HBase 的集群。
该配置极其简单:在 $HBASE_HOME/conf/ 目录下新增文件配置backup-masters ,在其内添加要用做Backup Master 的节点hostname 。
[root@hadoop1 conf]# touch backup-masters
[root@hadoop1 conf]# vi backup-masters
# 添加备用hbase-master
hadoop2
没设置backup-masters 之前启动hbase , 只有一台有启动了HMaster 进程
完成之后,重新启动整个集群,我们会发现,在backup-masters 清单上的主机,都启动了HMaster 进程。
把hadoop 的配置文件core-site.xml 和hdfs-site.xml 复制到hbase 的配置文件目录下
也可以用软链接(快捷方式),目的是为了防止Hadoop 目录下的配置文件更改了之后还要去hbase 目录下更新。
[root@hadoop1 conf]# cp /hadoop/hadoop-3.2.1/etc/hadoop/core-site.xml /hadoop/hbase/hbase-2.2.5/conf/
[root@hadoop1 conf]# cp /hadoop/hadoop-3.2.1/etc/hadoop/hdfs-site.xml /hadoop/hbase/hbase-2.2.5/conf/
或者
ln -s /hadoop/hadoop-3.2.1/etc/hadoop/core-site.xml /hadoop/hbase/hbase-2.2.5/conf/core-site.xml
ln -s /hadoop/hadoop-3.2.1/etc/hadoop/hdfs-site.xml /hadoop/hbase/hbase-2.2.5/conf/hdfs-site.xml
2.6 把hbase 安装目录分发给其他节点
[root@hadoop1 hadoop]# scp -r hbase hadoop2:/hadoop/
[root@hadoop1 hadoop]# scp -r hbase hadoop3:/hadoop/
2.7 启动hbase 集群
[root@hadoop1 ~]# start-hbase.sh
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/hadoop/hadoop-3.2.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/hadoop/hbase/hbase-2.2.5/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
running master, logging to /hadoop/hbase/hbase-2.2.5/logs/hbase-root-master-hadoop1.out
hadoop3: running regionserver, logging to /hadoop/hbase/hbase-2.2.5/bin/../logs/hbase-root-regionserver-hadoop3.out
hadoop2: running regionserver, logging to /hadoop/hbase/hbase-2.2.5/bin/../logs/hbase-root-regionserver-hadoop2.out
hadoop2: running master, logging to /hadoop/hbase/hbase-2.2.5/bin/../logs/hbase-root-master-hadoop2.out
发现 hbase 没有启动,可以看到 hadoop 下面的 jar 和 hbase 下面得 jar 包冲突了
将 hbase 下的 jar 包移除:
[root@hadoop1 hbase-2.2.5]# cd lib/client-facing-thirdparty
[root@hadoop1 client-facing-thirdparty]# mv slf4j-log4j12-1.7.25.jar slf4j-log4j12-1.7.25.jar_bak
[root@hadoop1 client-facing-thirdparty]# ls -rtl
total 2108
-rw-r--r--. 1 root root 12244 Jan 22 23:10 slf4j-log4j12-1.7.25.jar_bak
-rw-r--r--. 1 root root 41203 Jan 22 23:10 slf4j-api-1.7.25.jar
-rw-r--r--. 1 root root 489884 Jan 22 23:10 log4j-1.2.17.jar
-rw-r--r--. 1 root root 1506370 Jan 22 23:10 htrace-core4-4.2.0-incubating.jar
-rw-r--r--. 1 root root 15322 Jan 22 23:10 findbugs-annotations-1.3.9-1.jar
-rw-r--r--. 1 root root 61829 Jan 22 23:10 commons-logging-1.2.jar
-rw-r--r--. 1 root root 20437 Jan 22 23:10 audience-annotations-0.5.0.jar
重启hbase
[root@hadoop1 client-facing-thirdparty]# start-hbase.sh
running master, logging to /hadoop/hbase/hbase-2.2.5/logs/hbase-root-master-hadoop1.out
hadoop3: running regionserver, logging to /hadoop/hbase/hbase-2.2.5/bin/../logs/hbase-root-regionserver-hadoop3.out
hadoop2: running regionserver, logging to /hadoop/hbase/hbase-2.2.5/bin/../logs/hbase-root-regionserver-hadoop2.out
hadoop2: running master, logging to /hadoop/hbase/hbase-2.2.5/bin/../logs/hbase-root-master-hadoop2.out
进程起来后没多久,又自动挂掉
日志报错
2020-07-03 14:38:08,592 ERROR [main] master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster.
at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:2934)
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:236)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:140)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:149)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:2945)
Caused by: org.apache.hadoop.hbase.ZooKeeperConnectionException: master:160000x0, quorum=hadoop1:2181, hadoop2:2181, hadoop3:2181, baseZNode=/hbase Unexpected KeeperException creating base node
2020-07-03 15:32:29,267 WARN [main] zookeeper.RecoverableZooKeeper: Unable to create ZooKeeper Connection
java.net.UnknownHostException: hadoop2
发现zookeeper 配置连接不上,说无法找到hadoop2 ,但是确认zookeeper 集群是正常的。
仔细排查后,是在配置hbase-site.xml 文件时有格式错误,粘贴进去可能有一些无效的字符。修改后hbase 集群正常。
( 正确的 hbase-site.xml 配置已经在上面进行修改 )
2.8 检查进程
Hadoop1
[root@hadoop1 conf]# jps
23968 NameNode
23666 QuorumPeerMain
24472 DFSZKFailoverController
24920 ResourceManager
24265 JournalNode
26301 HMaster
25327 JobHistoryServer
26735 Jps
Hadoop2
[root@hadoop2 conf]# jps
12210 ResourceManager
11731 NameNode
13155 HMaster
13077 HRegionServer
12038 DFSZKFailoverController
11559 QuorumPeerMain
11931 JournalNode
11820 DataNode
13565 Jps
12287 NodeManager
Hadoop3
[root@hadoop3 version-2]# jps
5088 JournalNode
5953 Jps
4979 DataNode
5763 HRegionServer
4813 QuorumPeerMain
5245 NodeManager
如果有节点相应的进程没有启动,那么可以手动启动
hbase-daemon.sh start master
hbase-daemon.sh start regionserver
访问WEB 页面进行验证
测试是否可以进入hbase 命令行
[root@hadoop1 conf]# hbase shell
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.2.5, rf76a601273e834267b55c0cda12474590283fd4c, 2020 年 05 月 21 日 星期四 18:34:40 CST
Took 0.0044 seconds
hbase(main):001:0>
至此,hbase 完全分布式集群搭建成功!