hbase是乙個高可靠、高效能、面向列、可伸縮的分布式資料庫,它是谷歌bigtable的開源實現,主要用來儲存非結構化和半結構化的鬆散資料。hbase的目標是處理非常龐大的表,可以通過水平拓展的方式,利用廉價計算機集群處理超過10億行資料和數百萬列元素組成的資料表。
hbase利用 hadoop mapreduce來處理hbase中的海量資料,實現高效能計算,利用zookeeper作為協同服務,實現穩定服務和失敗恢復,使用hdfs作為高可靠的底層儲存,利用廉價集群提供海量資料儲存能力,當然,hbase也可以直接使用本地檔案系統而不用hdfs作為底層資料儲存方式,不過,為了提高資料可靠性和系統的健壯性,發揮hbase處理大資料量等功能,一般都使用hdfs作為hbase的底層資料儲存方式。此外,為了方便在hbase上進行資料處理,sqoop為hbase提供了高效、便捷的rdbms資料匯入功能,pig和hive為hbase提供了高層語言支援。hbase是bigtable的開源實現。
專案bigtable
hbase
檔案儲存系統
gfshdfs
海量資料處理
mapreduce
hadoop mapreduce
協同服務處理
chubby
zookeeper
hbase和bigtable的底層技術對應關係
hbase是乙個稀疏、多維度、排序的對映表,這張表的索引是行鍵、列族、列限定符和時間戳。每個值都是未經解釋的字串,沒有資料型別。
下面具體 介紹hbase資料模型的相關概念。
①表 hbase採用表來組織資料,表由行和列組成,列劃分為若干個列族。
②行 每個hbase表都由若干行組成,每個行由行鍵來標識。訪問表中的行只有三種方式:通過單個行鍵訪問;通過乙個行鍵的區間來訪問;全表掃瞄。行鍵可以是任意 字串。
③ 列族 乙個hbase 表被分組成許多「列族」的集合,它是基本的訪問控制單元。
④列限定符 列族裡的資料通過列限定符來定位。列限定符不用事先定義,也不需要在不同行之間保持一致。列限定符沒有資料型別,總被視為 位元組陣列byte。
⑤單元格 在hbase表中,通過行、列族和列限定符確定乙個「單元格」。單元格中儲存的資料沒有資料型別,總被視為位元組陣列byte。
⑥時間戳 每個單元格都儲存著同乙份資料的多個 版本,這些版本採用時間戳進行索引。
hbase主要有3個主要的功能元件:乙個master主伺服器,(負責 管理和維護hbase表的分割槽資訊,同時也負責維護region伺服器列表。);庫函式,(鏈結到每個客戶端);許多個region伺服器(region伺服器負責儲存和維護分配給自己的region,處理來自客戶端的讀寫請求)。
在乙個hbase資料庫中,儲存了許多表。對於每個hbase表而言,表中的行是根據行鍵的值的字典序列進行維護的,表中包含的行的數量可能非常龐大,無法儲存在一台機器上,需要分布式儲存到多台機器上。因此,需要根據行鍵的值對錶中的行進行分割槽,每個行區間構成乙個分割槽,被稱為「region」,寶行了位於某個值域區間內的所有資料,它是負載均衡和資料分發的基本單位,這些region會被分發到不同的region伺服器上。
初始時,每個表只包含乙個region,隨著資料的不斷插入,region會持續增大,當乙個region中包含的行數量達到乙個閥值時就會被自動分成兩個新的region。 每個region的預設大小是100mb到200mb,它是hbase中負載均衡和資料分發的基本單位。
hbase的系統架構包括客戶端、zookeeper伺服器、master主伺服器、region伺服器。hbase一般採用hdfs作為底層資料儲存,所以可能會有hdfs和hadoop。
①客戶端:客戶端包含訪問hbase的介面,同時在快取中維護這已經訪問過的region的位置資訊。用愛加快後續資料訪問過程。
②zookeeper伺服器:zookeeper中儲存了-root-表的位址和master的位址,客戶端可以通過訪問zookeeper獲得-root-表的位址,並最終通過**定址找到所需的資料。zookeeper不僅能夠幫助維護當前的集群中機器的服務狀態,而且能夠幫助選出乙個「總管」讓這個「總管」來管理集群。
③master主伺服器:它主要負責表和region的管理工作。
④region伺服器:它是hbase中最核心的模組,負責維護分配給自己的region,並相應使用者的讀寫請求。
HBase分布式資料庫
hbase是乙個分布式的 面向列的開源資料庫,該技術 於changetal所撰寫的google bigtable 乙個結構化資料的分布式儲存系統 高可靠性 高效能 面向列 可伸縮 hbase hadoop database hdfs為hbase提供高可靠底層儲存支援 mapreduce為hbase提...
分布式資料庫HBase簡介
hbase 是乙個面向列的分布式資料庫。hbase 不是乙個關係型資料庫,其設計目標是用來解決關係型資料庫在處理海量資料時的理論和實現上的侷限性。傳統關係型資料庫在上世紀七十年代為交易系統設計,以滿足資料一致性 acid 為目標,並沒有考慮資料規模擴大時的擴充套件性,以及單點系統失效時的可靠性。雖然...
分布式資料庫HBase簡介
hbase 是乙個面向列的分布式資料庫。hbase 不是乙個關係型資料庫,其設計目標是用來解決關係型資料庫在處理海量資料時的理論和實現上的侷限性。傳統關係型資料庫在上世紀七十年代為交易系統設計,以滿足資料一致性 acid 為目標,並沒有考慮資料規模擴大時的擴充套件性,以及單點系統失效時的可靠性。雖然...