天天看點

HBase:獨立模式、僞分布式和完全分布式的安裝部署

目錄

獨立模式

僞分布式

完全分布式

使用獨立安裝的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程序

HBase:獨立模式、僞分布式和完全分布式的安裝部署

可以通過 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,程序如下

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中的程序:

HBase:獨立模式、僞分布式和完全分布式的安裝部署

hslave1中的程序:

HBase:獨立模式、僞分布式和完全分布式的安裝部署

hslave2中的程序:

HBase:獨立模式、僞分布式和完全分布式的安裝部署

并且開啟順序為: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即可

繼續閱讀