HBase:HBase 基本概念详解

1. Hbase 概念

1.1. Hadoop 的局限

  • 要查找数据必须搜索整个数据集,如果要进行随机读取数据,效率较低;
    • Hadoop 主要是实现批量数据的处理,并且通过顺序方式访问数据;
  • Hadoop 适合做一些批量数据处理,适用于吞吐量比较高的场景,但是不适用于随机查询、实时操作

1.2. Hbase 定义

  • HBase 建立在 Hadoop 集群 HDFS 之上,提供:
    • 高可靠性
    • 高性能
    • 列存储
    • 可伸缩
    • 实时读写
    • NoSQL 的数据库系统;
  • HBase 本质是一个 NoSQL;
  • HBase 是 Google BigTable 的开源 java 版本;

2. HBase 的特点(基于应用视角)

  • 查询
    • Hbase 查询数据功能很简单:
      • HBase 不支持 join 等复杂操作;
      • HBase 不支持复杂的事务(行级的事务);
    • HBase 仅能通过主键(row key)和主键的 range 来检索数据;
    • 相比较而言,MySQL 可以指定 where 条件限定查询范围;
  • 存储
    • HBase 主要用来存储结构化和半结构化的松散数据;
    • HBase 仅支持单行事务;
    • 从技术上来说,HBase 更像是一个「数据存储」而不是「数据库」,因为 HBase 缺少 RDBMS 中的许多特性,例如:带类型的列、二级索引以及高级查询语言等;
      • HBase 没有列类型概念;
    • Hbase 中支持的数据类型:byte[];
  • 扩展
    • HBase 的主要目标是横向扩展,通过不断增加廉价的服务器,来增加存储和处理能力;
      • 例如:把集群节点由 10 个增加到 20 个,存储能力和处理能力都会加倍;

3. HBase 自身特性

  • 强一致性读/写
    • HBASE 不是“最终一致的”数据存储;
    • HBASE 非常适合于诸如高速计数器聚合等任务;
  • 自动分块
    • HBase表通过Region分布在集群上;
    • 随着数据的增长,区域被自动拆分和重新分布;
  • 自动 RegionServer 故障转移
  • Hadoop/HDFS集成
    • HBase 支持 HDFS 开箱即用作为其分布式文件系统;
  • MapReduce
    • HBase 通过 MapReduce 支持大规模并行处理,将 HBase 用作源和接收器;
  • Java Client API
    • HBase 支持易于使用的 Java API 进行编程访问;
  • Thrift/REST API
  • 块缓存和布隆过滤器
    • HBase 支持块 Cache 和 Bloom 过滤器进行大容量查询优化;
  • 运行管理
    • HBase 为业务洞察和 JMX 度量提供内置网页。

4. HBase 局限性

  • HBase 不支持 join 等复杂操作;
  • HBase 不支持复杂的事务(行级的事务);
  • HBase 仅能通过主键(row key)和主键的 range 来检索数据;

5. HBase 应用场景

  • HBase 适用场景:
    • 海量数据存储;
    • 快速读写;

5.1. Hbase 表特点

  • 一般是大表
    • 一个表上十亿行、上百万列;
  • 面向列存储
    • 面向列(族)存储和权限控制,列(族)独立检索;
  • 稀疏
    • 对于为空(null)的列,并不占存储空间;
  • 一般用在实时处理中;

5.2. 对象存储

  • 不少的头条类、新闻类的的新闻、网页、图片存储在 HBase 之中,一些病毒公司的病毒库也是存储在 HBase 之中;

5.3. 时序存储

  • HBase 之上有 OpenTSDB 模块,可以满足时序类场景的需求;

5.4. 推荐画像

  • 用户标签,是一个比较大的稀疏矩阵;
    • 例如:蚂蚁金服的风控就是构建在 HBase 之上;

5.5. 时空数据

  • 主要是轨迹、气象网格之类,滴滴打车的轨迹数据主要存在 HBase 之中,另外在技术所有大一点的数据量的车联网企业,数据都是存在 HBase 之中;

5.6. Cube OLAP

  • Kylin一个cube分析工具,底层的数据就是存储在HBase之中,不少客户自己基于离线计算构建cube存储在hbase之中,满足在线报表查询的需求

5.7. 消息/订单

  • 在电信领域、银行领域,不少的订单查询底层的存储,另外不少通信、消息同步的应用构建在HBase之上

5.8. Feeds 流

  • 典型的应用就是xx朋友圈类似的应用,用户可以随时发布新内容,评论、点赞。

5.9. NewSQL

  • 之上有Phoenix的插件,可以满足二级索引、SQL的需求,对接传统数据需要SQL非事务的需求

5.10. 其他

  • 存储爬虫数据
  • 海量数据备份
  • 短网址