全部課程
發(fā)布時間: 2018-02-01 14:38:35
?HBase訪問接口:
1. Native Java API,最常規(guī)和高效的訪問方式,適合Hadoop MapReduce Job并行批處理HBase表數(shù)據(jù) 2. HBase Shell,HBase的命令行工具,最簡單的接口,適合HBase管理使用 3. Thrift Gateway,利用Thrift序列化技術(shù),支持C++,PHP,Python等多種語言,適合其他異構(gòu)系統(tǒng)在線訪問HBase表數(shù)據(jù) 4. REST Gateway,支持REST 風(fēng)格的Http API訪問HBase, 解除了語言限制 5. Pig,可以使用Pig Latin流式編程語言來操作HBase中的數(shù)據(jù),和Hive類似,本質(zhì)最終也是編譯成MapReduce Job來處理HBase表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計 6. Hive,當(dāng)前Hive的Release版本尚沒有加入對HBase的支持,但在下一個版本Hive 0.7.0中將會支持HBase,可以使用類似SQL語言來訪問HBase
hbase數(shù)據(jù)模型:
?
Row Key 與nosql數(shù)據(jù)庫們一樣,row key是用來檢索記錄的主鍵。訪問HBASE table中的行,只有三種方式: 1.通過單個row key訪問 2.通過row key的range(正則) 3.全表掃描 Row key行鍵 (Row key)可以是任意字符串(較大長度是64KB,實際應(yīng)用中長度一般為 10-100bytes),在HBASE內(nèi)部,row key保存為字節(jié)數(shù)組。存儲時,數(shù)據(jù)按照Row key的字典序(byte order)排序存儲。設(shè)計key時,要充分排序存儲這個特性,將經(jīng)常一起讀取的行存儲放到一起。(位置相關(guān)性) Columns Family 列簇 :HBASE表中的每個列,都?xì)w屬于某個列族。列族是表的schema的一部分(而列不是),必須在使用表之前定義。列名都以列族作為前綴。例如 courses:history,courses:math都屬于courses 這個列族。?
由{row key, columnFamily, version} 唯一確定的單元。cell中 的數(shù)據(jù)是沒有類型的,全部是二進(jìn)制形式存儲。 關(guān)鍵字:無類型、字節(jié)碼 Time Stamp HBASE 中通過rowkey和columns確定的為一個存儲單元稱為cell。每個 cell都保存著同一份數(shù)據(jù)的多個版本。版本通過時間戳來索引。時間戳的類型是 64位整型。時間戳可以由HBASE(在數(shù)據(jù)寫入時自動 )賦值,此時時間戳是精確到毫秒 的當(dāng)前系統(tǒng)時間。時間戳也可以由客戶顯式賦值。如果應(yīng)用程序要避免數(shù)據(jù)版 本沖突,就必須自己生成具有唯一性的時間戳。每個 cell中,不同版本的數(shù)據(jù)按照時間倒序排序,即最新的數(shù)據(jù)排在最前面。 為了避免數(shù)據(jù)存在過多版本造成的的管理 (包括存貯和索引)負(fù)擔(dān),HBASE提供了兩種數(shù)據(jù)版本回收方式。一是保存數(shù)據(jù)的最后n個版本,二是保存最近一段 時間內(nèi)的版本(比如最近七天)。用戶可以針對每個列族進(jìn)行設(shè)置。 當(dāng)Table隨著記錄數(shù)不斷增加而變大后,會逐漸分裂成多份splits,成為regions,一個region由[startkey,endkey)表示,不同的region會被Master分配給相應(yīng)的RegionServer進(jìn)行管理:
-ROOT- && .META. Table
HBase中有兩張?zhí)厥獾腡able,-ROOT-和.META.
l .META.:記錄了用戶表的Region信息,.META.可以有多個regoin
l -ROOT-:記錄了.META.表的Region信息,-ROOT-只有一個region
l Zookeeper中記錄了-ROOT-表的location
Client訪問用戶數(shù)據(jù)之前需要首先訪問zookeeper,然后訪問-ROOT-表,接著訪問.META.表,最后才能找到用戶數(shù)據(jù)的位置去訪問,中間需要多次網(wǎng)絡(luò)操作,不過client端會做cache緩存。
MapReduce on HBase
在HBase系統(tǒng)上運行批處理運算,最方便和實用的模型依然是MapReduce,如下圖:

HBase Table和Region的關(guān)系,比較類似HDFS File和Block的關(guān)系,HBase提供了配套的TableInputFormat和TableOutputFormat API,可以方便的將HBase Table作為Hadoop MapReduce的Source和Sink,對于MapReduce Job應(yīng)用開發(fā)人員來說,基本不需要關(guān)注HBase系統(tǒng)自身的細(xì)節(jié)。?
hbase依賴zookeeper:?
1、 保存Hmaster的地址和backup-master地址
hmaster:
a) 管理HregionServer
b) 做增刪改查表的節(jié)點
c) 管理HregionServer中的表分配
2、 保存表-ROOT-的地址
hbase默認(rèn)的根表,檢索表。
3、 HRegionServer列表
表的增刪改查數(shù)據(jù)。
和hdfs交互,存取數(shù)據(jù)。
命令的進(jìn)退1、hbase提供了一個shell的終端給用戶交互
#$HBASE_HOME/bin/hbase shell
2、如果退出執(zhí)行quit命令
#$HBASE_HOME/bin/hbase shell
……
>quit
命令

上一篇: {大數(shù)據(jù)}HBase開發(fā)
下一篇: {大數(shù)據(jù)}hbase