來源:北大青鳥總部 2023年06月07日 13:26
說起Hadoop,玩大數據的沒有一個不知道,Hadoop是由Apache基金會所開發(fā)的一個分布式系統(tǒng)基礎架構,包含分布式文件系統(tǒng)HDFS(HadoopDistributed FileSystem)、分布式計算框架MapReduce、HIve數據倉庫、Avro序列化工具等。而今天我們要給大家介紹一位新朋友Hbase,它是基于HDFS的非關系型大數據(非常適合存儲,因為可以像HDFS一樣做到存儲的線性擴容,無論多少數據都可以存儲;)
Hbase數據庫繼承了Hadoop家族的良好基金,它是用來存儲海量數據的,百萬以下的數據量就不要打擾它了。既然是存儲使用使用,那么它是如何做數據存儲的呢?為了大家更好的理解概念,我們與同一個數據在傳統(tǒng)的關系型數據庫如Mysql中的存儲做對比進行理解?,F在我們來存儲學生張三和李四的信息,包含編號、姓、名、密碼、學號,在Mysql中會分成兩行五列存儲。
而在HBase中則會將數據從邏輯上分為三部分,第一部分為rowkey唯一標識(即Mysql中的主鍵),第二部分則把相同屬性的內容劃分到同一個Column-Family中,比如姓名、賬號,每一個Column-Family就是一個Qualifier,而里面具體的值就是CellValue。在下表(邏輯關系)中Rowkey是1,CF是姓名屬性、賬號屬性,Qualifier是info、pwd,Value是張、三、20160719、111。
在Hbase中物理存儲如下,Version代表的是版本,在Hbase中允許一個值有多個版本,通過Version號來標記。將上面的邏輯數據拆解后,如下圖所示,hbase會進行如下存儲。從存儲方式來看,一個CF對應一個HFile,而HFile在HDFS分布式文件系統(tǒng)中,是可以無限擴張,因此Hbase的存儲能力也可以無限擴張。細心的朋友不要以為HFile只能存儲在HDFS上噢,它其實在本地的文件系統(tǒng)也可以存儲使用,只不過就是存儲能力有限,無法擴展而已。
介紹完了Hbase的數據存儲模式,我們來看看它的架構圖,在Hbase中從上往下包含API、Master節(jié)點、RegionServer、Region、HDFS五大部分,在實際使用過程中使用分布式協(xié)調器Zookeeper來協(xié)調MasterServer的負載,確保使用Hbase是處于工作狀態(tài)。
在Hbase中Master節(jié)點是用來協(xié)調多個Regionserver節(jié)點的,確保RegionServer是處于工作狀態(tài)。而為了保證系統(tǒng)的高可用,也要確保Master節(jié)點不能掛掉啊,因此Zookeeper會來做Master節(jié)點的整體監(jiān)控,當有Master節(jié)點掛掉時,選舉出新的Master節(jié)點來接管工作。
Regionserver包含多個Region,用于管理表格、讀寫數據,通過對外提供API可以直接獲取Region的數據,Region則是真正存儲數據的地方,一般一個Region對應一個CF,但是當表格數據很大由多個CF組成時,就會存儲在多個Region中,通過存儲單元Store關聯起來。同時Zookeeper也會管理多個Regionserver之間的協(xié)調調度。
下圖是Hbase工作的原理圖,從圖上我們看到RegionServer還包含WAL、Memstore、Hfile幾部分。WAL是HBase為了保障數據一致性的一個設計,為了提高數據讀寫性能,并且保證數據準確,HBase會把數據先寫入到內存,但內存并不是一直可靠啊,萬一斷電了數據全沒了,因此在寫入內存時,也會寫一份日志,當內存掛掉時,通過日志的數據可以知道內容,實現數據恢復。寫入到內存的數據一般放在Memstore中,然后再定期的把Memstore的數據存儲在磁盤,然后清空Memstore。HFile就是Hbase最終存儲數據的實體了,本質上也就是HDFS的一個文件,一個CF存儲在一個HFile中。
本文介紹了HBase數據庫,它與Hive、Mysql還是不太一樣噢,Hive專注于數據分析,底層依靠的更多是MapReduce的計算能力,而Mysql是關系型數據庫,主要聚焦在事務的ACID(原子性、一致性、持久性、),Hbase則更多的是聚焦在數據的存儲方便。如果你的數據足夠多,上億萬的數據才考慮使用Hbase,數據量太小反而是發(fā)揮不出優(yōu)勢,也沒辦法做數據的其他處理。在決定使用Hbase之前,要確保硬件條件到位,一般來說HDFS集群的數據節(jié)點少于5個時,基本也等于雞肋,相當于擺好了一個大陣仗,飛機坦克步兵炮兵全上了,以為是來了一個連的敵人,結果只來了一個班。
不過總的來說Hbase還是非常優(yōu)秀的一款大數據,在很多互聯網公司的信息存儲都使用Hbase,在流數據存儲、實時計算時,Hbase也是很好的選擇,相信今天大家了解了Hbase數據之后,可以更好的將Hbase使用在業(yè)務當中,輸出更好的大數據解決方案。