一文讀懂 HBase 核心知識

一届巩、HBase核心概述

HBase(Hadoop Database)是一個基于Google BigTable論文設計的開源端幼、高可靠性、高性能疟位、可擴展的分布式存儲系統(tǒng)苔巨。HBase存儲引擎是通過LSM樹(Log-Structured Merge Tree)結構實現(xiàn)的版扩,底層數(shù)據(jù)存儲基于HDFS,原生的支持MapReduce作為計算引擎侄泽,具有高吞吐礁芦、低延時的讀寫特點。

1悼尾、數(shù)據(jù)模型

首先講一下HBase的數(shù)據(jù)模型柿扣。HBase數(shù)據(jù)存儲在 table 中,table 具有松散表結構(schema-free)闺魏,不需要預先定義好schema未状,只有在數(shù)據(jù)寫入時才須定義Column,理論上數(shù)據(jù)列可以無限多析桥。

HBase的列由列族(Column Family)和 列限定符(Column Qualifier)組成司草,以逗號分隔標識一個列。HBase數(shù)據(jù)是按Rowkey進行字典排序的泡仗,Rowkey相當于關系型數(shù)據(jù)庫的主鍵埋虹,數(shù)據(jù)寫入時必須指定Rowkey。HBase中的Rowkey娩怎、列族搔课、列限定符共同組成一個稱為Cell的存儲單元,Cell包含具體的數(shù)據(jù)峦树,以及用于區(qū)分Cell版本的 timestamp辣辫。

2、列族式存儲

HBase是面向列族存儲的魁巩。HBase每一列數(shù)據(jù)在底層是以 KV 形式存儲的急灭,針對一行數(shù)據(jù),如果其列族相同谷遂,那么這些列的數(shù)據(jù)是順序相鄰存放的葬馋,所以是看上去像是以列族為偽列進行列式存儲的,實際上并不是真正的列式存儲肾扰,而是面向列族存儲畴嘶,或者說Column Family級別列存。

3集晚、自動分區(qū)

HBase支持自動分區(qū)窗悯。HBase表在水平方向上根據(jù)Rowkey被劃分成多個Region,由[startkey,endkey)表示偷拔,Region是HBase讀寫可用性蒋院、分布式存儲和負載均衡的基本單元亏钩。Region分散在不同的RegionServer中,使得數(shù)據(jù)分片分布在整個集群欺旧。當Region達到一定大小時(hbase.hregion.max.filesize)就會自動分裂成兩個Region姑丑,達到自動分區(qū)的效果。

4辞友、單列索引

默認情況下HBase對Rowkey做了單列索引栅哀,所以HBase能通過Rowkey進行高效的隨機查詢或范圍查詢。相對來說称龙,HBase索引還是比較單一留拾,通過非Rowkey列查詢性能比較低,除非對非Rowkey列做二級索引(secondary index)鲫尊,目前二級索引方案大多是基于 HBase Coprocessor即協(xié)處理器實現(xiàn)间驮,比如Phoenix。

5马昨、刷寫與壓縮

由于HBase基于LSM Tree思想設計竞帽,新增變更的數(shù)據(jù)首先寫入 WAL(Write Ahead Log),然后會寫到Region的內存緩沖區(qū)MemStore中鸿捧,當MemStore大小達到一定閾值或滿足其他觸發(fā)條件時屹篓,數(shù)據(jù)會刷寫到磁盤(Flush)生成StoreFile(HFile),HFile是HBase底層數(shù)據(jù)的文件存儲格式匙奴。

隨著時間的推移堆巧,磁盤中會存在大量的HFile文件,文件過多會嚴重影響讀取HBase的性能泼菌,為了提高性能谍肤,HBase會做合并HFile文件(Compaction)操作,以減少文件個數(shù)哗伯,清理過期或刪除的數(shù)據(jù)荒揣。

二、HBase生態(tài)組件介紹

隨著HBase功能越來越完善焊刹,構建在HBase之上的生態(tài)環(huán)境也越來越健全系任,衍生了包括SQL,時序虐块,時空俩滥,以及圖等各個方面的項目:


三、HBase應用場景

