Hbase知識點(1)初識與擴展

產生背景

Google 發表的三駕馬車(既谷歌文件系統 GFS、MapReduce 和 BigTable)論文

,被譽為計算機科學進入大數據時代的標誌。因早期 Hadoop 開發者,只實現了 Hadoop 文件系統和 Hadoop MapReduce,並未實現 BigTable,故而 BigTable 在Hadoop 大數據生態裡面,相當一段時間裡,一直是缺席的。直到 PowerSet 公司推出 Hbase 項目,才算是真正實現了 BigTable 的開源版。PowerSet 早期是一家十分著名的創業公司,創業領域為下一代搜索引擎:自然搜索引擎。雖然在2008年發佈了自己的正式產品,但結果不盡人意,後期因微軟踏足搜索引擎領域而被收購。但是其在開發語義搜索引擎系統過程中,需要用到類似 Googe BigTable 的系統,而研發出來的 Hbase,確對整個大數據開源社區做出了很大貢獻。

簡介

Hbase 是 Googe BigTable 的開源實現,是 Apace Hadoop 大數據生態系統中的重要成員。是⼀個構建在 HDFS 上的分佈式列存儲系統。從邏輯上講,HBase 將數據按照表、⾏和列進⾏存儲,它是⼀個分佈式的、稀疏的、持久化存儲的多維度排序表。

Hbase與BigTable

HBase 依賴於 HDFS 做底層的數據存儲,BigTable 依賴 Google GFS 做數據存儲。HBase 依賴於 MapReduce 做數據計算,BigTable 依賴 Google MapReduce 做數據計算。HBase 依賴於 ZooKeeper 做服務協調,BigTable 依賴 Google Chubby 做服務協調。


Hbase知識點(1)初識與擴展

應用場景舉例

⽹頁庫( 360搜索—⽹絡爬⾍)商品庫(淘寶搜索--歷史賬單查詢)交易信息(淘寶數據魔⽅)雲存儲服務(⼩⽶)監控信息(OpenTSDB)

Hbase數據模型

Hbase 數據模型:邏輯數據模型和物理數據存儲。邏輯數據模型:邏輯數據模型是用戶從數據庫所看到的模型,他直接與 Hbase 數據建模相關。物理數據存儲:物理數據模型是面向計算機物理表示的模型,描述了 Hbase 是數據在存儲介質(包括內存和磁盤)上的組織架構

邏輯數據模型( HBase 表結構邏輯)

1、 基本概述類似與數據庫中的 database 和 table 邏輯概念,Hbase 分別將之稱為 namespacetable,一個 namespace 中包含了一組 table。

Hbase 內置了兩個缺省 namespace:

<code>- hbase:系統內建表,包括namespace和meta表
- default:用戶建表時未指定namespace的表都創建在此。/<code>

Hbase 表由一系列行構成,每行數據有一個 rowkey,以及若干 column family 構成,每個 column family 可包含無限列

2、名詞概念 rowkey: Hbase 表中數據以 rowkey 作為唯一標示的,類似於關係型數據庫中的主鍵,每行數據有一個rowkey,為定位改行數據的索引。同一張表 rowkey 為全局有序的,rowkey 是沒有數據類型的,以字節數組(byte[])形式保存。針對 Hbase 的查詢特性,rowkey 對 Hbase 而言查詢性能影響很大,故而 rowKey 的設計就尤為重要,設計的時候要兼顧基於 rowkey 的單行查詢也要兼容 rowkey 的範圍掃描。

column family: 列簇由多個列共同組成。每行數據都有相同的 column family。column family 屬於 schema 的一部分,定義表時必須指定好。每個 column family 包含無數個動態列。為訪問控制的基本單元。同一 column family 中的數據在物理上會存儲在一個文件中。

column qualifier: 內部列標示,Hbase 每列數據看通過 column family:column qualifier 定位。column qualifier 不屬於 schema 的一部分,可以動態指定,且每行數據可以有不同的qualifier。跟 rowkey 類似,column qualifier 也會沒有數據類型的,以字節數組(byte[])形式保存。

cell:通過 rowkey、column family、column qualifier 可以唯一定位一個 cell,內部保存了多個版本的數值,默認情況下,每個數據的版本號是寫入時間戳。cell內的數據也是沒有類型的,以數組形式保存。

timestamp: cell 內部數據是多版本的,Hbase 默認是將寫入時間戳作為版本號。用戶可根據業務需求自行設置版本號,默認為3個版本。讀數據若沒有指定版本號,則返回最新版本的數據,若存儲的版本超過設置的存儲最大版本號,則會自動清理。

3、模型特點

  • 可擴展性強,支持數十億行,上百萬列,支持數十萬個版本
  • 可以存儲非常稀疏的數據
  • 支持點查,根據主鍵獲取一行數據
  • 支持掃描,快速獲取某些行區間範圍的數據,高效獲取某幾列的數據
  • HBase 中支持的數據類型:byte[](底層所有數據的存儲都是字節數組)
  • 主要用來存儲結構化和半結構化的鬆散數據

物理數據存儲

Hbase 是列簇式存儲引擎,它以 column family 為單位存儲數據,每個 column family 內部數據是以為 key value 形式存儲。在 Hbase 中,同一表中的數據的按照 rowkey 升序排列的,同一行中的不同列是按照 column qualifier 升序排列的,同一個 cell 中的數據是按照版本號降序排列的。

作者:studytime
原文:https://www.studytime.xin


分享到:


相關文章: