HBASE特点及概述

在这里插入图片描述

Hbase
Hdfs缺点
 不能并发写入
 不能随机读写
 不能随机删除
 高延迟
 不适合存储大量小的文件
RDBMS缺点
 分区加上主从复制,方案比较复杂
 分区不支持动态扩展
 依赖于IBM,EMC等公司设备,造价高
 容错性低,查询重启
基于上述原因,出现了HBase

Hadoop存在两种数据存储的方式
 Hdfs的文件存储方式
 Hbase分布式数据库存储的方式

HBASE支持实时读写大数据,它是一个高可靠性,高性能,可伸缩的分布式存储系统
 HBase是一个构建在HDFS上的分布式noSQL数据库
 HBase是基于google bigtable模型开发,典型的key/value系统
 具有松散的表结构,原生海量数据分布式存储;支持随机查询,范围查询
 高吞吐,低延迟
 列存储,多版本,增量导入,多维删除

Hbase与关系型数据库不同在于

  1. 允许数据冗余
  2. 允许列动态增加

HDFS vs HBASE
 HBase上数据是以storeFile(HFile)二进制流的形式存储在HDFS上block块中
 HDFS并不知道hbase存的是什么,它只把存储文件视为二进制文件,即hbase存储数据对于HDFS文件系统是透明的
在这里插入图片描述
在这里插入图片描述

HBASE特性
 大:一个表可有数十亿行,上百万列
 无模式:每行都有一个可排序的主键和任意多的列,列可根据需要动态的增加,同一张表中不同的行可有截然不同的列
 面向列:面向列(族)的存储和权限控制,列(族)独立检索
 稀疏,多维,排序的map:空(null)列不占用存储空间,表可以设计的非常稀疏;每个单元中数据可有多个版本,默认下版本号自动分配,是单元格插入时的时间戳
 数据类型单一:HBASE数据都是字符串,没有类型
 强一致性读写:HBASE不是最终一致性数据存储,它适合高速技术聚合类任务
 自动分片:HBASE表通过region分布在集群中,数据增长时,region会自动分割并重新分布
 RegionServer自动故障转移和负载均衡
 MapReduce: HBASE通过mapreduce支持大并发处理

 实时,随机地大数据访问;HBASE内部使用LSM-tree作为数据存储架构,LSM-tree周期性合并小文件到较大文件,来减少硬盘寻址
 Java客户端API:HBASE支持易于使用地java API进行编程访问
 Thrift/RESET API:HBASE也支持Thrift和REST作为非java前端的访问
 Block Cache和bloom filter:对于大容量查询优化,HBASE支持block cache和bloom filter
 快照支持

HBASE特性
 数据自动分区
在这里插入图片描述

 HBASE使用LSM树(log structured merge tree)
 随机写->顺序写 (HBASE写起来特别快
在这里插入图片描述

 HBASE生态
在这里插入图片描述

  • Kylin是一个多维的数据仓库,先对hbase进行建模并存在hbase中,之后从kylin来查询写好的模型

HBASE是面向列的存储
在这里插入图片描述

HBASE应用场景
 数据量较大,而且增长量无法预估的应用
 写密集型应用
 查询场景简单,检索条件较少,不需要复杂查询条件来查询数据应用
 对性能和可靠性要求非常高的应用,由于hbase本身没有单点故障,可用性非常高

HBASE基本解决三大类场景
 平台类:作为平台的底层存储使用,如kylin,阿里内部的日志同步工具TT,图组件Titan
 用户行为类:主要是面向各个业务系统,如淘宝收藏夹,交易数据,旺旺聊天
 报表展示类:实时响应,如报表,大屏等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

HBASE逻辑模型
 数据存储在表中,表具有行和列
 Rowkey: 行键,唯一地标识一行记录,且自动进行排序
 按字典排序地升序索引

在这里插入图片描述

 定位单元格:rowKey->columnName->version
在这里插入图片描述
在这里插入图片描述

HBASE表和分区
 表由任意数量地分区组成
 分区由其startKey和endKey组成

  • 空表:(table, null, null)
  • 两个分区地表:(table,null,’M’)和(table,’M’,NULL)
     每个分区有可能驻留在不同节点,由多个HDFS文件和块组成
    在这里插入图片描述

HBASE中,记录以key-value对的形式存储在HFILE中,HFile再以block块的形式存到HDFS中
 HFILE是作为二进制文件存储
 当MemStore中的数据被flush到磁盘中时,就创建了HFile
在这里插入图片描述

HBASE的核心数据结构就是map
 简单说,map就是key-value对集合
 HBASE中map是按照row key以字母顺序排序
 可将hbase中的表视为key-value表
在这里插入图片描述