HBase概述
HBase是一个领先的NoSQL数据库
是一个面向列存储的NoSQL数据库
是一个分布式Hash Map,底层数据是Key-Value格式
基于Google Big Table论文
使用HDFS作为存储并利用其可靠性
HBase特点
数据访问速度快,响应时间约2-20毫秒
支持随机读写,每个节点20k~100k+ ops/s
可扩展性,可扩展到20,000+节点
高并发
应用场景:
1、增量数据-时间序列数据
高容量,高速写入
HBase之上有OpenTSDB模块,可以满足时序类场景
2、信息交换-消息传递
高容量,高速读写
通信、消息同步的应用构建在HBase之上,比如email,FaceBook等
3、内容服务-Web后端应用程序
高容量,高速读写
头条类、新闻类的的新闻、网页、图片存储在HBase中
二、物理架构
HBase采用Master/Slave架构
HMaster
RegionServer
Zookeeper
HBase Client
Region
1、HMaster的作用
是HBase集群的主节点,可以配置多个,用来实现HA
处理元数据的变更
监控RegionServer
负责RegionServer的负载均衡
处理RegionServer故障转移
通过ZooKeeper发布自己的位置给客户端
2、RegionServer负责管理维护Region,负责存储HBase实际数据
一个RegionServer包含一个WAL、一个BlockCache (读缓存)和多个Region
一个Region包含多个存储区,每个存储区对应一个列族
一个存储区由多个StoreFile和MemStore组成
一个StoreFile对应于一个HFile和一个列族
HFile和WAL作为序列化文件保存在HDFS上
Client与RegionServer交互
其功能:
负责管理HBase的实际数据
处理分配给它的Region
刷新缓存到HDFS
维护HLog
执行Compaction
负责处理Region分片
3:、Region和Table
单个Table(表)被分区成大小大致相同的Region
Region是HBase集群分布数据的最小单位
Region被分配给集群中的RegionServer
一个Region只能分配给一个RegionServer
HBase逻辑架构 - Row
Rowkey(行键)是唯一的并已排序
Schema可以定义何时插入记录
每个Row都可以定义自己的列,即使其他Row不使用
相关列定义为列族
使用唯一时间戳维护多个Row版本
在不同版本中值类型可以不同
HBase数据全部以字节存储
HBase元数据管理
数据管理目录
系统目录表hbase:meta
存储元数据
ZooKeeper存储hbase:meta表的位置信息
HBase实际数据存储在HDFS上