HBase架構概述

2018-05-08 14:34 更新

HBase架構概述

NoSQL

HBase是一種“NoSQL”數據庫?!癗oSQL”是一個通用術語,意思是數據庫不是支持SQL作為其主要訪問語言的RDBMS,但是有許多類型的NoSQL數據庫:BerkeleyDB是本地NoSQL數據庫的一個例子,而HBase是一個分布式數據庫。從技術上講,HBase實際上更像是一個“數據存儲”而不是“數據庫”,因為它缺少在RDBMS中找到的許多功能,例如鍵入列,二級索引,觸發(fā)器和高級查詢語言等。

但是,HBase具有很多支持線性和模塊化縮放的功能。通過添加商品類服務器上托管的RegionServers來擴展HBase集群。例如,如果一個集群從10個擴展到20個RegionServers,則它在存儲和處理能力方面都會翻倍。RDBMS可以很好地擴展,但只能達到某一點 - 具體而言就是單個數據庫服務器的大小 - 并且為了獲得最佳性能,需要專門的硬件和存儲設備。HBase的特點是:

  • 一致的讀/寫:HBase不是“最終一致的”DataStore。這使它非常適合諸如高速計數器聚合之類的任務。
  • 自動分片:HBase表通過區(qū)域分布在集群上,隨著數據增長,區(qū)域會自動分割和重新分配。
  • 自動RegionServer故障切換
  • Hadoop/HDFS集成:HBase支持HDFS作為其分布式文件系統(tǒng)。
  • MapReduce:HBase支持通過MapReduce進行大規(guī)模并行處理,以便將HBase用作源和接收器。
  • Java客戶端API:HBase支持易于使用的Java API進行編程式訪問。
  • Thrift/REST API:HBase還支持非Java前端的Thrift和REST。
  • 塊緩存和Bloom過濾器:HBase支持塊緩存和Bloom過濾器,以實現(xiàn)高容量查詢優(yōu)化。
  • 操作管理:HBase提供內置的網頁以提供運營洞察力以及JMX指標。

何時使用HBase

HBase不適合所有問題。

首先,確保你有足夠的數據。如果你有數億或數十億行,那么HBase是一個很好的選擇。如果只有幾千行,那么使用傳統(tǒng)的RDBMS可能是一個更好的選擇,因為所有數據都可能在單個節(jié)點(或兩個)上,而群集的其余部分可能處于閑置狀態(tài)。

其次,確保您可以在沒有RDBMS提供的所有額外功能的情況下生存(例如,鍵入列,二級索引,事務,高級查詢語言等)。針對RDBMS構建的應用程序無法通過簡單更改而“移植”到HBase,例如,一個JDBC驅動程序??紤]從RDBMS轉移到HBase作為一個完整的重新設計,而不是一個端口。

第三,確保你有足夠的硬件。即使是HDFs也不能很好地處理少于5個的數據流(由于HDFS塊復制的默認值為3),加上NAMENODE。

HBase可以在筆記本電腦上獨立運行 - 但這應該只被視為一種開發(fā)配置。

HBase和Hadoop / HDFS有什么區(qū)別?

HDFS是一個非常適合存儲大型文件的分布式文件系統(tǒng)。它的文檔指出,它不是一個通用的文件系統(tǒng),也沒有在文件中提供快速的單個記錄查找。另一方面,HBase建立在HDFS之上,為大型表提供快速記錄查找(和更新)。這有時會成為概念混淆的一個觀點。HBase內部將您的數據放入HDFS上的索引“StoreFiles”中進行高速查找。有關HBase如何實現(xiàn)其目標的更多信息,請參閱數據模型和本章的其余部分。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號