hbase的簡單介紹

1、歷史背景

  • 產生原因

    • 內因

      • hadoop之mapreduce/hdfs/hive等適合做批量數據處理,且只能以順序方式訪問數據。

    • 外因

      • 現實開發應用場景中,經常需要海量數據場景下的實時數據隨機訪問的需求,hadoop作爲大數據的承載和計算平臺應該予以滿足。

2、hbase概述

  •  hbase介紹

    • hadoop database的簡稱

    • hbase是一個數據模型,屬於hadoop生態系統的一部分,提供對海量數據的隨機實時讀/寫訪問。

    • 構建在hadoop之hdfs之上,分佈式面向列的數據庫

    • 參考谷歌的bigtable數據庫設計,擁有hdfs的分塊存儲、冗餘、容錯的優良特性。

    • 完全開源、優秀的橫向擴展性。

  • hbase與hdfs對比說明

HDFS

HBase

適於存儲大文件的分佈式文件系統

建立在HDFS之上的數據庫

不支持快速單獨記錄查找,即順序訪問

提供在較大的錶快速查找,即隨機訪問,也可以順序訪問

批量任務處理,吞吐量高時延高、實時性差

提供了億級記錄低延遲訪問任意行記錄,即隨機存取

(原因:內部使用哈希表和提供隨機接入,並且其存儲索引,可將在HDFS文件中的數據進行快速查找。)

  • 應用場景

    • 高併發、簡單條件、隨機查詢

      • 不善長join類操作,新版本正在陸續支持與升級中

    • 半結構化、非結構化數據存儲

  • 應用案例

    • 數據採集結果存儲、海量數據實時查詢等項目開發當中使用非常廣泛。

    • 國外的facebook、google、yahoo!,國內的互聯網中大型公司、BAT內部均有廣泛使用。

  • hbase數據模型

    • 重要概念

      • 命名空間(namespace)

        • 類比於關係型數據庫中的不同的Database數據庫。

        • 利用命名空間,在多租戶場景下可做到更好的資源和數據隔離。

      • 表(table)

        • 類比於rdb中的表

        • 以"表"爲單位組織數據,表由多行組成

      • 行(row)

        • 行由一個RowKey和多個列族組成,一個行有一個RowKey作爲行的唯一標識。

      • 列族(column family,簡稱CF)

        • 每一行由若干列族組成,每個列族下可包含多個列。

        • 列族是列共性的一些體現,如baseInfo列族和addressInfo列族,baseInfo可以包括name(名字),age(年齡),gender(性別)屬性列,而addressInfo可以包括province(省份),city(市), email(郵箱)等屬性列。

        • 物理上,同一列族的數據存儲在一起的。

      • 列限定符(column qualifier)

        • 列由列族和列限定符唯一指定,像如上的name、age即是baseInfo列族的列限定符。

      • 單元格(cell)

        • 單元格由RowKey、列族、列限定符唯一定位,單元格之中存放一個值(Value)和一個版本號。

      • 時間戳(timestamp)

        • 即爲版本號,來標識一個單元格的數據的最新的插入或是修改時間

        • 單元格內不同版本的值按時間倒序排列,最新的數據排在最前面

    • 核心設計

      • 面向列(列族)定義、列(列族)存儲的數據庫,其數據庫也稱爲空間namespace。

      • 表的基本組成單元是行,每行有個唯一標識稱爲rowKey,表中數據按rowKey進行字典序排序存儲。

      • 一個表有多個列族以及每一個列族可以有任意數量的列,後續新增列的值連續地存儲在磁盤上。

      • 表中的每個單元格值都具有時間戳,來標識該單元格的最後插入或更新時間。

    • 簡易邏輯說明

      • 表是行的集合

      • 行是列族的集合

      • 列族是列的集合

      • 列是鍵值對的集合

    • hbase數據表模板

Rowid

             Column Family

       Column Family

 

column1

column2

column3

column1

column2

rowkey1

 

 

 

 

 

rowkey2

 

 

 

 

 

rowkey3

 

 

 

 

 

  • hbase數據表樣例(學生信息表)

Rowid

             baseInfo

       addressInfo

 

name

age

gender

province

city

20190901

 張一

 21

 男

 河北省

 石家莊市

20190902

 張二

 22

 女

 河南省

鄭州市

20190903

 張三

 21

 男

內蒙古

赤峯市

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章