做者:studytime
原文: https://www.studytime.xin
Google 發表的三駕馬車(既谷歌文件系統 GFS、MapReduce 和 BigTable)論文,被譽爲計算機科學進入大數據時代的標誌。
因早期 Hadoop 開發者,只實現了 Hadoop 文件系統和 Hadoop MapReduce,並未實現 BigTable,故而 BigTable 在Hadoop 大數據生態裏面,至關一段時間裏,一直是缺席的。
直到 PowerSet 公司推出 Hbase 項目,纔算是真正實現了 BigTable 的開源版。PowerSet 早期是一家十分著名的創業公司,創業領域爲下一代搜索引擎:天然搜索引擎。雖然在2008年發佈了本身的正式產品,但結果不盡人意,後期因微軟踏足搜索引擎領域而被收購。可是其在開發語義搜索引擎系統過程當中,須要用到相似 Googe BigTable 的系統,而研發出來的 Hbase,確對整個大數據開源社區作出了很大貢獻。數據庫
Hbase 是 Googe BigTable 的開源實現,是 Apace Hadoop 大數據生態系統中的重要成員。是⼀個構建在 HDFS 上的分佈式列存儲系統。從邏輯上講,HBase 將數據按照表、⾏和列進⾏存儲,它是⼀個分佈式的、稀疏的、持久化存儲的多維度排序表。數組
HBase 依賴於 HDFS 作底層的數據存儲,BigTable 依賴 Google GFS 作數據存儲。
HBase 依賴於 MapReduce 作數據計算,BigTable 依賴 Google MapReduce 作數據計算。
HBase 依賴於 ZooKeeper 作服務協調,BigTable 依賴 Google Chubby 作服務協調。架構
⽹頁庫( 360搜索—⽹絡爬⾍)
商品庫(淘寶搜索--歷史帳單查詢)
交易信息(淘寶數據魔⽅)
雲存儲服務(⼩⽶)
監控信息(OpenTSDB)分佈式
Hbase 數據模型:邏輯數據模型和物理數據存儲。
邏輯數據模型:邏輯數據模型是用戶從數據庫所看到的模型,他直接與 Hbase 數據建模相關。
物理數據存儲:物理數據模型是面向計算機物理表示的模型,描述了 Hbase 是數據在存儲介質(包括內存和磁盤)上的組織架構。oop
一、 基本概述
相似與數據庫中的 database 和 table 邏輯概念,Hbase 分別將之稱爲 namespace 和 table,一個 namespace 中包含了一組 table。性能
Hbase 內置了兩個缺省 namespace:大數據
- hbase:系統內建表,包括namespace和meta表 - default:用戶建表時未指定namespace的表都建立在此。
Hbase 表由一系列行構成,每行數據有一個 rowkey,以及若干 column family 構成,每一個 column family 可包含無限列。搜索引擎
二、名詞概念
rowkey: Hbase 表中數據以 rowkey 做爲惟一標示的,相似於關係型數據庫中的主鍵,每行數據有一個rowkey,爲定位改行數據的索引。同一張表 rowkey 爲全局有序的,rowkey 是沒有數據類型的,以字節數組(byte[])形式保存。
針對 Hbase 的查詢特性,rowkey 對 Hbase 而言查詢性能影響很大,故而 rowKey 的設計就尤其重要,設計的時候要兼顧基於 rowkey 的單行查詢也要兼容 rowkey 的範圍掃描。spa
column family: 列簇由多個列共同組成。每行數據都有相同的 column family。column family 屬於 schema 的一部分,定義表時必須指定好。每一個 column family 包含無數個動態列。爲訪問控制的基本單元。同一 column family 中的數據在物理上會存儲在一個文件中。設計
column qualifier: 內部列標示,Hbase 每列數據看經過 column family:column qualifier 定位。column qualifier 不屬於 schema 的一部分,能夠動態指定,且每行數據能夠有不一樣的qualifier。跟 rowkey 相似,column qualifier 也會沒有數據類型的,以字節數組(byte[])形式保存。
cell:經過 rowkey、column family、column qualifier 能夠惟必定位一個 cell,內部保存了多個版本的數值,默認狀況下,每一個數據的版本號是寫入時間戳。cell內的數據也是沒有類型的,以數組形式保存。
timestamp: cell 內部數據是多版本的,Hbase 默認是將寫入時間戳做爲版本號。用戶可根據業務需求自行設置版本號,默認爲3個版本。讀數據若沒有指定版本號,則返回最新版本的數據,若存儲的版本超過設置的存儲最大版本號,則會自動清理。
三、模型特色
Hbase 是列簇式存儲引擎,它以 column family 爲單位存儲數據,每一個 column family 內部數據是覺得 key value 形式存儲。在 Hbase 中,同一表中的數據的按照 rowkey 升序排列的,同一行中的不一樣列是按照 column qualifier 升序排列的,同一個 cell 中的數據是按照版本號降序排列的。