大資料儲存HBase

2021-10-08 09:02:26 字數 2491 閱讀 6053

這兩天要寫乙個方案,某單位想建乙個中心資料庫,匯聚各業務系統資料,以及各種網上抓取的預報資料。我設想是用hbase。

主要考慮點是:

1、開源

2、支援海量資料

該單位的資料量增長按規劃還是很大的,大約每天20gb+。關係型資料庫就不考慮了。rdbms本質上是單機系統,拿mysql來說吧,主從複製,讀寫分離玩得很溜,但畢竟不是分布式資料庫,資料量還是要受限於單台機器的容量。當然mysql有所謂分布式集群,但估計就是個解決方案,用乙個個單機版的mysql來湊成一堆分布式。

其他分布式資料庫吧,什麼es啦,mongodb啦,也有很多,我相信也是極好的,但須知,當今大資料時代,其實發端於google的三篇**,mapreduce,分布式檔案系統,以及bigtable。這是一套全新的分布式計算模型,相比於傳統的分布式計算模型有三大優勢:首先,它簡化了傳統的分布式計算理論,降低了技術實現的難度。其次,它可以應用在廉價的計算裝置上,只需增加計算裝置的數量就可以提公升整體的計算能力,應用成本十分低廉。最後,它被google應用在google的計算中心,取得了很好的效果,有實操的證明。但google公司沒有將自己的產品開源,因此各大軟體公司就根據這三篇**搭建自己的分布式計算系統,hadoop + hdfs + hbase是其中的佼佼者,並由於其開源特性,成為事實上的分布式計算系統的國際標準。

所以,如果要學習大資料,為什麼不用hadoop呢?

而且就這個客戶來看,我認為他們的實際情況也適合應用hbse。因為預報業務的要素非常多,比如氣溫氣壓,波向波高,等等。從設計的角度看,要素就是乙個個字段。而hbase恰恰是一款面向列儲存的資料庫。這種特點,在一次只查詢幾個欄位的情況下,效率比按行儲存的資料庫高。另乙個是支援動態增加列。

es,基於lucene。lucene十多年我就聽說過了,乙個有名的全文搜尋引擎。表現在es,就是它會自動建立許多索引。索引多,查詢快,但插入、修改慢,而且資料量膨脹。如果不是所有資料都用於查詢、分析,可以不用es。

當然這麼多的分布式資料,沒有一款是十全十美的,可以普適所有的情況,只看合不合用。我認為,當前這個客戶的情況,比較適合用hbase。

附錄:四、中心資料庫建設方案

採用 hadoop系分布式、面向列儲存資料庫hbase。

1、開源資料庫

2、分布式資料庫,由master和regionserver兩部分組成,類似於hdfs中的namenode與datanode的角色,master負責管理排程,regionserver負責儲存資料。在hbase中,表被分割成多個更小的塊然後分散的儲存在不同的regions,存放regions的地方叫regionserver。在regionserver出現意外宕機時,master會負責該regionserver上的region進行遷移,這個過程是極其短暫的,保障了服務的高可用性。

3、資料面向列儲存,有別於關係型資料庫的按行儲存

4、nosql資料庫

5、稀疏儲存,不同於傳統關係型資料庫,hbase在列資料為空的情況下,不會占用儲存空間

6、強讀寫一致性,有別於一般的分布式資料庫的「最終一致性」,適合高速的計算聚合

7、只有簡單的字元型別,型別處理工作由使用者自行進行

8、預設基於hdfs

1、支援海量資料,適合儲存pb級別、記錄數百億級的海量資料

2、高可用,規避了單點故障

3、高效能,分布式架構,快取機制,加上nosql沒有昂貴的關係正規化約束和事務一致性限制,提供了特別高效的寫入操作;讀取也能達到億級資料中毫秒級別的相應速度

4、易擴充套件,資料量累計到一定程度(可配置),hbase系統會自動對資料進行水平切分,並分配不同的伺服器來管理這些資料。同時可以簡單通過增加伺服器的方式來擴大容量。這個動態擴容過程無需停機,完全實現動態無縫無宕機擴容。

5、資料按列儲存,使得水平分割表非常容易;並且同一列的資料結構相似,儲存壓縮效率高;支援動態建立列

6、基於廉價pc伺服器,低成本

1、不適合資料量比較少的場景。如果有十億及百億行資料,hbase是乙個很好的選項,如果只有幾百萬行甚至不到的資料量,rdbms是乙個很好的選擇。

2、需要足夠的硬體資源,每個hdfs集群在少於5個節點的時候,都不能表現的很好。但伺服器可以使用廉價的pc伺服器。

3、不支援sql。但可以結合hive使用,以支援支援 join、group 等 sql 查詢語法。

綜合考慮hbase的技術特點和優缺點,尤其是hbase是乙個面向列儲存的資料庫,使得hbase作為預報業務方面的資料倉儲有著天然的優勢。眾多周知,預報業務要素眾多,可分為氣象、水文、水質等幾個大類,每個大類都包含許多要素,例如氣象的要素就有氣溫、氣壓、風、雲、降水、能見度和空氣濕度等等,大大小小,要素可能達數十項之多。如果對映為資料庫的表,這些要素都是乙個個的列(字段)。hbase作為面向列儲存的資料庫:

1、從眾多列的表中,指定若干列進行查詢的情況下,效率遠高於按行儲存的資料庫

2、支援動態增加列,給預報業務帶來靈活性

HBase資料儲存

hbase的資料檔案都儲存在hdfs上,格式主要有兩種 hfile hbase中keyvalue資料的儲存格式,hfile是hadoop的二進位制檔案,實際上storefile就是對hfile做了輕量級的包裝,即storefile底層就是hfile hlog file hbase中wal write...

大資料元件 HBASE

1 hbase是乙個非關係型分布式資料庫 nosql bigtable 參考的是谷歌 2 高可靠 採用主從架構,使用zookeeper管理 高效能 分布式並行處理 面向列 可伸縮 可新增子節點 3 採用hdfs作為檔案儲存系統 也可以採用其它的檔案儲存系統,沒整合mr計算的功能 4 hbase擅長查...

1 大資料儲存選型 何時用hbase

儲存選型 要搞懂大資料儲存選型,首先必須得了解資料庫的發展歷史,了解關聯式資料庫的優勢和缺點,才能進一步考慮如何處理這些問題。簡單來說,資料庫的發展是跟隨資料量的發展來發展的,最開始的時候lamp已經足夠使用,當海量大資料出現後,如何儲存和查詢這些資料就成了人們考慮的問題,這時候人們自然想到從兩方面...