Hbase介紹

1.HBase概述

HBase是一個開源的非關(guān)系型分布式數(shù)據(jù)庫(NoSQL),它參考了谷歌的BigTable建模,實現(xiàn)的編程語言為 Java。它是Apache軟件基金會的Hadoop項目的一部分,運行于HDFS文件系統(tǒng)之上,為 Hadoop 提供類似于BigTable 規(guī)模的服務(wù),可以存儲海量稀疏的數(shù)據(jù),并具備一定的容錯性、高可靠性及伸縮性。主要應(yīng)用場景是實時隨機讀寫超大規(guī)模的數(shù)據(jù)。

HBase在列上實現(xiàn)了BigTable論文提到的壓縮算法、內(nèi)存操作和布隆過濾器。HBase的表能夠作為MapReduce任務(wù)的輸入和輸出,可以通過Java API來存取數(shù)據(jù),也可以通過REST、Avro或者Thrift的API來訪問。

HBase不能取代RDBMS,因為二者的應(yīng)用場景不同。HBase為了解決海量數(shù)據(jù)的擴展性,支持簡單的增加節(jié)點來實現(xiàn)線性擴展,從而在集群上管理海量的非結(jié)構(gòu)化或半結(jié)構(gòu)化的稀疏數(shù)據(jù)。HBase僅能通過主鍵(raw key)或主鍵的range檢索數(shù)據(jù),支持單行事務(wù)

image.png

上圖描述Hadoop EcoSystem中的各層系統(tǒng)。其中,HBase位于結(jié)構(gòu)化存儲層,Hadoop HDFS為HBase提供了高可靠性的底層存儲支持,Hadoop MapReduce為HBase提供了高性能的計算能力,Zookeeper為HBase提供了穩(wěn)定服務(wù)和failover機制。

此外,Pig和Hive還為HBase提供了高層語言支持,使得在HBase上進行數(shù)據(jù)統(tǒng)計處理變的非常簡單。 Sqoop則為HBase提供了方便的RDBMS數(shù)據(jù)導(dǎo)入功能,使得傳統(tǒng)數(shù)據(jù)庫數(shù)據(jù)向HBase中遷移變的非常方便


2.HBase數(shù)據(jù)模型

image.png
  • 行健(Row Key):表的主鍵,表中的記錄默認(rèn)按照行健升序排序
  • 時間戳(Timestamp):每次數(shù)據(jù)操作對應(yīng)的時間戳,可以看作是數(shù)據(jù)的版本號
  • 列族(Column Family):表在水平方向有一個或者多個列族組成,一個列族中可以由任意多個列組成,列族支持動態(tài)擴展,無需預(yù)先定義列的數(shù)量以及類型,所有列均以二進制格式存儲,用戶需要自行進行類型轉(zhuǎn)換。所有的列族成員的前綴是相同的,例如“abc:a1”和“abc:a2”兩個列都屬于abc這個列族。
  • 表和區(qū)域(Table&Region):當(dāng)表隨著記錄數(shù)不斷增加而變大后,會逐漸分裂成多份,成為區(qū)域,一個區(qū)域是對表的水平劃分,不同的區(qū)域會被Master分配給相應(yīng)的RegionServer進行管理
  • 單元格(Cell):表存儲數(shù)據(jù)的單元。由{行健,列(列族:標(biāo)簽),時間戳}唯一確定,其中的數(shù)據(jù)是沒有類型的,以二進制的形式存儲。

3.HBase架構(gòu)

image.png

如上圖所示,HBase架構(gòu)中只有一個Master節(jié)點,稱HMaster,還有多臺RegionServer成為HRegionServer,每個RegionServer包含多個Region。

  • HBase訪問接口:Java,REST,Thrift等
  • Master:集群的管理服務(wù)器,為RegionServer分配Region,負(fù)責(zé) RegionServer的負(fù)載均衡,處理schema更新請求
  • RegionServer:管理HBase的數(shù)據(jù)存儲,維護Region,處理IO請求。
  • Zookeeper:保證集群的高可用性、存儲Region的尋址入口,并實時監(jiān)控RegionServer的狀態(tài),存儲HBase的Schema。

可以看到,client訪問hbase上數(shù)據(jù)的過程并不需要Master參與(尋址訪問Zookeeper和RegionServer,數(shù)據(jù)讀寫訪問RegionServer),Master僅僅維護Table和Region的元數(shù)據(jù)信息,負(fù)載很低。


4.HBase訪問接口

  • Native Java API,最常規(guī)和高效的訪問方式,適合Hadoop MapReduce Job并行批處理HBase表數(shù)據(jù)
  • HBase Shell,HBase的命令行工具,最簡單的接口,適合HBase管理使用
  • Thrift Gateway,利用Thrift序列化技術(shù),支持C++,PHP,Python等多種語言,適合其他異構(gòu)系統(tǒng)在線訪問HBase表數(shù)據(jù)
  • REST Gateway,支持REST 風(fēng)格的Http API訪問HBase, 解除了語言限制
  • Pig,可以使用Pig Latin流式編程語言來操作HBase中的數(shù)據(jù),和Hive類似,本質(zhì)最終也是編譯成MapReduce Job來處理HBase表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計

5.HBase存儲格式

HBase中的所有數(shù)據(jù)文件都存儲在Hadoop HDFS文件系統(tǒng)上,主要包括上述提出的兩種文件類型:

  • HFile, HBase中KeyValue數(shù)據(jù)的存儲格式,HFile是Hadoop的二進制格式文件,實際上StoreFile就是對HFile做了輕量級包裝,即StoreFile底層就是HFile
  • HLogFile,HBase中WAL(Write Ahead Log) 的存儲格式,物理上是Hadoop的Sequence File

5.HBase應(yīng)用場景

HBase的優(yōu)勢主要在以下幾方面:

  • 海量數(shù)據(jù)存儲
  • 快速隨機訪問
  • 大量寫操作的應(yīng)用
  • 常見的應(yīng)用場景

互聯(lián)網(wǎng)搜索引擎數(shù)據(jù)存儲(BigTable要解決的問題)

  • 審計日志系統(tǒng)
  • 實時系統(tǒng)
  • 消息中心
  • 內(nèi)容服務(wù)系統(tǒng)

轉(zhuǎn)載來源:https://www.shiyanlou.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 該文檔是用Hbase默認(rèn)配置文件生成的,文件源是Hbase-default.xml hbase.rootdir 這...
    我是嘻哈大哥閱讀 4,873評論 0 7
  • HBase是Hadoop 的正式子項目,它是一個面向列的分布式數(shù)據(jù)庫。是建立的hdfs之上,提供高可靠性、高性能、...
    我是嘻哈大哥閱讀 892評論 0 1
  • 參考:http://www.itdecent.cn/p/569106a3008f 最近在逐步跟進Hbase的相關(guān)...
    博弈史密斯閱讀 931評論 1 1
  • 最近在逐步跟進Hbase的相關(guān)工作,由于之前對Hbase并不怎么了解,因此系統(tǒng)地學(xué)習(xí)了下Hbase,為了加深對Hb...
    飛鴻無痕閱讀 50,588評論 19 272
  • 簡介 HBase是高可靠性,高性能,面向列,可伸縮的分布式存儲系統(tǒng),利用HBase技術(shù)可在廉價PC Serve...
    九世的貓閱讀 2,387評論 1 6

友情鏈接更多精彩內(nèi)容