- HBASE是用Java語言編寫的,因此在安裝HBASE時,必須安裝jdk
- 安裝HBASE是必須有hadoop平臺
- HBASE和jdk的版本存在兼容性,必定注意
jdk:
hadoop:緩存
① 上傳安裝包(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的配置文件
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.xml:app
<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。在定時任務中配置定時更新時間。日誌
① 先在每個節點zookeeper 集羣:zkServer.sh start
②啓動hdfs集羣:start-dfs.sh
③啓動hbase:start-hbase.sh(啓動) / stop-hbase.sh(關閉) 最好在主節點啓動,在哪一個節點啓動哪一個節點就是hmaster。
④ 檢測是否正常啓動:jps
Web界面訪問:http://HBASE主節點:16010
注意:若是有節點相應的進程沒有啓動,那麼能夠手動啓動:code
hbase-daemon.sh start master hbase-daemon.sh start regionserver
在HBASE集羣中:有多個主(hmaster)、多個從(RegionServer),每個從節點中存儲的是多個Region,每個Region,是HBASE一張表中分出來的(默認的Region大小爲10G)。
集羣角色介紹:
是HBASE將一個表中的全部數據按照RowKey的不一樣範圍進行切割的邏輯單元,每個region負責必定範圍數據的讀寫訪問。Region由RegionServer負責管理。HBASE中的region的概念就和hdfs中的數據塊的概念差很少。Region 是 HBase 表切分出來的一個分片。Region的大小在1.x版本的時候是1G,在2.X版本的時候是10G。
Region的工做機制:
當客戶端發送命令(delete/put)的時候,region接收到請求的時候,首先會將數據更新到內存中,同時將操做記錄到日誌(追加),不論作的是什麼操做,就會記錄到操做日誌中,爲了進行數據恢復,由於region接收請求的時候,只是將數據同步到內存,若是節點一宕機則數據丟失,因此經過日誌的方式進行數據恢復(或者說是持久化)。固然這個日誌記錄到必定大小的時候會進行切分,切分出來的叫Hfile,最後到有不少Hfile的時候,會進行日誌合併,會將這些Hfile合併一個storeFile,在進行合併的時候,會將日誌中的delete和put進行抵消刪除(即一個put操做,若是有一個對應有一個delete操做,則這兩條記錄抵消,在合併的時候不會記錄),最終合併出來的storefile中就會只有put操做而沒有delete操做。
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的大小不一樣,不能根據數據的大小進行負載)。
HBase 中真正負責管理 Region 的服務器,也就是負責爲客戶端進行表數據讀 寫的服務器。每一臺 RegionServer 會管理不少的 Region,一個 RegionServer 上面管理的全部 的region不屬於同一張表。負責Region的拆分,負責和底層的HDFS的存儲交互,負責StoreFile 的合併。
整個 HBase 中的主從節點協調,元數據的入口,主節點之間的選舉,集羣節點 之間的上下線感知……都是經過 ZooKeeper 來實現
Client 包含了訪問 HBase 的接口,另外 Client 還維護了對應的 Cache 來加速 HBase 的 訪問,好比 Cache 的.META.元數據的信息。(緩存上一個查詢的rowkey的具體位置,方便快速一次查詢)。