HBase - 概述



自 1970 年以來,關係型資料庫管理系統 (RDBMS) 一直是解決資料儲存和維護相關問題的方案。在大資料出現後,企業意識到處理大資料的益處,並開始選擇 Hadoop 等解決方案。

Hadoop 使用分散式檔案系統來儲存大資料,並使用 MapReduce 來處理它。Hadoop 擅長儲存和處理各種格式的海量資料,例如任意格式、半結構化甚至非結構化資料。

Hadoop 的侷限性

Hadoop 只能執行批處理,並且只能以順序方式訪問資料。這意味著即使是最簡單的任務,也必須搜尋整個資料集。

當處理海量資料集時,會產生另一個海量資料集,該資料集也需要按順序進行處理。此時,需要一個新的解決方案來在單個時間單位內訪問資料的任意點(隨機訪問)。

Hadoop 隨機訪問資料庫

HBase、Cassandra、CouchDB、Dynamo 和 MongoDB 等應用程式是一些儲存海量資料並以隨機方式訪問資料的資料庫。

什麼是 HBase?

HBase 是一個構建在 Hadoop 檔案系統之上的分散式列式資料庫。它是一個開源專案,並且具有水平可擴充套件性。

HBase 是一種類似於 Google 的 Bigtable 的資料模型,旨在提供對海量結構化資料的快速隨機訪問。它利用了 Hadoop 檔案系統 (HDFS) 提供的容錯能力。

它是 Hadoop 生態系統的一部分,它提供對 Hadoop 檔案系統中資料的隨機即時讀寫訪問。

可以將資料直接儲存在 HDFS 中,也可以透過 HBase 儲存。資料消費者使用 HBase 以隨機方式讀取/訪問 HDFS 中的資料。HBase 位於 Hadoop 檔案系統之上,並提供讀寫訪問。

HBase Flow

HBase 和 HDFS

HDFS HBase
HDFS 是一種適合儲存大型檔案的分散式檔案系統。 HBase 是一個構建在 HDFS 之上的資料庫。
HDFS 不支援快速單個記錄查詢。 HBase 為更大的表提供快速查詢。
它提供高延遲批處理;沒有批處理的概念。 它提供對數十億條記錄中的單個行的低延遲訪問(隨機訪問)。
它僅提供資料的順序訪問。 HBase 內部使用雜湊表並提供隨機訪問,它將資料儲存在索引的 HDFS 檔案中以加快查詢速度。

HBase 中的儲存機制

HBase 是一個**列式資料庫**,其中的表按行排序。表模式僅定義列族,它們是鍵值對。一個表可以有多個列族,每個列族可以有任意數量的列。後續列值連續儲存在磁碟上。表的每個單元格值都有一個時間戳。簡而言之,在 HBase 中

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

以下是 HBase 中表的示例模式。

行 ID 列族 列族 列族 列族
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 是一個非關係型資料庫,其模型參考了 Google 的 Bigtable。Bigtable 在 Google 檔案系統上執行,類似地,Apache HBase 在 Hadoop 和 HDFS 之上執行。

HBase 的應用

  • 當需要編寫重量級應用程式時使用它。
  • 當我們需要為可用資料提供快速的隨機訪問時使用 HBase。
  • Facebook、Twitter、Yahoo 和 Adobe 等公司在內部使用 HBase。

HBase 歷史

年份 事件
2006 年 11 月 Google 釋出了關於 Bigtable 的論文。
2007 年 2 月 建立了最初的 HBase 原型作為 Hadoop 的貢獻。
2007 年 10 月 釋出了第一個可用的 HBase 以及 Hadoop 0.15.0。
2008 年 1 月 HBase 成為 Hadoop 的子專案。
2008 年 10 月 釋出了 HBase 0.18.1。
2009 年 1 月 釋出了 HBase 0.19.0。
2009 年 9 月 釋出了 HBase 0.20.0。
2010 年 5 月 HBase 成為 Apache 的頂級專案。
廣告

© . All rights reserved.