HBase教學


自1970年以來,關聯式資料庫用於資料儲存和維護有關問題的解決方案。巨量資料的出現後,好多公司實現處理巨量資料並從中受益,並開始選擇像 Hadoop 的解決方案。

Hadoop使用分散式檔案系統,用於儲存巨量資料,並使用MapReduce來處理。Hadoop擅長於儲存各種格式的龐大的資料,任意的格式甚至非結構化的處理。

Hadoop的限制

Hadoop只能執行批次處理,並且只以順序方式存取資料。這意味著必須搜尋整個資料集,即使是最簡單的搜尋工作。

當處理結果在另一個龐大的資料集,也是按順序處理一個巨大的資料集。在這一點上,一個新的解決方案,需要存取資料中的任何點(隨機存取)單元。

Hadoop隨機存取資料庫

應用程式,如HBase, Cassandra, couchDB, Dynamo 和 MongoDB 都是一些儲存大量資料和以隨機方式存取資料的資料庫。

HBase是什麼?

HBase是建立在Hadoop檔案系統之上的分散式面向列的資料庫。它是一個開源專案,是橫向擴充套件的。

HBase是一個資料模型,類似於谷歌的大錶設計,可以提供快速隨機存取海量結構化資料。它利用了Hadoop的檔案系統(HDFS)提供的容錯能力。

它是Hadoop的生態系統,提供對資料的隨機實時讀/寫存取,是Hadoop檔案系統的一部分。

人們可以直接或通過HBase的儲存HDFS資料。使用HBase在HDFS讀取消費/隨機存取資料。 HBase在Hadoop的檔案系統之上,並提供了讀寫存取。

HBase Flow

HBase 和 HDFS

HDFS HBase
HDFS是適於儲存大容量檔案的分散式檔案系統。 HBase是建立在HDFS之上的資料庫。
HDFS不支援快速單獨記錄查詢。 HBase提供在較大的表快速查詢
它提供了高延遲批次處理;沒有批次處理概念。 它提供了數十億條記錄低延遲存取單個行記錄(隨機存取)。
它提供的資料只能順序存取。 HBase內部使用雜湊表和提供隨機接入,並且其儲存索引,可將在HDFS檔案中的資料進行快速查詢。

HBase的儲存機制

HBase是一個面向列的資料庫,在表中它由行排序。表模式定義只能列族,也就是鍵值對。一個表有多個列族以及每一個列族可以有任意數量的列。後續列的值連續地儲存在磁碟上。表中的每個單元格值都具有時間戳。總之,在一個HBase:

  • 表是行的集合。
  • 行是列族的集合。
  • 列族是列的集合。
  • 列是鍵值對的集合。

下面給出的表中是HBase模式的一個例子。

Rowide Column Family Column Family Column Family Column Family
  col1 col2 col3 col1 col2 col3 col1 col2 col3 col1 col2 col3
1                        
2                        
3                        

面向列和面向行

面向列的資料庫是儲存資料表作為資料列的部分,而不是作為行資料。總之它們擁有列族。

行式資料庫 列式資料庫
它適用於聯機事務處理(OLTP)。 它適用於線上分析處理(OLAP)。
這樣的資料庫被設計為小數目的行和列。 面向列的資料庫設計的巨大表。

下圖顯示了列族在面向列的資料庫:

Table

HBase 和 RDBMS

HBase RDBMS
HBase無模式,它不具有固定列模式的概念;僅定義列族。 RDBMS有它的模式,描述表的整體結構的約束。
它專門建立為寬表。 HBase是橫向擴充套件。 這些都是細而專為小表。很難形成規模。
沒有任何事務存在於HBase。 RDBMS是事務性的。
它反規範化的資料。 它具有規範化的資料。
它用於半結構以及結構化資料是非常好的。 用於結構化資料非常好。

HBase的特點

  • HBase線性可延伸。
  • 它具有自動故障支援。
  • 它提供了一致的讀取和寫入。
  • 它整合了Hadoop,作為源和目的地。
  • 用戶端方便的Java API。
  • 它提供了跨叢集資料複製。

在哪裡可以使用HBase?

  • Apache HBase曾經是隨機,實時的讀/寫存取巨量資料。
  • 它承載在叢集普通硬體的頂端是非常大的表。
  • Apache HBase是此前谷歌Bigtable模擬非關係型資料庫。 Bigtable對谷歌檔案系統操作,同樣類似Apache HBase工作在Hadoop HDFS的頂部。

HBase的應用

  • 它是用來當有需要寫重的應用程式。
  • HBase使用於當我們需要提供快速隨機存取的資料。
  • 很多公司,如Facebook,Twitter,雅虎,和Adobe內部都在使用HBase。

HBase 歷史

年份 事件
Nov 2006 谷歌公布 BigTable 檔案。
Feb 2007 最初的HBase原型建立由 Hadoop 貢獻。
Oct 2007 隨著Hadoop 0.15.0,第一個可用的HBase也發布了。
Jan 2008 HBase成為 Hadoop 的子專案。
Oct 2008 HBase 0.18.1 發布。
Jan 2009 HBase 0.19 發布。
Sept 2009 HBase 0.20.0 發布。
May 2010 HBase 成為 Apache 的頂級專案。