hbase的集羣搭建

1.集羣搭建

1. 前置要求:

  - HBASE是用Java語言編寫的,因此在安裝HBASE時,必須安裝jdk
  - 安裝HBASE是必須有hadoop平臺
  - HBASE和jdk的版本存在兼容性,必定注意
jdk
hbase的集羣搭建
hadoop
hbase的集羣搭建緩存

2. 集羣規劃:

hbase的集羣搭建

3. 具體搭建:

① 上傳安裝包(hbase-1.2.6-bin.tar.gz)
②解壓:tar zxvf hbase-1.2.6-bin.tar.gz -C /application/
③配置環境變量:服務器

export HBASE_HOME=/application/hbase-1.2.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$SQOOP_HOME/bin:$HBASE_HOME/bin
source /etc/profie  #刷新配置文件
hbase version    #查看是否配置成功

hbase的集羣搭建
④修改hbase的配置文件
cd /application/hbase-1.2.6/conf
hbase-env.sh架構

export JAVA_HOME=/application/jdk1.8  #配置jdk
export HBASE_MANAGES_ZK=false  #配置使用本身的zookeeper
#psHBASE中必須依賴zookeeper,zookeeper做用是存儲HBASE的尋址入口HBASE自帶的是單機版的,全部須要開啓使用本身的

hbase-site.xmlapp

<configuration>
 <property>
<!-- 指定 hbase 在 HDFS 上存儲的路徑 -->
 <name>hbase.rootdir</name>
 <value>hdfs://zzy/hbase</value>
 </property>
 <property>
<!-- 指定 hbase 是分佈式的 -->
 <name>hbase.cluster.distributed</name>
 <value>true</value>
 </property>
 <property>
<!-- 指定 zk 的地址,多個用「,」分割 -->
 <name>hbase.zookeeper.quorum</name>
 <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
 </property>
</configuration>

regionservers分佈式

hadoop01
hadoop02
hadoop03

backup-masters(自行建立)ide

#配置備份主節點的節點
hadoop02

⑤要把 hadoop 的 hdfs-site.xml 和 core-site.xml 放到 hbase-1.2.6/conf 下
由於hadoop集羣是HA模式,因此須要配置:oop

cp /application/hadoop-2.7.6/etc/hadoop/core-site.xml .
cp /application/hadoop-2.7.6/etc/hadoop/hdfs-site.xml .

⑥分發安裝到各節點3d

cd /application/
scp -r hbase-1.2.6 hadoop02:$PWD
scp -r hbase-1.2.6 hadoop03:$PWD

⑦時間同步:
HBase 集羣對於時間的同步要求的比 HDFS 嚴格,因此,集羣啓動以前千萬記住要進行時間同步,要求相差不要超過 30s。在定時任務中配置定時更新時間。日誌

4. 啓動集羣:

① 先在每個節點zookeeper 集羣:zkServer.sh start
②啓動hdfs集羣:start-dfs.sh
③啓動hbase:start-hbase.sh(啓動) / stop-hbase.sh(關閉) 最好在主節點啓動,在哪一個節點啓動哪一個節點就是hmaster。
④ 檢測是否正常啓動:jps
hbase的集羣搭建
hbase的集羣搭建
hbase的集羣搭建
Web界面訪問:http://HBASE主節點:16010
注意:若是有節點相應的進程沒有啓動,那麼能夠手動啓動:code

hbase-daemon.sh start master
    hbase-daemon.sh start regionserver

2.集羣架構

hbase的集羣搭建
hbase的集羣搭建
   在HBASE集羣中:有多個主(hmaster)、多個從(RegionServer),每個從節點中存儲的是多個Region,每個Region,是HBASE一張表中分出來的(默認的Region大小爲10G)。

集羣角色介紹

1. region:

  是HBASE將一個表中的全部數據按照RowKey的不一樣範圍進行切割的邏輯單元,每個region負責必定範圍數據的讀寫訪問。Region由RegionServer負責管理。HBASE中的region的概念就和hdfs中的數據塊的概念差很少。Region 是 HBase 表切分出來的一個分片。Region的大小在1.x版本的時候是1G,在2.X版本的時候是10G。
Region的工做機制
hbase的集羣搭建
  當客戶端發送命令(delete/put)的時候,region接收到請求的時候,首先會將數據更新到內存中,同時將操做記錄到日誌(追加),不論作的是什麼操做,就會記錄到操做日誌中,爲了進行數據恢復,由於region接收請求的時候,只是將數據同步到內存,若是節點一宕機則數據丟失,因此經過日誌的方式進行數據恢復(或者說是持久化)。固然這個日誌記錄到必定大小的時候會進行切分,切分出來的叫Hfile,最後到有不少Hfile的時候,會進行日誌合併,會將這些Hfile合併一個storeFile,在進行合併的時候,會將日誌中的delete和put進行抵消刪除(即一個put操做,若是有一個對應有一個delete操做,則這兩條記錄抵消,在合併的時候不會記錄),最終合併出來的storefile中就會只有put操做而沒有delete操做。

2. hmaster:

  HBASE的主節點,負責整個集羣的狀態感知、負載分配、負責用戶表的元數據 (schema)管理(能夠配置多個用來實現 HA),只有hmaster纔有權利去修改元數據。
  HBase 的 HMaster 其實就算是宕機一段時間也能夠正常對外提供服務的,由於在HMaster在宕機的時候,集羣仍然能夠進行查詢可是不能進行讀寫。
   HMaster的負載:當第一次創建表的時候,只有一個Region,而後當region的值超過1G的時候,此時HBASE的HMaster會將region進行拆分(若是是2G,一份爲二,每個是1G),拆分後的region可能不存在一個節點上。因爲HBASE是搭建在hadoop之上的,因此region的副本會在hdfs操做。
   hmaster的節點的上下線感知:當若是有一臺Reginaservers宕機了,hmaster會自動將這個宕機節點中存儲的region經過其餘的副本在另外的節點上覆製出來(基於hdfs的副本),當宕機的節點從新恢復的時候,hmaster又會進行負載,保證每個Reginaservers中的region的個數大體相同,(只能保證集羣的region的個數進行負載,若是region的大小不一樣,不能根據數據的大小進行負載)。

3.RegionServer:

   HBase 中真正負責管理 Region 的服務器,也就是負責爲客戶端進行表數據讀 寫的服務器。每一臺 RegionServer 會管理不少的 Region,一個 RegionServer 上面管理的全部 的region不屬於同一張表。負責Region的拆分,負責和底層的HDFS的存儲交互,負責StoreFile 的合併。

4. ZooKeeper

   整個 HBase 中的主從節點協調,元數據的入口,主節點之間的選舉,集羣節點 之間的上下線感知……都是經過 ZooKeeper 來實現

5. Client

   Client 包含了訪問 HBase 的接口,另外 Client 還維護了對應的 Cache 來加速 HBase 的 訪問,好比 Cache 的.META.元數據的信息。(緩存上一個查詢的rowkey的具體位置,方便快速一次查詢)。

相關文章
相關標籤/搜索