Apache HBase 的基本知識
2006 年 11 月,Google 發表了一篇名為《 BigTable 》論文 , 2007 年 2 月,Hadoop 的開發人員對其進行實現並命名為 HBase。 HBase 是基於 Hadoop 之上的一種新型的基於列儲存的開來源資料儲存架構,用於解決大資料問題,是 Hadoop 的分散式資料庫。
HBase 現在已經比較成熟,最新的穩定版本是 0.94.x。HBase 已經被很多大公司採用,如 Facebook, Twitter,Adobe, Cloudera, IBM, 等等。HBase 不是傳統 RDBMS 意義上的基於列的資料庫,而是利用磁碟進行列儲存格式的資料庫,其優勢在於提供基於關鍵字的特定列和順序範圍的快速存取。
HBase 有三個重要的組件:用戶端庫,一個 master server可以配置多個備用 master,後文將對此進行詳細描述)以及多個 Region Server。Master 負責分配 Region 到各個不同的 Region Server 上,Region Server 負責儲存實際的資料。同時,HBase 通過使用 ZooKeeper,一種可靠,高可用,一致性的分布式協同服務來協助其完成相應的任務。HBase 叢集管理員可以通過在系統運行過程中添加和刪除 Region Server 節點來調節改變工作負載。HBase 以 HFile 作為儲存資料的基本格式,其底層的檔案系統預設採用 HDFS。
圖 1. HBases 基本架構
圖 1. 顯示了不同的組件如 HDFS,Zookeeper 是怎樣與 HBase 一起協調工作的。Master Server 負責處理跨 Region Server 的 regions 資料的匯入平衡,卸載繁忙的 Region Server 負擔,將 region 轉移到更空餘的 Region Server 上。
HBase Master 不負責實際的資料存放區,它協調匯入平衡,維護叢集的狀態,維護 schema 的更改和 metadata 中繼資料操作,如建立表和列族column families),但從不提供任何資料服務。
Region servers 負責載入和維護 region,包括處理對其管理的 region 的所有讀寫請求,以及 region 大小增長到超過配置閥值的時候對其進行切分。
用戶端通過與 Zookeeper 通訊擷取到其需要進行讀寫操作的 region 所在的 Region Server 之後,將直接與 Region Server 通訊,並由 Region Server 處理所有相關的請求。