目錄html
Hbase屬於NoSql的一種。 NoSql數據庫分爲以下幾類:數據庫
Key-Value類型數據庫服務器
這類數據庫主要會使用到一個哈希表,這個表有一個特定的鍵和一個指針指向特定的數據。key/value模型對IT系統來講簡單、易部署。可是對DBA只對部分值進行查詢和更新的時候,key/value就顯得效率低下了。舉例如:Tokyo Cabinet,Redis,Voldemort,Oracle BDB。架構
面向列的數據庫負載均衡
這部分數據庫用來應對分佈式存儲的海量數據。鍵仍然存在,可是它們的特色是指向多個列。這些列由列家族來安排。如: Cassandra ,HBase,Riak。分佈式
文檔型數據庫設計
文檔型數據庫來自於Lotus Notes辦公軟件的,並且它同第一種鍵值存儲相似。該類型的數據是版本化的文檔,半結構化的文檔以及特定的 格式存儲,好比JSON。文檔數據庫能夠看做是鍵值對數據庫的升級版,容許之間嵌套值。並且文檔型數據庫比鍵值數據庫的查詢效率更高。如:CouchDB,MongoDb.國內也有文檔型數據庫 SequoiaDB ,已經開源。指針
圖形數據庫server
圖形結構的數據庫同其它行列以及結構化的SQL數據庫不一樣,它是使用靈活的圖形模型,而且可以擴展到多個服務器上。NoSQL數據庫沒有標準的查詢語言(SQL),所以進行數據庫查詢須要定製數據模型。許多NoSQL數據庫都有REST式的數據接口或者查詢API。 如:Neo4J, InfoGrid, Infinite Graph。htm
Hbase依賴於MapReduce和HDFS,以下圖所示:
從圖中能夠看到一個Region由多個Store組成,一個Store對應着一個列族(Column Family)。一個store包括位於磁盤的storefile和位於內存的memstore。寫入數據的時候會先寫入memstore,當超過必定閾值後,會寫入storefile,當storefile達到必定數量後,會進行一次版本刪除和合並工做,造成更大的storefile。當region中全部的storefile超過必定閾值後,region會分割成兩個,由HRegionMaster分配到相應的region server服務器,實現負載均衡。
找數據的時候會先在memstore找,找不到再找filestore。
HRegion是實現負載均衡的最小單元,不一樣的HRegion能夠分到不一樣的HRegion Server上。
StoreFile以HFile的格式保存在HDFS上。
HBase最重要的設計是RowKey,RowKey是一個列的惟一標識。
插入列的時候要指定列族和表名,列名不重要,它是伴隨着數據插進去的。
timestamp用於標識咱們的版本。
mapreduce負責高可用,存儲region的API。