Hbase 2.2.5集群搭建

  说明

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 页面进行验证

http://192.168.242.81:16010/

 

 

http://192.168.242.82:16010/

 

 

测试是否可以进入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 完全分布式集群搭建成功!


请使用浏览器的分享功能分享到微信等