HBase结构
?
Pig,可以使用Pig Latin流式編程語言來操作HBase中的數(shù)據(jù) Hive,可以使用類似SQL語言來訪問HBase,最終本質(zhì)是編譯成MapReduce Job來處理HBase表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計(jì)。1.什么是HBase
HBase是一個(gè)在Hadoop上開發(fā)的面向列(同類軟件還有Cassandra和HyperTable)的分布式數(shù)據(jù)庫。 利用HDFS作為其文件存儲(chǔ)系統(tǒng) 利用MapReduce來處理HBase中的海量數(shù)據(jù) 利用Zookeeper作為協(xié)同服務(wù),主要用于實(shí)時(shí)隨機(jī)讀/寫超大規(guī)模數(shù)據(jù)集 HBase并不是關(guān)系型數(shù)據(jù)庫,它不支持SQL,但它能夠做RDBMS不能做的事;2.HBase的特點(diǎn)
面向列:列的動(dòng)態(tài)、無限擴(kuò)展 —— 內(nèi)容評(píng)論的擴(kuò)展,同類數(shù)據(jù)集中存儲(chǔ)便于壓縮 稀疏表:有數(shù)據(jù)時(shí)這個(gè)單元格才存在 —— 節(jié)省空間3.HBase表格示意圖
? Row Key: 行鍵,Table的主鍵,Table中的記錄按照Row Key排序 ? Timestamp: 時(shí)間戳,每次數(shù)據(jù)操作對應(yīng)的時(shí)間戳,可以看作是數(shù)據(jù)的version number ? Column Family:列簇,Table在水平方向有一個(gè)或者多個(gè)Column Family組成,一個(gè)Column Family中可以由任意多個(gè)Column組成,即Column Family支持動(dòng)態(tài)擴(kuò)展,無需預(yù)先定義Column的數(shù)量以及類型,所有Column均以二進(jìn)制格式存儲(chǔ),用戶需要自行進(jìn)行類型轉(zhuǎn)換。4.HBase的組件構(gòu)成
HMaster (HA),負(fù)責(zé)Table和Region的管理工作 1、建表、刪表、查看表格屬性; 2、管理RegionServer負(fù)載均衡,調(diào)整Region分布; 3、Region Split后,負(fù)責(zé)新Region的分配; 4、在RegionServer失效后,負(fù)責(zé)失效節(jié)點(diǎn)上的Regions遷移; RegionServer(x N),主要負(fù)責(zé)響應(yīng)用戶I/O請求,向HDFS文件系統(tǒng)中讀寫數(shù)據(jù)?
5.HBase中表格的存儲(chǔ)
一張表存儲(chǔ)在[1-N)個(gè)HRegion中,每個(gè)HRegion保存某張表RowKey連續(xù)的一段記錄。?
建表時(shí)可以預(yù)劃分HRegion——提高并行度,進(jìn)而提升讀寫速度 否則初始表存在單一HRegion中,隨著數(shù)據(jù)增大HRegion會(huì)分裂為多個(gè)HRegion HBase中有兩張?zhí)厥獾腡able,-ROOT-和.META. ? ?.META.:記錄了用戶表的Region信息,.META.可以有多個(gè)regoin ? ?-ROOT-:記錄了.META.表的Region信息,-ROOT-只有一個(gè)region ? ?Zookeeper中記錄了-ROOT-表的location?
首先 HBase Client端會(huì)連接Zookeeper Qurom 通過 Zookeeper組件Client 能獲知哪個(gè) RegionServer管理-ROOT- Region 。 那么Client就去訪問管理 -ROOT-的HRegionServer ,在META中記錄了 HBase中所有表信息,(你可以使用 ? scan '.META.' 命令列出你創(chuàng)建的所有表的詳細(xì)信息 ),從而獲取Region 分布的信息。一旦 Client獲取了這一行的位置信息,比如這一行屬于哪個(gè) Region,Client 將會(huì)緩存這個(gè)信息并直接訪問 HRegionServer。 久而久之Client 緩存的信息漸漸增多,即使不訪問 .META.表 也能知道去訪問哪個(gè) HRegionServer。6.HBase讀數(shù)據(jù)
HBase讀取數(shù)據(jù)優(yōu)先讀取HMemcache中的內(nèi)容,如果未取到再去讀取Hstore中的數(shù)據(jù),提高數(shù)據(jù)讀取的性能。7.HBase寫數(shù)據(jù)
HBase寫入數(shù)據(jù)會(huì)寫到HMemcache和Hlog中,HMemcache建立緩存,Hlog同步Hmemcache和Hstore的事務(wù)日志,發(fā)起Flush Cache時(shí),數(shù)據(jù)持久化到Hstore中,并清空HMemecache。 下圖展示了MapReduce的數(shù)據(jù)處理流程,其中一個(gè)Map-Reduce step的輸出將作為下一個(gè)典型Hadoop job的輸入結(jié)果。?
在整個(gè)過程中,中間結(jié)果會(huì)借助磁盤傳遞,因此對比計(jì)算,大量的Map-Reduced作業(yè)都受限于IO。然而對于ETL、數(shù)據(jù)整合和清理這樣的用例來說,IO約束并不會(huì)產(chǎn)生很大的影響,因?yàn)檫@些場景對數(shù)據(jù)處理時(shí)間往往不會(huì)有較高的需求。然而,在現(xiàn)實(shí)世界中,同樣存在許多對延時(shí)要求較為苛刻的用例轉(zhuǎn)載于:https://www.cnblogs.com/wzj4858/p/7918791.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: 【转】c# [Serializable]
- 下一篇: 怎么调整磁盘分区的大小