目錄
獨立模式
僞分布式
完全分布式
使用獨立安裝的zookeeper
現有三台機器,主機名分别為hmaster1,hslave1,hslave2,并且已經搭建了完全分布式hdfs叢集
獨立模式
在獨立模式下,HBase産生的資料存儲于本地檔案系統,是以并不能保證HBase的高可靠安全運作。這适用于本地開發和測試用例,其中叢集故障的成本得到很好的控制。它不适合生産部署,最終會丢失資料。
1、安裝jdk
2、上傳hbase-1.3.1-bin.tar.gz至虛拟機中家目錄下的apps目錄并解壓,并建立一個名為hbase的軟連結指向解壓後的目錄
3、在~/.bash-profile中配置環境變量
HBASE_HOME=/home/jinge/apps/hbase
PATH=$HBASE_HOME/bin:$PATH
export HBASE_HOME PATH
注意source以下該檔案
4、在hbase的環境變量檔案{$HBASE_HOME}/conf/hbase-env.sh下配置JAVA_HOME
export JAVA_HOME=/home/jinge/apps/jdk
5、編輯HBase配置檔案{$HBASE_HOME}/conf/hbase-site.xml
<configuration>
<!--指定hbase産生的資料的存儲位置 -->
<property>
<name>hbase.rootdir</name>
<value>file:///home/jinge/data/hbase</value>
</property>
<!--hbase依賴于zookeeper,指定zookeeper産生的資料位置 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/jinge/data/zookeeper</value>
</property>
<!--控制HBase是否檢查流功能,獨立模式下需要設定為false-->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
6、啟動hbase
start-hbase.sh
此時多了一個HMaster程序
通過 hbase shell 可以連接配接hbase會開啟Main程序
可以通過 stop-hbase.sh 停止hbase
僞分布式
僞分布模式意味着HBase仍然在單個主機上完全運作,但每個HBase守護程式(HMaster,HRegionServer和ZooKeeper)作為一個單獨的程序運作:在獨立模式下,所有守護程序都在一個jvm程序運作。
在獨立預設的基礎上
1、修改HBase配置檔案hbase-site.xml
<!--将本地檔案系統更改為HDFS執行個體的位址,即hbase産生的資料将位于hdfs叢集上 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hmaster1:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/jinge/data/zookeeper</value>
</property>
<!--該屬性預設為true -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!--訓示HBase以分布式模式運作 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
2、通過 start-dfs.sh 啟動叢集
3、通過 start-hbase.sh 啟動hbase,程序如下
開啟順序:zookeeper->master->regionserver
HRegionServer為HBase區域伺服器程序,HQuorumPeer為管理HBase的zk程序
此時可以通過50070端口觀察到根目錄下多了一個hbase目錄
高可用
在僞分布式中的高可用是沒有多大意義的,畢竟是在同一台機器上。
開啟備份master(backup-master)
HMaster伺服器控制HBase叢集
local-master-backup.sh start 2 3 5
數字參數表示的是該備用master的端口偏移量的參數。每個HMaster使用兩個端口(預設為16000和16010)。是以若使用偏移量2,備份HMaster将使用端口16002和16012,上面這行指令開啟了3個備份master。最多可以啟用9個備用master,即一共10個master。在僞分布式中啟動備用master沒有多大意義,畢竟是在同一台機器上。
不同備份master程序之間的PID是不同的,可以通過PID殺死備用master.PID存儲在名為/tmp/hbase-USER-X-master.pid的檔案中
cat /tmp/hbase-jinge-1-master.pid | xargs kill -9
或者記錄主master的PID後通過kill -9殺死
開啟多個區域伺服器
HRegionServer按照HMaster的訓示管理其StoreFiles中的資料。通常,一個HRegionServer在群集中的每個節點上運作。在同一系統上運作多個HRegionServers對于以僞分布式模式進行測試非常有用。
每個RegionServer需要兩個端口,預設端口為16020和16030,類似的,開啟指令中參數為端口偏移量
local-regionservers.sh start 2 3 5
不過HRegionServer的關閉可以通過指令指定偏移端口号關閉
local-regionservers.sh stop [offset]
完全分布式
在完全分布式配置中,群集包含多個節點,每個節點運作一個或多個HBase守護程式。這些包括主要和備用主執行個體,多個ZooKeeper節點和多個RegionServer節點。
可以這樣設定完全分布式的體系結構
節點名稱 | Master | zookeeper | RegionServer |
---|---|---|---|
hmaster1 | 是 | 是 | 否 |
hslave1 | 備用 | 是 | 是 |
hslave2 | 否 | 是 | 是 |
在僞分布式的基礎上,確定設定了ssh無密登入
1、配置regionserver所在的節點資訊,修改{$HBASE_HOME}/conf/regionservers,原檔案内容為localhost
hslave1
hslave2
2、配置高可用備份master
在conf下建立backup-masters檔案并添加備用master節點資訊
hslave1
3、配置zookeeper服務所在的節點,在hbase-site.xml下添加
<property>
<name>hbase.zookeeper.quorum</name>
<value>hslave1,hslave2</value>
</property>
4、確定每個節點都有相同的配置檔案,可以通過scp發送conf目錄到各個節點對應位置
5、同上開啟hdfs,開啟hbase
hmaster1中的程序:
hslave1中的程序:
hslave2中的程序:
并且開啟順序為:zookeeper->master->regionserver->back-up master
使用獨立安裝的zookeeper
自帶的zookeeper和hbase綁定在一起,這種部署模式存在一定的問題。因為當一個叢集中有很多元件都需要zookeeper的時候,自然是采用一個獨立安裝的zookeeper更為妥當。
1、修改hbase-env.sh檔案,添加
export HBASE_MANAGES_ZK=false
false表示使用獨立安裝的zookeeper
2、将zookeeper的配置檔案zoo.cfg複制到hbase的CLASSPATH(conf目錄下)
cp ~/apps/zookeeper/conf/zoo.cfg ~/apps/hbase/conf
3、注意hbase-env.sh中hbase.zookeeper.property.dataDir屬性應該與zoo.cfg中的dataDir路徑相同
然後重新開機hbase即可