Hbase 2.2.5叢集搭建

夢夕林1992發表於2023-01-28

說明

查閱Hbase,java,hadoop 版本相容性

在安裝前需要先查閱個元件相容性,參考官方網址如下:

 

我們前期安裝好的hadoop 叢集是3.2.1 版本,所以根據上面的相容性表格,我們可以下載HBase-2.2.x 或者HBase-2.3.x

 

下載Hbase  

進入官網下載所需版本:

 

安裝規劃

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

  

叢集安裝  

上傳安裝包  

上傳所需安裝包到相應目錄

[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

 

解壓hbase 到相應目錄

[root@hadoop1 soft]# tar -zxvf hbase-2.2.5-bin.tar.gz -C /hadoop/hbase

 

配置環境變數  

vi /etc/profile

新增:

#set Hbase environment

export HBASE_HOME=/hadoop/hbase/hbase-2.2.5

export PATH=$HBASE_HOME/bin:$PATH

 

修改配置檔案

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

  

  <!--
    可以不配置,如果要配置,需要和zookeeper配置檔案zoo.cfg中的dataDir指定的路徑相同
    zoo.cfg中dataDir=/var/zookeeper
    那麼:
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/var/zookeeper</value>
    </property>
    -->
    
    <!--指定hbase的資料在hdfs上存放的位置-->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://mycluster/hbase</value>
    </property>
    <!--指定hbase叢集為分散式叢集-->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <!--  完全分散式式必須為false  -->
    <property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property> 
    <!--  指定快取檔案儲存的路徑 -->
    <property>
        <name>hbase.tmp.dir</name>
        <value>/hadoop/hbase/hbase-2.2.5/tmp</value>
    </property>
    <!--指定zookeeper叢集-->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
    </property>


 

修改regionservers 配置檔案,加入RegionServer 節點列表

[root@hadoop1 conf]# vi regionservers

預設有一行localhost ,刪除,並新增RegionServer 節點列表

hadoop2

hadoop3

 

配置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

 

hbase 安裝目錄分發給其他節點

[root@hadoop1 hadoop]# scp -r hbase hadoop2:/hadoop/

[root@hadoop1 hadoop]# scp -r hbase hadoop3:/hadoop/

 

啟動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 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 配置已經在上面進行修改

 

檢查程式  

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:

Version 2.2.5, rf76a601273e834267b55c0cda12474590283fd4c, 2020  05  21   星期四 18:34:40 CST

Took 0.0044 seconds                                                                                                                                                                

hbase(main):001:0>

 

至此,hbase 完全分散式叢集搭建成功!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29956245/viewspace-2933088/,如需轉載,請註明出處,否則將追究法律責任。

相關文章