位置:首頁 > 大數據教學 > HBase教學 > HBase教學

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 的頂級項目。