Hbase概念:高可靠诗赌、高性能、面向列秸弛、可伸縮的分布式存儲系統(tǒng)铭若,可以存儲海量數(shù)據(jù)并對海量數(shù)據(jù)進行檢索。利用HBase 技術可在廉價PC 上搭建起大規(guī)模結構化存儲集群递览。HBase使用HDFS 作為底層文件存儲系統(tǒng)叼屠,在其上可以運行MapReduce 批量處理數(shù)據(jù),使用ZooKeeper 作為協(xié)同服務組件绞铃。
HBase 的特性:HBase 還是一種非關系型數(shù)據(jù)庫镜雨,即NoSQL 數(shù)據(jù)庫。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.容量巨大 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HBase 的單表可以有百億行儿捧、百萬列荚坞,數(shù)據(jù)矩陣橫向和縱向兩個維度所支持的數(shù)據(jù)量級都非常具 ?有彈性。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2. 面向列 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HBase 是面向列的存儲和權限控制菲盾,并支持列獨立檢索颓影。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3. 擴展性? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HBase 底層文件存儲依賴HDFS,從“基因”上決定了其具備可擴展性懒鉴。HBase 的Region 和RegionServer 的概念對應的數(shù)據(jù)可以分區(qū)诡挂,分區(qū)后數(shù)據(jù)可以位于不同的機器上,所以在HBase 核心架構層面也具備可擴展性。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ù)結構和Rowkey 有序排列等架構上的獨特設計,使得HBase 具備非常高的寫入性能甸饱。Region 切分沦童、主鍵索引和緩存機制使得HBase 在海量數(shù)據(jù)下具備一定的隨機讀取性能,該性能針對Rowkey 的查詢能夠達到毫秒級別叹话。同時偷遗,HBase 對于高并發(fā)的場景也具備很好的適應能力。
Hbase與Hadoop/HDFS:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HBase 使用HDFS 作為底層存儲系統(tǒng)驼壶。HBase 在 HDFS 之上通過更加復雜的“數(shù)據(jù)結構和算法”提供了高并發(fā)實時隨機寫和高并發(fā)實時點讀及掃描的特性氏豌,實現(xiàn)了高效的隨機讀寫功能。如LSM(內(nèi)存+順序寫磁盤)的方式热凹。
Hbase與傳統(tǒng)數(shù)據(jù)庫:
關系型數(shù)據(jù)庫 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Hbase
支持向上擴展(服務器升級) ? ? ? ? ? ?支持向外擴展 (添加新的服務器)
使用SQL查詢 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 使用API和MapReduce訪問數(shù)據(jù)
面向行? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 面向列(為聚集存儲設計更好的壓縮和解壓算法)
適合結構化數(shù)據(jù) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?適合結構化和非結構化數(shù)據(jù)
當有海量數(shù)據(jù)需要處理時泵喘,可以選擇Hbase
Hbase在進行JOIN和多表合并時查詢性能不好。
Hbase架構設計
客戶端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進行恢復载庭。