阿里雲ECS7安裝搭建:hbase1.3.3分佈式集羣

簡介

  • Apache HBase是一種Key/Value系統,它運行在HDFS之上。和Hive不一樣,Hbase的能夠在它的數據庫上實時運行,而不是運行MapReduce任務;
  • Hbase適合用來進行大數據的實時查詢,支持增刪查改,但不支持複雜的統計功能,統計功能一般使用Hive;
  • 安裝HBase分佈式集羣所需的前提環境:
  1. Zookeeper集羣:可自行搭建一個zookeeper集羣,同時也可以使用hbase自帶的zookeeper(本文使用自帶的zookeeper);
  2. Hadoop分佈式集羣(可參考博主上一篇博客):阿里雲ECS7安裝搭建:hadoop2.7.6分佈式集羣

實踐

  • 搭建流程,在hadoop-master主服務器上安裝hbase,然後將其整套配置文件複製到各個從節點,這裏實驗環境只使用兩臺服務器搭建hbase集羣:hadoop-master和hadoop-slave,兩臺服務器都已經設置了互相免密登錄(正式生產環境建議使用至少4臺服務器),還沒配置的可以參考博主的上一篇hadoop集羣搭建博客;
  • 首先,將hbase-1.3.3-bin.tar.gz的壓縮安裝包放到hadoop-master服務器上
#新建文件夾
$ mkdir /data/hadoop/hbase

#上傳hbase1.3.3壓縮文件在此目錄下,然後進行解壓
$ tar -xzvf hbase-1.3.3-bin.tar.gz

#重命名
$ mv hbase-1.3.3 hive

  • 然後,配置Hbase環境變量,配置方法和hadoop差不多,所有的主從節點都要配置;
#切換root用戶
$ su root

#編輯配置文件
$ vim /etc/profile

#新增hbase環境變量,因爲hadoop-master服務器已經安裝了hadoop所以已經存在hadoop環境變量
export JAVA_HOME=/root/tools/jdk1.8.0_152
export HADOOP_HOME=/data/hadoop/hadoop/hadoop
export HBASE_HOME=/data/hadoop/hbase/hbase
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin

#使配置文件生效
$ source /etc/profile
  • 切換目錄:cd /data/hadoop/hbase/hbase/conf;
  • 配置目錄下hbase相關的三個文件:hbase-env.sh;hbase-site.xml;regionservers
  • 配置hbase-env.sh文件:vim hbase-env.sh
#配置jdk環境
export JAVA_HOME=/root/tools/jdk1.8.0_152

#配置hadoop環境
export HADOOP_HOME=/data/hadoop/hadoop/hadoop

#配置hbase環境
export HBASE_HOME=/data/hadoop/hbase/hbase

#指定hbase配置文件路徑
export HBASE_CLASSPATH=/data/hadoop/hbase/hbase/conf

#配置zookeeper,true則說明使用hbase內置的zookeeper,false則說明使用單獨的zookeeper集羣
export HBASE_MANAGES_ZK=true

#配置hbase日誌存放目錄
export HBASE_LOG_DIR=/data/hadoop/hbase/hbase/logs
  •  配置hbase-site.xml文件:vim hbase-site.xml
<configuration>
	<!--這是regionServer的共享目錄,用來持久化hbase的,端口默認9000-->
	<property>
		<name>hbase.rootdir</name>
		<value>hdfs://hadoop-master:9000/hbase</value>
	</property>
		
	<!--hbase的運行模式,false是單機模式,true是分佈式模式;
	若設置爲false,hbase和zookeeper會運行在同一個JVM裏面-->
	<property>
		<name>hbase.cluster.distributed</name>
		<value>true</value>
	</property>
		
	<!--hbase主節點的端口,默認60000-->
	<property>
		<name>hbase.master</name>
		<value>hadoop-master:60000</value>
	</property>
		
	<!--zookeeper集羣的地址列表,用逗號分割,默認localhost-->
	<property>
		<name>hbase.zookeeper.quorum</name>
		<value>hadoop-master,hadoop-slave</value>
	</property>
