《Hbase權威指南》深入學習一:認識hbase
來源:互聯網
上載者:User
關鍵字
nbsp;
可以
提供
認識
《Hbase權威指南》深入學習一:認識hbase 博客分類: HbaseHadoop hbasehadoopnosql 一、hbase是什麼?
首先hbase是一個在Hadoop的HDFS分散式存儲系統上介於映射(key/value)的nosql的分散式資料庫,有以下特性:
1、提供隨機、即時讀寫查詢,由hbase的架構和LSM—Tree資料結構保證;
2、高容錯,該特性是由HDFS保證;
3、分散式和線性擴展;
4、面向列和存儲鬆散資料;
5、存儲的資料可以有多版本;
6、可配置的表的制動切分功能;
7、節點自動故障恢復和選舉機制,由ZooKeeper提供該功能;
8、可以方便的為MapReduce、hive和pig等繼承。
hbase是hadoop的整個生態系統上一個重要的組成部分,他彌補了hadoop只能提供高延時的批次處理的MapReduce功能,他對app向下提供了存儲,向上又提供即時運算和查詢 ;另外又可以使用MapReduce的平行計算模型進行大規模的資料處理,hbase將資料存儲和平行計算、即時與批次處理幾乎完美的結合了起來。
二、hbase集群中的節點分類和通信
hbase集群中的節點分為HMaster Server和HRegion Server兩種,採用Master-Slave的模式,但是不像hadoop中的集群那樣有單點故障的問題。
hbase cluster中的節點是通過ZooKeeper集群來通信的,由ZooKeeper來監聽hbase集群中的節點的狀態。
hbase集群可以設置多個HMaster Server節點,但是同一時刻只能有一個處於啟動狀態提供服務的節點,HMaster節點沒有單點故障的問題, 當ZooKeeper集群會在一個監聽週期內監聽到正處於服務狀態的HMaster當機後,ZooKeeper集群會通過選舉機制來選舉出另外一個HMaster節點為整個hbase集群提供服務, ZooKeeper總能保證hbase集群中總有一個HMaster可用;ZooKeeper會監聽HRegion Server的狀態,並提供故障節點的自動故障恢復功能。
由於hbase集群中的節點狀態及節點間的通信是有ZooKeeper提供的,故必須單獨建立一個
ZooKeeper集群。
三、hbase集群中的節點的作用
hbase主要負責hbase table和HRegion Server的管理工作,包括一下幾點:
1、管理HRegion Server伺服器的負載均衡,調整HRegion中HRegion Server中的分別,以避免有hot HRegion;
2、在region分裂後,負責新的HRegion的分配;
3、當某個HRegion Server當機或停機後,負責失效HRegion伺服器上的HRegion的遷移。
HRegion Server主要功能為以下幾個方面:
1、負責回應使用者請求(即對HTable的增、刪、改查等操作);
2、負責HRegion Server中HFile的合併作業,包括Minor和major comparison兩種策略;
3、HRegion的自動水準分割。
四、hbase和RDBMS傳統資料庫的區別
1、存儲模式:hbase是基於列的存儲模式,一個表可以有多個列組,創建HTable時必須保存列組——相當於傳統資料庫中的表結構,分列組保持資料,不同的列組的存儲檔時分離的;RDBMS是基於行模式的表格存儲結構;
2、可伸縮性:hbase天然具有高伸縮性,可以方便的在增減集群節點的同時,保證高容錯性,而創痛的RDBMS資料庫提高高伸縮性比較困難;
3、事務性:hbase不是具有事務性,而RDBMS是具有事務性的資料庫;
4、存儲資料量:hbase可以很容易的存儲T或P級以上的資料,而RDBMS比價適合存儲G及的資料;
5、資料操作:hbase只能處理很簡單的增刪改查操作,表和表是分離的,沒有複雜的表和表之間的關係,也不能做表之間的關聯操作;而傳統的RDBMS資料庫通常有豐富的表間連接操作和各種函數;
6、資料類型:hbase只能存儲簡單的字串類型,所有的類型轉換都交由使用者端處理,而hbase只存儲字串;而關聯式資料庫有豐富的資料類型;
7、資料存儲的多版本機制:hbase中存儲的資料可以有多個版本;而關聯式資料庫則沒有;
8、資料維護:確切的說,hbase沒有更新操作,由於其可以維護多個版本的機制,他的更新操作實際上是插入新的資料,而就得版本還會存在;而RDBMS傳統資料庫的修改操作是直接修改了資料本身。