1. 程式人生 > >hbase簡介及安裝

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/