Hbase 2.2.5叢集搭建
說明
查閱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 頁面進行驗證
測試是否可以進入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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HBASE叢集搭建
- Hadoop叢集之 ZooKeeper和Hbase環境搭建Hadoop
- hadoop之旅9-centerOS7 : hbase叢集環境搭建HadoopROS
- 使用 Ansible 快速部署 HBase 叢集
- 搭建zookeeper叢集(偽叢集)
- 資料倉儲元件:HBase叢集環境搭建和應用案例元件
- zookeeper叢集及kafka叢集搭建Kafka
- linux下搭建ZooKeeper叢集(偽叢集)Linux
- Redis系列:搭建Redis叢集(叢集模式)Redis模式
- 搭建ELK叢集
- Ambari叢集搭建
- kafka叢集搭建Kafka
- Hadoop搭建叢集Hadoop
- zookeeper 叢集搭建
- 搭建 Redis 叢集Redis
- nacos 叢集搭建
- mysql叢集搭建MySql
- redis叢集搭建Redis
- Hadoop叢集搭建Hadoop
- Zookeeper叢集搭建
- RabbitMQ叢集搭建MQ
- 「從零單排HBase 10」HBase叢集多租戶實踐
- 【環境搭建】RocketMQ叢集搭建MQ
- 4.4 Hadoop叢集搭建Hadoop
- Redis(5.0) 叢集搭建Redis
- MySQL 5.7 叢集搭建MySql
- 搭建spark on yarn 叢集SparkYarn
- ZooKeeper 搭建 solr 叢集Solr
- 搭建Redis原生叢集Redis
- 搭建MongoDB分片叢集MongoDB
- MySQL MGR 叢集搭建MySql
- 【greenplum】greenplum叢集搭建
- Kubernetes 叢集搭建(上)
- Kubernetes 叢集搭建(下)
- MongoDB 分片叢集搭建MongoDB
- ElasticSearch 7.8.1叢集搭建Elasticsearch
- Redis--叢集搭建Redis
- Docker 搭建叢集 MongoDBDockerMongoDB