重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
hbase是一種Nosql的分布式數據存儲系統。具有可靠性,高能性,列存儲,可伸縮的征,可以對大型數據進行實時、隨機的讀寫訪問。
成都創新互聯專注于平遠網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供平遠營銷型網站建設,平遠網站制作、平遠網頁設計、平遠網站官網定制、成都小程序開發服務,打造平遠網絡公司原創品牌,更為您提供平遠網站排名全網營銷落地服務。
hbase是一個分布式的列式存儲數據庫 nosql的數據庫,no sql hbase不支持標準sql 不支持sql語句的,基于hbase之上對外提供標準sql的組件 phoenix,ont only sql。
當數據量過于龐大的時候 數據的快速查詢是很難實現的GFS-------分布式存儲的MAPERREDUCE------分布式計算的BIGTABLE------分布式數據庫 快速查詢。
Hbase作為Hadoop下的一個子項目,目前發展比較強大,和傳統的關系型數據庫oracle來比,兩者各有優缺點,我們先看一個簡單的表格。
數據維護:比如更新,只是按照key值插入新的記錄,舊版本還在,會在storefile合并過程中進行刪除數據維護:增刪查改非常方便,直接修改
以上簡單羅列了Hbase和Oracle兩者的區別,還有其他更細節的地方這里就沒有描述,可以從上面的對比看出,兩者完全應用于不同個場景。
在Hbase架構中,由于底層的HDFS不支持追加,更新。所以在Hbase中,所有的操作都是寫入,寫操作都是先寫入Memstore內存中,當達到閥值時,才窮flashcache進程寫入storefile,每次寫入都會形成一個新的storefile,當需要更新,刪除的時候,根據key值按照時間戳插入一個新的記錄,老版本記錄依舊存在,可以通過時間戳查詢老版本的記錄,當storefile達到一定的閥值,系統會進行合并,合并過程中會進行版本合并和刪除工作,形成更大的storefile。
Oracle在插入,寫操作的時候,一般情況下也會先寫入內存,然后由DBWR進程調度寫入到數據文件,如果在插入的時候使用append追加,則數據不會通過SGA,直接追加到數據文件,在Hbase中沒有此功能。
NoSQL太火,冒出太多產品了,保守估計也成百上千了。
互聯網公司常用的基本集中在以下幾種,每種只舉一個比較常見或者應用比較成功的例子吧。
1. In-Memory KV Store : Redis
in memory key-value store,同時提供了更加豐富的數據結構和運算的能力,成功用法是替代memcached,通過checkpoint和commit log提供了快速的宕機恢復,同時支持replication提供讀可擴展和高可用。
2. Disk-Based KV Store: Leveldb
真正基于磁盤的key-value storage, 模型單一簡單,數據量不受限于內存大小,數據落盤高可靠,Google的幾位大神出品的精品,LSM模型天然寫優化,順序寫盤的方式對于新硬件ssd再適合不過了,不足是僅提供了一個庫,需要自己封裝server端。
3. Document Store: Mongodb
分布式nosql,具備了區別mysql的最大亮點:可擴展性。mongodb 最新引人的莫過于提供了sql接口,是目前nosql里最像mysql的,只是沒有ACID的特性,發展很快,支持了索引等特性,上手容易,對于數據量遠超內存限制的場景來說,還需要慎重。
4. Column Table Store: HBase
這個富二代似乎不用贅述了,最大的優勢是開源,對于普通的scan和基于行的get等基本查詢,性能完全不是問題,只是只提供裸的api,易用性上是短板,可擴展性方面是最強的,其次坐上了Hadoop的快車,社區發展很快,各種基于其上的開源產品不少,來解決諸如join、聚集運算等復雜查詢。
HBase 是典型的 NoSQL 數據庫,通常被描述成稀疏的、分布式的、持久化的,由行鍵、列鍵和時間戳進行索引的多維有序映射數據庫,主要用來存儲非結構化和半結構化的數據。因為 HBase 基于 Hadoop 的 HDFS 完成分布式存儲,以及 MapReduce 完成分布式并行計算,所以它的一些特點與 Hadoop 相同,依靠橫向擴展,通過不斷增加性價比高的商業服務器來增加計算和存儲能力。
HBase 雖然基于 Bigtable 的開源實現,但它們之間還是有很多差別的,Bigtable 經常被描述成鍵值數據庫,而 HBase 則是面向列存儲的分布式數據庫。
下面介紹 HBase 具備的顯著特性,這些特性讓 HBase 成為當前和未來最實用的數據庫之一。
容量巨大
HBase 的單表可以有百億行、百萬列,可以在橫向和縱向兩個維度插入數據,具有很大的彈性。
當關系型數據庫的單個表的記錄在億級時,查詢和寫入的性能都會呈現指數級下降,這種龐大的數據量對傳統數據庫來說是一種災難,而 HBase 在限定某個列的情況下對于單表存儲百億甚至更多的數據都沒有性能問題。
HBase 采用 LSM 樹作為內部數據存儲結構,這種結構會周期性地將較小文件合并成大文件,以減少對磁盤的訪問。
擴展性強
HBase 工作在 HDFS 之上,理所當然地支持分布式表,也繼承了 HDFS 的可擴展性。HBase 的擴展是橫向的,橫向擴展是指在擴展時不需要提升服務器本身的性能,只需添加服務器到現有集群即可。
HBase 表根據 Region 大小進行分區,分別存在集群中不同的節點上,當添加新的節點時,集群就重新調整,在新的節點啟動 HBase 服務器,動態地實現擴展。這里需要指出,HBase 的擴展是熱擴展,即在不停止現有服務的前提下,可以隨時添加或者減少節點。
高可靠性
HBase 運行在 HDFS 上,HDFS 的多副本存儲可以讓它在岀現故障時自動恢復,同時 HBase 內部也提供 WAL 和 Replication 機制。
WAL(Write-Ahead-Log)預寫日志是在 HBase 服務器處理數據插入和刪除的過程中用來記錄操作內容的日志,保證了數據寫入時不會因集群異常而導致寫入數據的丟失;而 Replication 機制是基于日志操作來做數據同步的。
簡單來說,傳統關系型數據庫的修改與刪除,可以快速通過主鍵、列或索引直接鎖定到某一行或某些行,進行物理刪除。
而對于Hbase來說,受到hdfs文件系統的局限(hdfs文件系統不能修改,添加也很不方便),進行CRUD的操作就會變得相對復雜。
Hbase的修改,是根據某個行鍵添加一行數據,并未這行數據生成一個較新的時間戳來實現,每個行鍵都會對應多個時間戳的數據,那么最新的時間戳就是最終修改后的內容。
而刪除則是通過標記來實現,如果要刪除某行記錄,Hbase會添加一個帶有刪除標記的行,通過這個刪除標記來辨認該行建的數據是否刪除。
Hbase與關系型數據庫的區別:
1、場景
Hbase是面向列的數據庫,適合大量的插入的同時又要具備不俗的讀功能,而Oracle或其他關系型數據庫適合處理比較復雜的業務關系或事務處理,而且,在數據在一定量級下都會有良好的表現,并不是所有業務的數據壓力都會發生比較極端的情況。
2、索引
Hbase只能做主鍵索引,而關系型數據庫可以根據需求不同加入適合的索引機制,供用戶查詢。
3、瓶頸
Hbase的瓶頸是硬盤的傳輸速度,Oracle的瓶頸是硬盤的尋道時間(可以看做是硬盤的轉數)。
4、業務
Hbase適合按照時間排序的業務,而Oracle或其他關系型數據庫應用比較廣泛,如OLTP或OLAP
hbase概念:??非結構化的分布式的面向列存儲非關系型的開源的數據庫,根據谷歌的三大論文之一的bigtable??高寬厚表??作用:??為了解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。
能干什么:??存儲大量結果集數據,低延遲的隨機查詢。
sql:??結構化查詢語言??nosql:??非關系型數據庫,列存儲和文檔存儲(查詢低延遲),hbase是nosql的一個種類,其特點是列式存儲。
非關系型數據庫--列存儲(hbase)??非關系型數據庫--文檔存儲(MongoDB)??非關系型數據庫--內存式存儲(redis)??非關系型數據庫--圖形模型(graph)??hive和hbase區別???Hive的定位是數據倉庫,雖然也有增刪改查,但其刪改查對應的是整張表而不是單行數據,查詢的延遲較高。
其本質是更加方便的使用mr的威力來進行離線分析的一個數據分析工具。
HBase的定位是hadoop的數據庫,電腦培訓發現是一個典型的Nosql,所以HBase是用來在大量數據中進行低延遲的隨機查詢的。
hbase運行方式:??standalonedistrubited??單節點和偽分布式???單節點:單獨的進程運行在同一臺機器上??hbase應用場景:??存儲海量數據低延遲查詢數據??hbase表由多行組成??hbase行一行在hbase中由行健和一個或多個列的值組成,按行健字母順序排序的存儲。