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

 男

内蒙古

赤峰市

 

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