您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何理解大數(shù)據(jù)時代的結構化存儲數(shù)據(jù)庫HBase,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
Hbase非常適合于非結構化數(shù)據(jù)存儲的數(shù)據(jù)庫,2006年底由PowerSet 的Chad Walters和Jim Kellerman 發(fā)起,2008年成為Apache Hadoop的一個子項目?,F(xiàn)已作為產(chǎn)品在多家企業(yè)被使用。
分布式數(shù)據(jù)庫 HBase
授權協(xié)議:Apache
開發(fā)語言:Java
操作系統(tǒng):跨平臺
項目地址:https://github.com/apache/hbase
HBase項目簡介
HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用HBase技術可在廉價PC Server上搭建起大規(guī)模結構化存儲集群。
HBase是Google Bigtable的開源實現(xiàn),類似Google Bigtable利用GFS作為其文件存儲系統(tǒng),HBase利用Hadoop HDFS作為其文件存儲系統(tǒng);Google運行MapReduce來處理Bigtable中的海量數(shù)據(jù),HBase同樣利用Hadoop MapReduce來處理HBase中的海量數(shù)據(jù);Google Bigtable利用 Chubby作為協(xié)同服務,HBase利用Zookeeper作為對應。
Hbase 特性
大表:數(shù)十億行*數(shù)百萬列*數(shù)千個版本 = TB級或PB級的存儲
面向列:面向列(族)的存儲和權限控制,列(族)獨立檢索。
稀疏:對于為空(null)的列,并不占用存儲空間,因此,表可以設計的非常稀疏。
數(shù)據(jù)多版本:每個單元中的數(shù)據(jù)可以有多個版本,默認情況下版本號自動分配,是單元格插入時的時間戳;
數(shù)據(jù)類型單一:Hbase中的數(shù)據(jù)都是字符串,沒有類型
HBase系統(tǒng)架構
HBase中的組件包括Client、Zookeeper、HMaster、HRegionServer、HRegion、Store、MemStore、StoreFile、HFile、HLog等,HBase中的每張表都通過行鍵按照一定的范圍被分割成多個子表(HRegion),默認一個HRegion超過256M就要被分割成兩個,這個過程由HRegionServer管理,而HRegion的分配由HMaster管理。
相關名詞介紹
RowKey:是Byte array,是表中每條記錄的“主鍵”,方便快速查找,Rowkey的設計非常重要。表中的行根據(jù)行的鍵值進行排序,數(shù)據(jù)按照RowKey的字典序排序存儲
Column Family:列族,擁有一個名稱(string),包含一個或者多個相關列。列族須作為表模式(schema)定義的一部分預先定義。如create 'alarmInfo' ,'i'
Column:屬于某一個columnfamily,familyName:columnName,每條記錄可動態(tài)添加
Version Number:類型為Long,默認值是系統(tǒng)時間戳,可由用戶自定義
Value(Cell):由{row key, column(=<family> + <label>), version} ***確定的單元。cell中的數(shù)據(jù)是沒有類型的,全部是字節(jié)碼形式存貯。
HBase邏輯模型
HBase以表的形式存儲數(shù)據(jù)。表有行和列組成。列劃分為若干個列族(row family)
Hbase 物理模型
Table中所有行都按照row key的字典序排列;Table在行的方向上分割為多個Region;Region按大小分割的,每個表開始只有一個region,隨著數(shù)據(jù)增多,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region,之后會有越來越多的region;Region是Hbase中分布式存儲和負載均衡的最小單元,不同Region分布到不同RegionServer上。
Region雖然是分布式存儲的最小單元,但并不是存儲的最小單元。Region由一個或者多個Store組成,每個store保存一個columns family;每個Strore又由一個memStore和0至多個StoreFile組成,StoreFile包含HFile;memStore存儲在內存中,StoreFile存儲在HDFS上。
Hbase 請求過程
HBase是一個分布式數(shù)據(jù)庫,因此一張表的數(shù)據(jù)可能會分布在不同的節(jié)點中。需要注意的是 region是Hbase分布式存儲的最小單位,但region不是HBase存儲的最小單位。在HBase中,一張表會被根據(jù)行鍵值的范圍劃分為幾個region,然后不同的region將會放在不同的region服務器上,被服務器上的HRegionServer 所管理和維持。
因此我們可以推斷出,當我們發(fā)送一個查找(插入、刪除)請求時,首先客戶端能根據(jù)請求中的行鍵值去確定該行鍵值應該存儲在哪一個region上,并且該region在哪一個region服務器上(該查詢過程主要使用-ROOT-表、和.meta表,當定位到操作的region服務器的位置以后,客戶端(Client)會將該操作發(fā)送到region服務器上,然后請求操作可能會被直接執(zhí)行,也可能會進入任務隊列等待
Hbase 與RDBMS對比
為什么采用HBase?
HBase 不同于一般的關系數(shù)據(jù)庫,它是一個適合于非結構化數(shù)據(jù)存儲的數(shù)據(jù)庫.所謂非結構化數(shù)據(jù)存儲就是說HBase是基于列的而不是基于行的模式,這樣方面讀寫你的大數(shù)據(jù)內容。
HBase是介于Map Entry(key & value)和DB Row之間的一種數(shù)據(jù)存儲方式。就點有點類似于現(xiàn)在流行的Memcache,但不僅僅是簡單的一個key對應一個 value,你很可能需要存儲多個屬性的數(shù)據(jù)結構,但沒有傳統(tǒng)數(shù)據(jù)庫表中那么多的關聯(lián)關系,這就是所謂的松散數(shù)據(jù)。
簡單來說,你在HBase中的表創(chuàng)建的可以看做是一張很大的表,而這個表的屬性可以根據(jù)需求去動態(tài)增加,在HBase中沒有表與表之間關聯(lián)查詢。你只需要 告訴你的數(shù)據(jù)存儲到Hbase的那個column families 就可以了,不需要指定它的具體類型:char,varchar,int,tinyint,text等等。但是你需要注意HBase中不包含事務此類的功能。
上述內容就是如何理解大數(shù)據(jù)時代的結構化存儲數(shù)據(jù)庫HBase,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。