</configuration>
  •  配置regionservers文件:vim regionservers
#加入regionserver節點列表
hadoop-master
hadoop-slave
  •  將hadoop-master上的所有文件複製到從節點上的對應的目錄下:
$ scp -r /data/hadoop/hbase hadoop-slave://data/hadoop/hbase
  •  啓動、關閉和重啓hbase(都在主節點hadoop-master上運行):
#啓動
$ start-hbase.sh

#關閉
$ stop-hbase.sh

#重啓hbase(內置zookeeper)
$  stop-hbase.sh >> stop-all.sh >> start-all.sh >> start_hbase.sh
  • 查看相關啓動信息,master主節點上如果啓動成功,則會有如下進程:

 

相關進程說明:

$	21216 HQuorumPeer      		        >> zookeeper進程
$	21314 HMaster				>> hbase進程
$	20114 NameNode				>> hadoop主節點進程
$	21458 HRegionServer			>> hbase的regionserver數據分區進程
$	20419 SecondaryNameNode		        >> hadoop進程
$	20681 NodeManager			>> hadoop進程(如果不作爲數據節點則沒有該進程)
$	21689 Jps
$	20249 DataNode				>>hadoop進程(如果不作爲數據節點則沒有該進程)
$	20575 ResourceManager		        >>hadoop進程

		從節點會有如下進程:
$	21481 HQuorumPeer			>>zookeeper進程
$	21849 Jps			
$	21178 DataNode				>>hadoop的數據節點進程
$	21292 NodeManager			>>hadoop進程
$	21614 HRegionServer			>>hbase進程
  • 如果沒有出現上面的相關進程,則查詢相對應的路徑下的日誌文件,具體問題具體分析解決:
$ cd /data/hadoop/hbase/hbase/logs
$ vim hbase-hadoop-master-hadoop-master.log
$ vim vim hbase-hadoop-regionserver-hadoop-master.log 
$ vim hbase-hadoop-zookeeper-hadoop-master.log
  • hbase啓動成功,執行命令,操作hbase數據倉庫:hbase shell
#常用的hbase操作命令
#命令幫助
$ help

#對應命令幫助
$ help 'create'
$ help 'scan'
$ help 'delete'

#查看所有表
$ list

#掃描表信息
$ scan 'sixmonth'

#新增表,由於hbase屬於列式存儲所以創建方式有所不同,詳情可參照其他博客
$ create 'sixmonth','user'

#刪除表
$ disable 'sixmonth'
$ drop 'sixmonth'

#插入數據,以下插入兩行數據
$ put 'sixmonth','0001', 'user:name','admin'
$ put 'sixmonth','0001', 'user:sex','woman'
$ put 'sixmonth','0002', 'user:name','test'
$ put 'sixmonth','0002', 'user:sex','man'

注意事項

  • hbase啓動和停止順序:
內置zookeeper啓動:hadoop >> hbase
內置zookeeper停止:hbase >> hadoop
外用zookeeper啓動:hadoop >> zookeeper >> hbase
外用zookeeper停止:hbase >> zookeeper >> hadoop
  • 使用hbase的內置zookeeper作爲集羣管理者需謹慎,在斷網或服務器不穩定時,無法進行有效維護,連進程都沒辦法單獨啓動,必須重啓hbase才能重啓,所以,除了在實驗環境下使用內置的zookeeper外,一般都自行搭建獨立的zookeeper集羣;
  • 由於hbase需要外用連接,所以阿里雲服務器需要開通以下端口:2181;16010;
  • hbase環境搭建之後,如果需要使用java客戶端調用連接,可參考博主另一篇博文:

總結

  1. hbase作爲hadoop大數據生態的一員,在對數據的實時查詢方面發揮不可替代的作用,一般安裝了hadoop之後,相對應配套安裝hbase,方便數據操作;
  2. 實踐是檢驗認識真理性的唯一標準,自己動手,豐衣足食~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章