hbase簡介及安裝
什麼是HBASE
HBASE是一個高可靠性、高效能、面向列、可伸縮的分散式儲存系統,利用HBASE技術可在廉價PC Server上搭建起大規模結構化儲存叢集。HBASE的目標是儲存並處理大型的資料,更具體來說是僅需使用普通的硬體配置,就能夠處理由成千上萬的行和列所組成的大型資料。
HBASE利用Hadoop HDFS作為其檔案儲存系統;
HBASE同樣利用Hadoop MapReduce來處理HBASE中的海量資料;
HBASE利用Zookeeper作為協同服務。
HBASE與傳統資料庫的對比
1、傳統資料庫遇到的問題:
1)資料量很大的時候無法儲存
2)沒有很好的備份機制
3)資料達到一定數量開始緩慢,很大的基本無法支撐
2、HBASE優勢:
1)線性擴充套件,隨著資料量增多可以通過節點擴充套件進行支撐
2)資料儲存在hdfs上,備份機制健全
3)通過zookeeper協調查詢資料,訪問速度塊
HBASE叢集中的角色
1、一個或者多個主節點,Hmaster
- 管理使用者對Table的增刪改查操作
- 管理HRegionServer的負載均衡,調整Region分佈
- 在Region Split後,負責新Region的分配
- 管理HregionServer中的表分配在HRegionServer停機後,負責失效HRegionServer上的Region遷移
2、多個從節點,HregionServer
hbase依賴zookeeper
1、儲存Hmaster的地址和backup-master地址
2、儲存表-ROOT-的地址
hbase預設的根表,檢索表。
3、HRegionServer列表
表的增刪改查資料。
和hdfs互動,存取資料。
HBASE資料模型
1、Row Key
與nosql資料庫們一樣,row key是用來檢索記錄的主鍵。訪問HBASE table中的行,只有三種方式:
1.通過單個row key訪問
2.通過row key的range(正則)
3.全表掃描
Row key行鍵 (Row key)可以是任意字串(最大長度 是 64KB,實際應用中長度一般為 10-100bytes),在HBASE內部,row key儲存為位元組陣列。儲存時,資料按照Row key的字典序(byte order)排序儲存。設計key時,要充分排序儲存這個特性,將經常一起讀取的行儲存放到一起。(位置相關性)
2、Columns Family
列簇 :HBASE表中的每個列,都歸屬於某個列族。列族是表的schema的一部 分(而列不是),必須在使用表之前定義。列名都以列族作為字首。
例如 courses:history,courses:math都屬於courses 這個列族。
3、Cell
由{row key, columnFamily, version} 唯一確定的單元。
cell中 的資料是沒有型別的,全部是位元組碼形式存貯。
關鍵字:無型別、位元組碼
4、Time Stamp
HBASE 中通過rowkey和columns確定的為一個存貯單元稱為cell。每個 cell都儲存 著同一份資料的多個版本。版本通過時間戳來索引。時間戳的型別是 64位整型。時間戳可以由HBASE(在資料寫入時自動 )賦值,此時時間戳是精確到毫秒 的當前系統時間。時間戳也可以由客戶顯式賦值。如果應用程式要避免資料版 本衝突,就必須自己生成具有唯一性的時間戳。每個 cell中,不同版本的資料按照時間倒序排序,即最新的資料排在最前面。
為了避免資料存在過多版本造成的的管理 (包括存貯和索引)負擔,HBASE提供 了兩種資料版本回收方式。一是儲存資料的最後n個版本,二是儲存最近一段 時間內的版本(比如最近七天)。使用者可以針對每個列族進行設定。
HBASE安裝
1、上傳安裝包
2、解壓
[[email protected] ~]# tar -zxvf hbase-1.2.6.tar.gz -C /usr/local
3、配置
3.1、hbase-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_181
3.2、hbase-site.xml
<configuration>
<!-- 指定hbase在HDFS上儲存的路徑 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hdp1:9000/hbase</value>
</property>
<!-- 指定hbase是分散式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多個用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hdp1:2181,hdp2:2181,hdp3:2181</value>
</property>
</configuration>
3.3、regionservers
hdp1
hdp2
hdp3
3.4、設定HBase環境變數
[[email protected] conf]# vi /etc/profile
export HBASE_HOME=/usr/local/hbase-1.2.6
export PATH=$PATH:$HBASE_HOME/bin
[[email protected] conf]# source /etc/profile
4、分發到其他節點
[[email protected] local]# scp -r hbase-1.2.6 hdp2:/usr/local
[[email protected] local]# scp -r hbase-1.2.6 hdp3:/usr/local
5、啟動
注意:啟動hbase之前,必須保證hadoop叢集和zookeeper叢集是可用的。
[[email protected] local]# cd hbase-1.2.6/bin
[[email protected] bin]# ./start-hbase.sh
6、監控
1、進入命令列
hbase shell
2、頁面監控
http://hdp1:16010/