Hbase入門介紹(Hbase入門第一篇)

1、HBase基本介紹

簡介

hbase是bigtable的開源java版本。是建立在hdfs之上,提供高可靠性、高性	能、列存儲、可伸縮、實時讀寫nosql的數據庫系統。
它介於nosql和RDBMS之間,僅能通過主鍵(row key)和主鍵的range來檢索數據,僅支持單行事務(可通過hive支持來實現多表join等複雜操作)。

主要用來存儲結構化和半結構化的鬆散數據。
Hbase查詢數據功能很簡單,不支持join等複雜操作,不支持複雜的事務(行級的事務)

Hbase中支持的數據類型:byte[]
與hadoop一樣,Hbase目標主要依靠橫向擴展,通過不斷增加廉價的商用服務器,來增加計算和存儲能力。

HBase中的表一般有這樣的特點:
大:一個表可以有上十億行,上百萬列
面向列:面向列(族)的存儲和權限控制,列(族)獨立檢索。
稀疏:對於爲空(null)的列,並不佔用存儲空間,因此,表可以設計的非常稀疏。

傳統數據表

在這裏插入圖片描述

在這裏插入圖片描述

HBase的發展歷程

HBase的原型是Google的BigTable論文,受到了該論文思想的啓發,目前作爲Hadoop的子項目來開發維護,用於支持結構化的數據存儲。
官方網站:http://hbase.apache.org
* 2006年Google發表BigTable白皮書
* 2006年開始開發HBase
* 2008  HBase成爲了 Hadoop的子項目
* 2010年HBase成爲Apache頂級項目

2、HBase與Hadoop的關係

1、HDFS
* 爲分佈式存儲提供文件系統
* 針對存儲大尺寸的文件進行優化,不適用對HDFS上的文件進行隨機讀寫
* 直接使用文件
* 數據模型不靈活
* 使用文件系統和處理框架
* 優化一次寫入,多次讀取的方式
2、HBase
* 提供表狀的面向列的數據存儲
* 針對表狀數據的隨機讀寫進行優化
* 使用key-value操作數據
* 提供靈活的數據模型
* 使用表狀存儲,支持MapReduce,依賴HDFS
* 優化了多次讀,以及多次寫

3、RDBMS與HBase的對比

1、關係型數據庫
結構:
* 數據庫以表的形式存在
* 支持FAT、NTFS、EXT、文件系統
* 使用Commit log存儲日誌
* 參考系統是座標系統
* 使用主鍵(PK)
* 支持分區
* 使用行、列、單元格
功能:
* 支持向上擴展
* 使用SQL查詢
* 面向行,即每一行都是一個連續單元
* 數據總量依賴於服務器配置
* 具有ACID支持
* 適合結構化數據
* 傳統關係型數據庫一般都是中心化的
* 支持事務
* 支持Join
2、HBase
結構:
* 數據庫以region的形式存在
* 支持HDFS文件系統
* 使用WAL(Write-Ahead Logs)存儲日誌
* 參考系統是Zookeeper
* 使用行鍵(row key)
* 支持分片
* 使用行、列、列族和單元格
功能:
* 支持向外擴展
* 使用API和MapReduce來訪問HBase表數據
* 面向列,即每一列都是一個連續的單元
* 數據總量不依賴具體某臺機器,而取決於機器數量
* HBase不支持ACID(Atomicity、Consistency、Isolation、Durability)
* 適合結構化數據和非結構化數據
* 一般都是分佈式的
* HBase不支持事務
* 不支持SQL
* 不支持Join

4、HBase特徵簡要

1)海量存儲
Hbase適合存儲PB級別的海量數據,在PB級別的數據以及採用廉價PC存儲的情況下,能在幾十到百毫秒內返回數據。這與Hbase的極易擴展性息息相關。正式因爲Hbase良好的擴展性,才爲海量數據的存儲提供了便利。
2)列式存儲
這裏的列式存儲其實說的是列族存儲,Hbase是根據列族來存儲數據的。列族下面可以有非常多的列,列族在創建表的時候就必須指定。
3)極易擴展
Hbase的擴展性主要體現在兩個方面,一個是基於上層處理能力(RegionServer)的擴展,一個是基於存儲的擴展(HDFS)。
通過橫向添加RegionSever的機器,進行水平擴展,提升Hbase上層的處理能力,提升Hbsae服務更多Region的能力。
備註:RegionServer的作用是管理region、承接業務的訪問,這個後面會詳細的介紹通過橫向添加Datanode的機器,進行存儲層擴容,提升Hbase的數據存儲能力和提升後端存儲的讀寫能力。
4)高併發
由於目前大部分使用Hbase的架構,都是採用的廉價PC,因此單個IO的延遲其實並不小,一般在幾十到上百ms之間。這裏說的高併發,主要是在併發的情況下,Hbase的單個IO延遲下降並不多。能獲得高併發、低延遲的服務。
5)稀疏
稀疏主要是針對Hbase列的靈活性,在列族中,你可以指定任意多的列,在列數據爲空的情況下,是不會佔用存儲空間的。

5、HBase的基礎架構

在這裏插入圖片描述

1、HMaster
功能:
1) 監控RegionServer
2) 處理RegionServer故障轉移
3) 處理元數據的變更
4) 處理region的分配或移除
5) 在空閒時間進行數據的負載均衡
6) 通過Zookeeper發佈自己的位置給客戶端
2、RegionServer
功能:
1) 負責存儲HBase的實際數據
2) 處理分配給它的Region
3) 刷新緩存到HDFS
4) 維護HLog
5) 執行壓縮
6) 負責處理Region分片

在這裏插入圖片描述

組件:
1) Write-Ahead logs
HBase的修改記錄,當對HBase讀寫數據的時候,數據不是直接寫進磁盤,它會在內存中保留一段時間(時間以及數據量閾值可以設定)。但把數據保存在內存中可能有更高的概率引起數據丟失,爲了解決這個問題,數據會先寫在一個叫做Write-Ahead logfile的文件中,然後再寫入內存中。所以在系統出現故障的時候,數據可以通過這個日誌文件重建。
2) StoreFile(HFile)
這是在磁盤上保存原始數據的實際的物理文件,是實際的存儲文件。
3) Store
HFile存儲在Store中,一個Store對應HBase表中的一個列族。
4) MemStore
顧名思義,就是內存存儲,位於內存中,用來保存當前的數據操作,所以當數據保存在WAL中之後,RegsionServer會在內存中存儲鍵值對。
5) Region
Hbase表的分片,HBase表會根據RowKey值被切分成不同的region存儲在RegionServer中,在一個RegionServer中可以有多個不同的region。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章