Hbase入門(一)——初識Hbase


file

本文將介紹大數據的知識和Hbase的基本概念,作為大數據體系中重要的一員,Hbase彌補了Hadoop只能離線批處理的不足,支持存儲小文件,隨機檢索。而這種特性使得Hbase對於實時計算體系的事件存儲有天然的較好的支持。這使得Hbase在實時流式計算中也扮演者重要的角色。

file

1、大數據與Hbase

大數據在近幾年發展迅速,而實時計算也是一個重要的發展趨勢。不管是企業中的日志數據,還是傳感器、智能設備等等產生的數據,不計其數。

而這些數據中結構化的數據只占一小部分,大部分是非結構化的數據。這個時候,比如圖片視頻等就不能輕松的存儲在關系型數據庫中,而大數據是可以對各種類型的數據都可以進行處理的。

file

但關系型數據庫有幾點缺陷:

無法應對高並發的考驗,沒有辦法橫向擴展,事務一致性對性能的影響。

而Nosql數據庫,也就是Not Only Sql的縮寫。擴展性強,並發性能好,數據模型靈活。

Hbase,也就是Hadoop Database是一個高可靠、高性能、可伸縮的分布式數據庫。Hbase參考了谷歌的BigTable建模,使用HDFS作為底層存儲。使用Zookeeper作為協同服務組件。

Hbase使用Java編寫,還是一種NoSQL數據庫,這些特性決定了Hbase獨特的應用場景。

2、概念特性

HBASE是一個數據庫----可以提供數據的實時隨機讀寫

HBASE與mysql、oralce、db2、sqlserver等關系型數據庫不同,它是一個NoSQL數據庫(非關系型數據庫)

Hbase的表模型與關系型數據庫的表模型不同:

​  Hbase的表沒有固定的字段定義;

​  Hbase的表中每行存儲的都是一些key-value對;

​  Hbase的表中有列族的划分,用戶可以指定將哪些kv插入哪個列族;

​  Hbase的表在物理存儲上,是按照列族來分割的,不同列族的數據一定存儲在不同的文件中;

​  Hbase的表中的每一行都固定有一個行鍵,而且每一行的行鍵在表中不能重復;

​  Hbase中的數據,包含行鍵,包含key,包含value,都是byte[ ]類型,hbase不負責為用戶維護數據類型;

​  HBASE對事務的支持很差;

HBASE相比於其他nosql數據庫(mongodb、redis、cassendra、hazelcast)的特點:

Hbase的表數據存儲在HDFS文件系統中

從而,hbase具備如下特性:存儲容量可以線性擴展; 數據存儲的安全性可靠性極高!

3、核心模塊

file

客戶端Client

整個Hbase的入口,使用者通過客戶端操作Hbase。通過客戶端與HMaster和RegionServer進行通訊。管理類操作與HMaster通信,讀寫類操作與RegionServer通訊。

協調服務zookeeper

zookeeper負責管理Hbase中多個HMaster的選舉,服務器間狀態同步。

主節點HMaster

HMaster可以啟動多個,由zookeeper保證總有一個正常運行,其他作為備選。

HMaster主要負責Table和Region的管理工作。

節點HRegionServer

HRegionServer主要負責響應用戶IO請求,向HDFS中讀寫數據。HRegionServer管理了一系列的HRegion對象。HRegion對應了Table中的一個Region。HRegion由多個HStore組成,HStore對用了Table中一個Column Family。

而且每個HRegionServer都有一個HLog對象,用於數據恢復。

4、使用場景

搜索引擎

生成索引,在查詢時通過對條件的拼接,迅速的查找到要查詢的數據。

實時流式計算

不管是實時的推薦系統,還是日志的增量存儲,都是實時流式計算的一個應用。

通過將數據增量的存入Hbase,並在流式處理中實時查詢Hbase,結合歷史得到最終的分析結果。

更多Hbase,Flink,Kafka等實時流式計算相關博文,歡迎關注實時流式計算:

file


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM