Hbase入門(一)——初識Hbase

file

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

file

一、大數據與Hbase

大數據在近幾年發展迅速,而實時計算也是一個重要的發展趨勢。無論是企業中的日誌數據,仍是傳感器、智能設備等等產生的數據,不可勝數。mysql

而這些數據中結構化的數據只佔一小部分,大部分是非結構化的數據。這個時候,好比圖片視頻等就不能輕鬆的存儲在關係型數據庫中,而大數據是能夠對各類類型的數據均可以進行處理的。redis

file

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

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

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

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

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

二、概念特性

HBASE是一個數據庫----能夠提供數據的實時隨機讀寫併發

HBASE與mysql、oralce、db二、sqlserver等關係型數據庫不一樣,它是一個NoSQL數據庫(非關係型數據庫)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具有以下特性:存儲容量能夠線性擴展; 數據存儲的安全性可靠性極高!

三、核心模塊

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對象,用於數據恢復。

四、使用場景

搜索引擎

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

實時流式計算

無論是實時的推薦系統,仍是日誌的增量存儲,都是實時流式計算的一個應用。

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

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

file

原文出處:https://www.cnblogs.com/tree1123/p/11576372.html

相關文章
相關標籤/搜索