hbase概念:??非結(jié)構(gòu)化的分布式的面向列存儲非關(guān)系型的開源的數(shù)據(jù)庫,根據(jù)谷歌的三大論文之一的bigtable??高寬厚表??作用:??為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、上栗ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的上栗網(wǎng)站制作公司
能干什么:??存儲大量結(jié)果集數(shù)據(jù),低延遲的隨機(jī)查詢。
sql:??結(jié)構(gòu)化查詢語言??nosql:??非關(guān)系型數(shù)據(jù)庫,列存儲和文檔存儲(查詢低延遲),hbase是nosql的一個種類,其特點是列式存儲。
非關(guān)系型數(shù)據(jù)庫--列存儲(hbase)??非關(guān)系型數(shù)據(jù)庫--文檔存儲(MongoDB)??非關(guān)系型數(shù)據(jù)庫--內(nèi)存式存儲(redis)??非關(guān)系型數(shù)據(jù)庫--圖形模型(graph)??hive和hbase區(qū)別???Hive的定位是數(shù)據(jù)倉庫,雖然也有增刪改查,但其刪改查對應(yīng)的是整張表而不是單行數(shù)據(jù),查詢的延遲較高。
其本質(zhì)是更加方便的使用mr的威力來進(jìn)行離線分析的一個數(shù)據(jù)分析工具。
HBase的定位是hadoop的數(shù)據(jù)庫,電腦培訓(xùn)發(fā)現(xiàn)是一個典型的Nosql,所以HBase是用來在大量數(shù)據(jù)中進(jìn)行低延遲的隨機(jī)查詢的。
hbase運行方式:??standalonedistrubited??單節(jié)點和偽分布式???單節(jié)點:單獨的進(jìn)程運行在同一臺機(jī)器上??hbase應(yīng)用場景:??存儲海量數(shù)據(jù)低延遲查詢數(shù)據(jù)??hbase表由多行組成??hbase行一行在hbase中由行健和一個或多個列的值組成,按行健字母順序排序的存儲。
HBase 是典型的 NoSQL 數(shù)據(jù)庫,通常被描述成稀疏的、分布式的、持久化的,由行鍵、列鍵和時間戳進(jìn)行索引的多維有序映射數(shù)據(jù)庫,主要用來存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù)。因為 HBase 基于 Hadoop 的 HDFS 完成分布式存儲,以及 MapReduce 完成分布式并行計算,所以它的一些特點與 Hadoop 相同,依靠橫向擴(kuò)展,通過不斷增加性價比高的商業(yè)服務(wù)器來增加計算和存儲能力。
HBase 雖然基于 Bigtable 的開源實現(xiàn),但它們之間還是有很多差別的,Bigtable 經(jīng)常被描述成鍵值數(shù)據(jù)庫,而 HBase 則是面向列存儲的分布式數(shù)據(jù)庫。
下面介紹 HBase 具備的顯著特性,這些特性讓 HBase 成為當(dāng)前和未來最實用的數(shù)據(jù)庫之一。
容量巨大
HBase 的單表可以有百億行、百萬列,可以在橫向和縱向兩個維度插入數(shù)據(jù),具有很大的彈性。
當(dāng)關(guān)系型數(shù)據(jù)庫的單個表的記錄在億級時,查詢和寫入的性能都會呈現(xiàn)指數(shù)級下降,這種龐大的數(shù)據(jù)量對傳統(tǒng)數(shù)據(jù)庫來說是一種災(zāi)難,而 HBase 在限定某個列的情況下對于單表存儲百億甚至更多的數(shù)據(jù)都沒有性能問題。
HBase 采用 LSM 樹作為內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu),這種結(jié)構(gòu)會周期性地將較小文件合并成大文件,以減少對磁盤的訪問。
擴(kuò)展性強(qiáng)
HBase 工作在 HDFS 之上,理所當(dāng)然地支持分布式表,也繼承了 HDFS 的可擴(kuò)展性。HBase 的擴(kuò)展是橫向的,橫向擴(kuò)展是指在擴(kuò)展時不需要提升服務(wù)器本身的性能,只需添加服務(wù)器到現(xiàn)有集群即可。
HBase 表根據(jù) Region 大小進(jìn)行分區(qū),分別存在集群中不同的節(jié)點上,當(dāng)添加新的節(jié)點時,集群就重新調(diào)整,在新的節(jié)點啟動 HBase 服務(wù)器,動態(tài)地實現(xiàn)擴(kuò)展。這里需要指出,HBase 的擴(kuò)展是熱擴(kuò)展,即在不停止現(xiàn)有服務(wù)的前提下,可以隨時添加或者減少節(jié)點。
高可靠性
HBase 運行在 HDFS 上,HDFS 的多副本存儲可以讓它在岀現(xiàn)故障時自動恢復(fù),同時 HBase 內(nèi)部也提供 WAL 和 Replication 機(jī)制。
WAL(Write-Ahead-Log)預(yù)寫日志是在 HBase 服務(wù)器處理數(shù)據(jù)插入和刪除的過程中用來記錄操作內(nèi)容的日志,保證了數(shù)據(jù)寫入時不會因集群異常而導(dǎo)致寫入數(shù)據(jù)的丟失;而 Replication 機(jī)制是基于日志操作來做數(shù)據(jù)同步的。
nosql是not only sql的意思。是近今年新發(fā)展起來的存儲系統(tǒng)。當(dāng)前使用最多的是key-value模型,用于處理超大規(guī)模的數(shù)據(jù)。
以下是摘自百度百科中的一部分
NoSQL 是非關(guān)系型數(shù)據(jù)存儲的廣義定義。它打破了長久以來關(guān)系型數(shù)據(jù)庫與ACID理論大一統(tǒng)的局面。NoSQL 數(shù)據(jù)存儲不需要固定的表結(jié)構(gòu),通常也不存在連接操作。在大數(shù)據(jù)存取上具備關(guān)系型數(shù)據(jù)庫無法比擬的性能優(yōu)勢。該術(shù)語在 2009 年初得到了廣泛認(rèn)同。
當(dāng)今的應(yīng)用體系結(jié)構(gòu)需要數(shù)據(jù)存儲在橫向伸縮性上能夠滿足需求。而 NoSQL 存儲就是為了實現(xiàn)這個需求。Google 的BigTable與Amazon的Dynamo是非常成功的商業(yè) NoSQL 實現(xiàn)。一些開源的 NoSQL 體系,如Facebook 的Cassandra, Apache 的HBase,也得到了廣泛認(rèn)同。從這些NoSQL項目的名字上看不出什么相同之處:Hadoop、Voldemort、Dynomite,還有其它很多。
NoSQL與關(guān)系型數(shù)據(jù)庫設(shè)計理念比較
關(guān)系型數(shù)據(jù)庫中的表都是存儲一些格式化的數(shù)據(jù)結(jié)構(gòu),每個元組字段的組成都一樣,即使不是每個元組都需要所有的字段,但數(shù)據(jù)庫會為每個元組分配所有的字段,這樣的結(jié)構(gòu)可以便于表與表之間進(jìn)行連接等操作,但從另一個角度來說它也是關(guān)系型數(shù)據(jù)庫性能瓶頸的一個因素。而非關(guān)系型數(shù)據(jù)庫以鍵值對存儲,它的結(jié)構(gòu)不固定,每一個元組可以有不一樣的字段,每個元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結(jié)構(gòu),可以減少一些時間和空間的開銷。
Hbase是一種NoSQL數(shù)據(jù)庫,這意味著它不像傳統(tǒng)的RDBMS數(shù)據(jù)庫那樣支持SQL作為查詢語言。Hbase是一種分布式存儲的數(shù)據(jù)庫,技術(shù)上來講,它更像是分布式存儲而不是分布式數(shù)據(jù)庫,它缺少很多RDBMS系統(tǒng)的特性,比如列類型,輔助索引,觸發(fā)器,和高級查詢語言等待
那Hbase有什么特性呢?如下:
強(qiáng)讀寫一致,但是不是“最終一致性”的數(shù)據(jù)存儲,這使得它非常適合高速的計算聚合
自動分片,通過Region分散在集群中,當(dāng)行數(shù)增長的時候,Region也會自動的切分和再分配
自動的故障轉(zhuǎn)移
Hadoop/HDFS集成,和HDFS開箱即用,不用太麻煩的銜接
豐富的“簡潔,高效”API,Thrift/REST API,Java API
塊緩存,布隆過濾器,可以高效的列查詢優(yōu)化
操作管理,Hbase提供了內(nèi)置的web界面來操作,還可以監(jiān)控JMX指標(biāo)
什么時候用Hbase?
Hbase不適合解決所有的問題:
首先數(shù)據(jù)庫量要足夠多,如果有十億及百億行數(shù)據(jù),那么Hbase是一個很好的選項,如果只有幾百萬行甚至不到的數(shù)據(jù)量,RDBMS是一個很好的選擇。因為數(shù)據(jù)量小的話,真正能工作的機(jī)器量少,剩余的機(jī)器都處于空閑的狀態(tài)
其次,如果你不需要輔助索引,靜態(tài)類型的列,事務(wù)等特性,一個已經(jīng)用RDBMS的系統(tǒng)想要切換到Hbase,則需要重新設(shè)計系統(tǒng)。
最后,保證硬件資源足夠,每個HDFS集群在少于5個節(jié)點的時候,都不能表現(xiàn)的很好。因為HDFS默認(rèn)的復(fù)制數(shù)量是3,再加上一個NameNode。
Hbase在單機(jī)環(huán)境也能運行,但是請在開發(fā)環(huán)境的時候使用。
內(nèi)部應(yīng)用
存儲業(yè)務(wù)數(shù)據(jù):車輛GPS信息,司機(jī)點位信息,用戶操作信息,設(shè)備訪問信息。。。
存儲日志數(shù)據(jù):架構(gòu)監(jiān)控數(shù)據(jù)(登錄日志,中間件訪問日志,推送日志,短信郵件發(fā)送記錄。。。),業(yè)務(wù)操作日志信息
存儲業(yè)務(wù)附件:UDFS系統(tǒng)存儲圖像,視頻,文檔等附件信息
不過在公司使用的時候,一般不使用原生的Hbase API,使用原生的API會導(dǎo)致訪問不可監(jiān)控,影響系統(tǒng)穩(wěn)定性,以致于版本升級的不可控。
HFile
HFile是Hbase在HDFS中存儲數(shù)據(jù)的格式,它包含多層的索引,這樣在Hbase檢索數(shù)據(jù)的時候就不用完全的加載整個文件。索引的大小(keys的大小,數(shù)據(jù)量的大小)影響block的大小,在大數(shù)據(jù)集的情況下,block的大小設(shè)置為每個RegionServer 1GB也是常見的。
探討數(shù)據(jù)庫的數(shù)據(jù)存儲方式,其實就是探討數(shù)據(jù)如何在磁盤上進(jìn)行有效的組織。因為我們通常以如何高效讀取和消費數(shù)據(jù)為目的,而不是數(shù)據(jù)存儲本身。
Hfile生成方式
起初,HFile中并沒有任何Block,數(shù)據(jù)還存在于MemStore中。
Flush發(fā)生時,創(chuàng)建HFile Writer,第一個空的Data Block出現(xiàn),初始化后的Data Block中為Header部分預(yù)留了空間,Header部分用來存放一個Data Block的元數(shù)據(jù)信息。
而后,位于MemStore中的KeyValues被一個個append到位于內(nèi)存中的第一個Data Block中:
注:如果配置了Data Block Encoding,則會在Append KeyValue的時候進(jìn)行同步編碼,編碼后的數(shù)據(jù)不再是單純的KeyValue模式。Data Block Encoding是HBase為了降低KeyValue結(jié)構(gòu)性膨脹而提供的內(nèi)部編碼機(jī)制。
hbase是一種Nosql的分布式數(shù)據(jù)存儲系統(tǒng)。具有可靠性,高能性,列存儲,可伸縮的征,可以對大型數(shù)據(jù)進(jìn)行實時、隨機(jī)的讀寫訪問。
hbase是一個分布式的列式存儲數(shù)據(jù)庫 nosql的數(shù)據(jù)庫,no sql hbase不支持標(biāo)準(zhǔn)sql 不支持sql語句的,基于hbase之上對外提供標(biāo)準(zhǔn)sql的組件 phoenix,ont only sql。
當(dāng)數(shù)據(jù)量過于龐大的時候 數(shù)據(jù)的快速查詢是很難實現(xiàn)的GFS-------分布式存儲的MAPERREDUCE------分布式計算的BIGTABLE------分布式數(shù)據(jù)庫 快速查詢。