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