Hbase概念:高可靠、高性能、面向列、可伸縮的分布式存儲系統(tǒng),可以存儲海量數(shù)據(jù)并對海量數(shù)據(jù)進行檢索。利用HBase 技術(shù)可在廉價PC 上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。HBase使用HDFS 作為底層文件存儲系統(tǒng),在其上可以運行MapReduce 批量處理數(shù)據(jù),使用ZooKeeper 作為協(xié)同服務組件。
HBase 的特性:HBase 還是一種非關(guān)系型數(shù)據(jù)庫,即NoSQL 數(shù)據(jù)庫。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.容量巨大 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HBase 的單表可以有百億行、百萬列,數(shù)據(jù)矩陣橫向和縱向兩個維度所支持的數(shù)據(jù)量級都非常具 ?有彈性。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2. 面向列 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HBase 是面向列的存儲和權(quán)限控制,并支持列獨立檢索。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3. 擴展性? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HBase 底層文件存儲依賴HDFS,從“基因”上決定了其具備可擴展性。HBase 的Region 和RegionServer 的概念對應的數(shù)據(jù)可以分區(qū),分區(qū)后數(shù)據(jù)可以位于不同的機器上,所以在HBase 核心架構(gòu)層面也具備可擴展性。HBase 的擴展性是熱擴展,在不停止現(xiàn)有服務的前提下,可以隨時添加或者減少節(jié)點。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4. 高可靠性 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HBase 提供WAL 和Replication 機制。前者保證了數(shù)據(jù)寫入時不會因集群異常而導致寫入數(shù)據(jù)的丟失;后者保證了在集群出現(xiàn)嚴重問題時,數(shù)據(jù)不會發(fā)生丟失或者損壞。而且HBase 底層使用HDFS,HDFS 本身的副本機制很大程度上保證了HBase 的高可靠性。同時,協(xié)調(diào)服務的ZooKeeper 組件具備高可用性和高可靠性。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5. 高性能 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 底層的LSM 數(shù)據(jù)結(jié)構(gòu)和Rowkey 有序排列等架構(gòu)上的獨特設計,使得HBase 具備非常高的寫入性能。Region 切分、主鍵索引和緩存機制使得HBase 在海量數(shù)據(jù)下具備一定的隨機讀取性能,該性能針對Rowkey 的查詢能夠達到毫秒級別。同時,HBase 對于高并發(fā)的場景也具備很好的適應能力。
Hbase與Hadoop/HDFS:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HBase 使用HDFS 作為底層存儲系統(tǒng)。HBase 在 HDFS 之上通過更加復雜的“數(shù)據(jù)結(jié)構(gòu)和算法”提供了高并發(fā)實時隨機寫和高并發(fā)實時點讀及掃描的特性,實現(xiàn)了高效的隨機讀寫功能。如LSM(內(nèi)存+順序?qū)懘疟P)的方式。
Hbase與傳統(tǒng)數(shù)據(jù)庫:
關(guān)系型數(shù)據(jù)庫 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Hbase
支持向上擴展(服務器升級) ? ? ? ? ? ?支持向外擴展 (添加新的服務器)
使用SQL查詢 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 使用API和MapReduce訪問數(shù)據(jù)
面向行? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 面向列(為聚集存儲設計更好的壓縮和解壓算法)
適合結(jié)構(gòu)化數(shù)據(jù) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?適合結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)
當有海量數(shù)據(jù)需要處理時,可以選擇Hbase
Hbase在進行JOIN和多表合并時查詢性能不好。
Hbase架構(gòu)設計

客戶端Client
整個集群的訪問入口 ,使用HBase的RPC機制與HMaster和HRegionServer進行通信。對于管理類操作,Client 與HMaster 進行RPC 通信;對于數(shù)據(jù)讀寫類操作,Client 與RegionServer 進行RPC 交互。包含訪問HBase的接口,并維護cache來加強對HBase的訪問。
協(xié)調(diào)服務組件ZooKeeper
ZooKeeper Quorum(隊列)負責管理HBase 中多HMaster 的選舉、服務器之間狀態(tài)同步等。HBase 中ZooKeeper 實例存儲HBase 元數(shù)據(jù)信息、實時監(jiān)控RegionServer、存儲所有Region 的尋址入口.保證任何時候集群中只有一個HMaster。
主節(jié)點HMaster
HMaster沒有單節(jié)點問題,Hbase中可以啟動多個HMaster,通過Zookeeper的Master Election 機制保證總有一個Master在運行,主要負責Table和Region的管理工作。管理用戶對表的增刪查改操作。管理HRegionServer的負載均衡,調(diào)整Region分布。Region Split之后,負責新Region的分布。在HRegionServer停機后,負責失效HRegioinServer上Region遷移工作。
Region 節(jié)點HRegionServer
HRegionServer 主要負責響應用戶I/O 請求,向HDFS 文件系統(tǒng)中讀寫數(shù)據(jù)。
HBase 存儲





HStore 存儲是HBase 存儲的核心, 由兩部分組成:MemStore 和StoreFile。MemStore 是Sorted Memory Buffer,用戶寫入的數(shù)據(jù)首先會放入MemStore 中,當MemStore 滿了以后會緩沖(flush)成一個StoreFile(底層實現(xiàn)是HFile,只有當storeFile滿了之后才會將數(shù)據(jù)存儲到HFile),當StoreFile 文件數(shù)量增長到一定閾值,會觸發(fā)Compact 操作,將多個StoreFiles 合并成一個StoreFile,在合并過程中會進行版本合并和數(shù)據(jù)刪除,因此可以看出HBase 其實只有增加數(shù)據(jù),所有的更新和刪除操作都是在后續(xù)的Compact 過程中進行的,這使得用戶的寫操作只要進入內(nèi)存中就可以立即返回,保證了HBase I/O 的高性能。StoreFiles 在觸發(fā)Compact 操作后,會逐步形成越來越大的StoreFile,當單個StoreFile大小超過一定閾值后,會觸發(fā)Split 操作,同時把當前Region 分裂成2 個Region,父Region會下線,新分裂的2 個子Region 會被HMaster 分配到相應的HRegionServer 上,使得原先1個Region 的壓力得以分流到2 個Region 上。每個Region除了包含多個store外,還包含一個HLOG(預寫式日志(WAL),HBase在寫動作完成之前先寫入到WAL,這樣如果內(nèi)存中的數(shù)據(jù)還沒有寫入到硬盤上就發(fā)生了崩潰,可以根基HLOG進行恢復。