Java進階學習資料丨HBase特徵簡要

一、 什麼是HBase?

Apache HBase™是Hadoop數據庫,一個分佈式、可伸縮的大數據存儲。當需要對大數據進行隨機、實時的讀寫訪問時,可選擇使用Apache HBase™。該項目的目標是在普通硬件集羣上託管非常大的表(數十億行X數百萬列)。Apache HBase是一種開源的、分佈式的、版本化的、非關係數據庫,它模仿了谷歌的Bigtable:一個用於結構化數據的分佈式存儲系統。正如Bigtable利用了谷歌文件系統提供的分佈式數據存儲一樣,Apache HBase在Hadoop和HDFS之上提供了類似於Bigtable的功能。

 

二、HBase特徵簡要

自動故障處理和負載均衡

HBase運行在HDFS上,所以HBase中的數據以多副本形式存放,數據也服從分佈式存放,數據的恢復也可以得到保障。另外,HMaster和RegionServer也是多副本的。

 

自動分區

HBase表是由分佈在多個RegionServer中的region組成的,這些RegionServer又分佈在不同的DataNode上,如果一個region增長到了一個閾值,爲了負載均衡和減少IO,HBase可以自動或手動干預的將region切分爲更小的region,也稱之爲subregion。

 

集成Hadoop/HDFS

雖然HBase也可以運行在其他的分佈式文件系統之上,但是與HDFS結合非常之方便,而且HDFS也非常之流行。

 

實時隨機大數據訪問

HBase採用log-structured merge-tree作爲內部數據存儲架構,這種架構會週期性地將小文件合併成大文件以減少磁盤訪問同時減少NameNode壓力。

 

MapReduce

HBase內建支持MapReduce框架,更加方便快速,並行的處理數據。

 

Java API

HBase提供原聲的Java API支持,方便開發。

 

橫向擴展

HBase支持橫向擴展,這就意味着如果現有服務器硬件性能出現瓶頸,不需要停掉現有集羣提升硬件配置,而只需要在現有的正在運行的集羣中添加新的機器節點即可,而且新的RegionServer一旦建立完畢,集羣會開始重新調整。

 

列存儲

HBase是面向列存儲的,每個列都單獨存儲,所以在HBase中列是連續存儲的,而行不是。

 

HBase Shell

HBase提供了交互式命令行工具可以進行創建表、添加數據、掃描數據、刪除數據等操作和其他一些管理命令。

 

三、基於Hadoop的HBase架構

Java進階學習資料丨HBase特徵簡要

 

HBase內置有zookeeper,但一般我們會有其他的Zookeeper集羣來監管master和regionserver,Zookeeper通過選舉,保證任何時候,集羣中只有一個活躍的HMaster,HMaster與HRegionServer 啓動時會向ZooKeeper註冊,存儲所有HRegion的尋址入口,實時監控HRegionserver的上線和下線信息。並實時通知給HMaster,存儲HBase的schema和table元數據,默認情況下,HBase 管理ZooKeeper 實例,Zookeeper的引入使得HMaster不再是單點故障。一般情況下會啓動兩個HMaster,非Active的HMaster會定期的和Active HMaster通信以獲取其最新狀態,從而保證它是實時更新的,因而如果啓動了多個HMaster反而增加了Active HMaster的負擔。

 

一個RegionServer可以包含多個HRegion,每個RegionServer維護一個HLog,和多個HFiles以及其對應的MemStore。RegionServer運行於DataNode上,數量可以與DatNode數量一致,請參考如下架構圖:

Java進階學習資料丨HBase特徵簡要

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