HBase是一個存儲系統(tǒng)贺奠,也是一個NoSQL數(shù)據(jù)庫霜旧。由于HBase豐富的特性,加上自身的并發(fā)能力儡率、存儲能力與高效讀寫能力挂据,使得HBase有著比較廣泛的應用場景:

  • 訂單/消息存儲:HBase可以支持金融航背、電信領域的訂單/賬單查詢,另外不少通信棱貌、消息同步的應用也構建在HBase之上。
  • 用戶畫像:可以支持用戶畫像的存儲箕肃,螞蟻的風控就是構建在HBase之上婚脱。
  • 對象存儲:不少頭條類、新聞類的的新聞勺像、網(wǎng)頁障贸、圖片存儲在HBase之中,一些病毒公司的病毒庫也是存儲在HBase之中吟宦。
  • 時序數(shù)據(jù):HBase之上有OpenTSDB模塊篮洁,可以滿足時序類場景的需求。
  • 時空數(shù)據(jù):主要是軌跡殃姓、氣象網(wǎng)格之類袁波,滴滴打車的軌跡數(shù)據(jù)主要存在HBase之中,另外在車聯(lián)網(wǎng)企業(yè)有不少數(shù)據(jù)存在HBase之中蜗侈。
  • Cube分析:Kylin一個cube分析工具篷牌,底層的數(shù)據(jù)存儲在HBase之中,不少客戶自己基于離線計算構建的cube也存儲在hbase之中踏幻,滿足在線報表查詢的需求枷颊。
  • Feeds流:高并發(fā)請求訪問,典型的場景就是朋友圈類似的應用该面。
  • NewSQL:HBase之上有Phoenix的插件夭苗,可以滿足二級索引、SQL的需求隔缀,對接傳統(tǒng)數(shù)據(jù)需要SQL非事務的需求题造。

四、HBase2.0新特性介紹

2018年4月份HBase發(fā)布了2.0版本猾瘸,是HBase迄今為止非常重要的一個大版本晌梨,有很多值得關注的Features,下面列舉其中非常重要的幾個特性:

  • Mob小對象存儲:可以高效的存儲100KB~10M中等大小對象须妻,能夠滿足一般文檔仔蝌、圖片的存儲。
  • 讀寫鏈路的Offheap:引入OffHeap降低GC影響荒吏,優(yōu)化了讀寫鏈路延遲敛惊。
  • Region Replica:為Region引入副本,提供高可用讀绰更,避免宕機影響瞧挤。
  • In-Memory Compaction:內存先進行flush然后compaction锡宋,當達到一定閾值再flush到磁盤,減少了磁盤io同時提升了讀性能特恬。
  • Assignment Manager V2:基于Procedure V2执俩,使得Region assign/unassign的速度大大提升,能夠更好的解決Region長時間RIT問題癌刽。
  • 其他

五役首、總結

HBase是架構在HDFS之上面向列的分布式存儲系統(tǒng),在很多領域都有廣泛應用显拜,主要解決高并發(fā)衡奥、隨機讀寫的業(yè)務場景,適合海量數(shù)據(jù)的永久性存儲远荠。

國內很多知名公司如阿里矮固、騰訊、小米譬淳、滴滴档址、360等都在使用HBase,并有很好的應用實踐邻梆。后續(xù)介紹更多HBase技術細節(jié)辰晕。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市确虱,隨后出現(xiàn)的幾起案子含友,更是在濱河造成了極大的恐慌,老刑警劉巖校辩,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宜咒,居然都是意外死亡,警方通過查閱死者的電腦和手機故黑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來场晶,“玉大人混埠,你說我怎么就攤上這事∈幔” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吏颖。 經常有香客問我,道長半醉,這世上最難降的妖魔是什么疚俱? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮缩多,結果婚禮上呆奕,老公的妹妹穿的比我還像新娘瞧壮。我一直安慰自己,他們只是感情好咆槽,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著秦忿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪灯谣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天胎许,我揣著相機與錄音,去河邊找鬼罗售。 笑死,一個胖子當著我的面吹牛寨躁,可吹牛的內容都是我干的。 我是一名探鬼主播职恳,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼放钦!你這毒婦竟也來了?” 一聲冷哼從身側響起操禀,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辙培,沒想到半個月后蔑水,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扬蕊,經...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年尾抑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片再愈。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖翎冲,靈堂內的尸體忽然破棺而出垂睬,到底是詐尸還是另有隱情,我是刑警寧澤抗悍,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布驹饺,位于F島的核電站缴渊,受9級特大地震影響赏壹,放射性物質發(fā)生泄漏衔沼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一指蚁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧欣舵,春花似錦、人聲如沸缘圈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绢涡。三九已至,卻和暖如春雄可,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背数苫。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工聪舒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留虐急,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓止吁,卻偏偏與公主長得像被辑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子敬惦,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內容