發布時間: 2018-02-01 14:38:35
?HBase訪問接口:
1. Native Java API,最常規和高效的訪問方式,適合Hadoop MapReduce Job并行批處理HBase表數據 2. HBase Shell,HBase的命令行工具,最簡單的接口,適合HBase管理使用 3. Thrift Gateway,利用Thrift序列化技術,支持C++,PHP,Python等多種語言,適合其他異構系統在線訪問HBase表數據 4. REST Gateway,支持REST 風格的Http API訪問HBase, 解除了語言限制 5. Pig,可以使用Pig Latin流式編程語言來操作HBase中的數據,和Hive類似,本質最終也是編譯成MapReduce Job來處理HBase表數據,適合做數據統計 6. Hive,當前Hive的Release版本尚沒有加入對HBase的支持,但在下一個版本Hive 0.7.0中將會支持HBase,可以使用類似SQL語言來訪問HBase
hbase數據模型:
?
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時,要充分排序存儲這個特性,將經常一起讀取的行存儲放到一起。(位置相關性) Columns Family 列簇 :HBASE表中的每個列,都歸屬于某個列族。列族是表的schema的一部分(而列不是),必須在使用表之前定義。列名都以列族作為前綴。例如 courses:history,courses:math都屬于courses 這個列族。?
由{row key, columnFamily, version} 唯一確定的單元。cell中 的數據是沒有類型的,全部是二進制形式存儲。 關鍵字:無類型、字節碼 Time Stamp HBASE 中通過rowkey和columns確定的為一個存儲單元稱為cell。每個 cell都保存著同一份數據的多個版本。版本通過時間戳來索引。時間戳的類型是 64位整型。時間戳可以由HBASE(在數據寫入時自動 )賦值,此時時間戳是精確到毫秒 的當前系統時間。時間戳也可以由客戶顯式賦值。如果應用程序要避免數據版 本沖突,就必須自己生成具有唯一性的時間戳。每個 cell中,不同版本的數據按照時間倒序排序,即最新的數據排在最前面。 為了避免數據存在過多版本造成的的管理 (包括存貯和索引)負擔,HBASE提供了兩種數據版本回收方式。一是保存數據的最后n個版本,二是保存最近一段 時間內的版本(比如最近七天)。用戶可以針對每個列族進行設置。 當Table隨著記錄數不斷增加而變大后,會逐漸分裂成多份splits,成為regions,一個region由[startkey,endkey)表示,不同的region會被Master分配給相應的RegionServer進行管理:
-ROOT- && .META. Table
HBase中有兩張特殊的Table,-ROOT-和.META.
l .META.:記錄了用戶表的Region信息,.META.可以有多個regoin
l -ROOT-:記錄了.META.表的Region信息,-ROOT-只有一個region
l Zookeeper中記錄了-ROOT-表的location
Client訪問用戶數據之前需要首先訪問zookeeper,然后訪問-ROOT-表,接著訪問.META.表,最后才能找到用戶數據的位置去訪問,中間需要多次網絡操作,不過client端會做cache緩存。
MapReduce on HBase
在HBase系統上運行批處理運算,最方便和實用的模型依然是MapReduce,如下圖:
HBase Table和Region的關系,比較類似HDFS File和Block的關系,HBase提供了配套的TableInputFormat和TableOutputFormat API,可以方便的將HBase Table作為Hadoop MapReduce的Source和Sink,對于MapReduce Job應用開發人員來說,基本不需要關注HBase系統自身的細節。?
hbase依賴zookeeper:?
1、 保存Hmaster的地址和backup-master地址
hmaster:
a) 管理HregionServer
b) 做增刪改查表的節點
c) 管理HregionServer中的表分配
2、 保存表-ROOT-的地址
hbase默認的根表,檢索表。
3、 HRegionServer列表
表的增刪改查數據。
和hdfs交互,存取數據。
命令的進退1、hbase提供了一個shell的終端給用戶交互
#$HBASE_HOME/bin/hbase shell
2、如果退出執行quit命令
#$HBASE_HOME/bin/hbase shell
……
>quit
命令
上一篇: {大數據}HBase開發
下一篇: {大數據}hbase