HBASE-HBase概述

什麼是HBase?

HBase是一種非關係型數據庫(NoSQL)。 “NoSQL"是一個通用詞表示數據庫不是RDBMS(關係型數據庫管理系統),後者支持 SQL 作爲主要訪問手段。有許多種 NoSQL 數據庫: BerkeleyDB 是本地 NoSQL 數據庫例子, 而 HBase 是大型分佈式數據庫。 從技術上來說, HBase 更像是"數據存儲(Data Store)” 多於 “數據庫(Data Base)”。因爲缺少很多RDBMS特性, 如列類型,第二索引,觸發器,高級查詢語言等.

然而, HBase 有許多特徵同時支持線性化和模塊化擴充。 HBase 集羣通過增加RegionServers進行擴充。 它可以放在普通的服務器中。

HBase 特性:
大:一個表可以有數十億行,上百萬列;
無模式:每行都有一個可排序的主鍵和任意多的列,列可以根據需要動態的增加,同一張表中不同的行可以有截然不同的列;
面向列:面向列(族)的存儲和權限控制,列(族)獨立檢索;
稀疏:對於空(null)的列,並不佔用存儲空間,表可以設計的非常稀疏;
數據多版本:每個單元中的數據可以有多個版本,默認情況下版本號自動分配,是單元格插入時的時間戳;
數據類型單一:Hbase中的數據都是字符串,沒有類型。這讓它很適合高速計數聚合類任務。
自動分區: HBase 表通過region分佈在集羣中。數據增長時,region會自動分割並重新分佈。
RegionServer 自動故障轉移
Hadoop/HDFS 集成: HBase 支持本機外HDFS 作爲它的分佈式文件系統。
MapReduce: HBase 通過MapReduce支持大併發處理, HBase 可以同時做源和目標.

什麼時候用 HBase?

HBase不適合所有問題.

首先,確信有足夠多數據,如果有上億或上百億行數據,HBase是很好的備選。 如果只有上千或上百萬行,則用傳統的RDBMS可能是更好的選擇。因爲所有數據可以在一兩個節點保存,集羣其他節點可能閒置。

其次,確信可以不依賴所有RDBMS的額外特性 (列數據類型, 第二索引, 事物,高級查詢語言等.) 一個建立在RDBMS上應用,如不能僅通過改變一個JDBC驅動移植到HBase。相對於移植, 需考慮從RDBMS 到 HBase是一次完全的重新設計。

第三, 確信你有足夠硬件。

HBase的重要進程

HMaster:
管理meta表還其他表結構命名空間
管理Hregionserver
接收客戶端請求
表的創建和刪除
一般和namenode在一個節點上
HRegionserver
管理region拆分合並
memstore寫入Hfile
表級操作
負載均衡
一般和datanode在同一節點上

memstore
數據默認存到內存memstore
memstore達到閥值把數據存到本地Hfile中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章