一、产生背景

  • 内因
    • hadoop之mapreduce、hdfs、hive等适合做批量数据处理,且只能以顺序方式访问数据。
  • 外因

    • 现实开发场景中经常需要海量数据场景下的实时数据随机访问,hadoop应该予以满足。
      • 比如身份证号查询
      • 比如手机号查询

        二、Hbase概述

        1、Hbase介绍

  • hadoop database的简称

  • habse是一个数据模型,属于hadoop生态圈的一部分.提供对海量数据的随机实时读、写。
  • 构建在hdfs之上。分布式的面向列的数据库。
  • 拥有hdfs分块存储、冗余、容错的优良特性。
  • 完全开源,优良的拓展性。

    2、hbase和hive的对比

    | HDFS | HBase | | —- | —- | | 适于存储大文件的分布式文件系统 | 建立在HDFS之上的数据库,以数据记录为单位 | | 不支持快速单独记录查找,即顺序访问 | 提供在较大的表快速查找,即随机访问,也可以顺序访问 | | 批量任务处理,吞吐量高时延、实时性差 | 提供了亿级记录低延迟访问任意行记录,即随机存取
    (原因:内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。) |

3、应用场景

  • 高并发、简单条件、随机查询
    • 不擅长join类操作
  • 半结构化、非结构化数据存储

    4、应用案例

  • 数据采集结果存储、海量数据实时查询等项目在开发中使用广泛。

  • 国内外大厂都在使用。

    5、hbase数据模型

  • 重要概念
    • 命名空间
      • 相当于数据库database。
      • 利用命名空间更好的做到资源隔离。
      • 类比与表
      • 以表为单位组织数据。表由多行组成。
      • 行由一个Rowkey和多个列族组成。
      • 每一行由一个rowkey作为唯一标识。
    • 列族
      • 每一行由若干列族组成,每个列族下有多个列。
      • 列族是列的共性的体现。如baseinfo列族下有姓名列、年龄列等。
      • 在物理上,同一列族的数据存储在一起。
    • 列限定符
      • 像上面的姓名和年龄就是列限定符。
    • 单元格
      • 每个单元格由列族、列限定符、rowkey唯一指定。单元格中存放一个指和一个版本号。
    • 时间戳
      • 即版本号,来标记一个单元格的的最新插入数据与修改时间。
      • 单元格内的值按时间倒叙排列。最新的在最上面。
  • 核心设计
    • 面向列定义、面向列存储的数据库,数据库也成为namespace。
    • 表的基本促成单位是行。每行有一个唯一的标识符rowkey。
    • 每个表有多个列族,每个列族有多个列。
    • 每个单元格都有时间戳。
  • 简易逻辑说明
    • 表是行的集合
    • 行是列族的集合
    • 列族是列的集合
    • 列是键值对的集合
  • 数据表模板

    图片.png
    图片.png

    6、版本变化

    • hbase2.x相对于1.x主要是修复bug和各方面的优化。
    • 并没有发生底层变化
    • 我们用的是1.2.6版本。

      三、前景

    • 国内国外几乎所有大型互联网公司都在使用。前景非常好。