厦门大学林子雨开设的《大数据技术原理与应用》第四章分布式数据库HBase数据库笔记
HDFS:分布式文件系统
HBase:分布式数据库,存储半结构化或非结构化数据,并且提供了高效放到访问它是Google的BigTable的开源实现.BigTable建立在谷歌分布式文件系统GFS上,协同管理服务——Chubby
Chubby的开源实现:Zookeeper,分布式协调管理框架
Hadoop MapReduce:分布式计算框架。
HBase底层实现:
- 文件存储系统:HDFS
- 海量数据计算:Hadoop MapReduce
- 协同管理:Zookeeper
大数据/云计算模式:
批处理计算(离线计算):小时级响应, e.g Hadoop(HDFS,MapReduce)
实时分析(流数据):毫秒、秒级响应 e.g Storm 、 Flume、 S4
交互计算(在线计算):秒级、分钟级响应 e.g HBase
HBase和传统的关系型数据库(计算可扩展性差、数据库定义可扩展性差、只能纵向扩展)的区别和联系:
- HBase基于列存储
- HBase只支持对行键的简单索引
- HBase不会把旧的值覆盖,只是新建一个时间戳
- HBase水平扩展很容易
HBase访问接口:
- 提供了一个原生的JAVA API
- Shell命令
- 提供了SQL类型接口 e.g pig
- 数据仓库产品Hive——直接用SQL语句访问
HBase:
行键、列族、列(限定符)、时间戳四个元素来确定一个单元格的值
行式存储:高事务处理效率 适用OLTP(联机事务处理)
列式存储:高压缩率(一列的数据类型是一样的)、高查询效率、比较适合进行OLAP(联机分析处理)
HTAP:混合行列存储
HBase的功能组件:(一主多从的架构)
库函数(用于链接客户端)
Master服务器(主)
Region服务器(从):数据的存取 维护和管理
一个HBase表被划分成多个Region,一个Region会分裂成多个新的Region(一个Region最佳配置为1GB-2GB)
同一个Region不会被拆分到不同的服务器 一个服务器大约有1000个Region
HRegionServer存储结构:
包括10 - 1000个Region和一个HLog,每个Region包括:MemStore、StoreFile(HFile)
HBase设计了三层,实现寻址和定位
元数据表:两列分别为Region id -> Region server(放在.Meta文件-映射表,存放元数据)
随着数据的增多,.Meta文件也会增大
.ROOT:META Region id -> Region Server(最多只有一个Region)
Zookeeper -> .ROOT -> .META -> 记录表的Region信息
HBase的寻址访问:
.Meta:Data Region id -> Region Server
.Root:Root id -> Meta Region id
为了加速寻址,客户端会缓存位置信息,同时,需要解决缓存失效问题。若缓存失效,重新三层寻址。
HBase架构:
- 客户端:提供HBase的访问接口;
- Zookeeper:提供集群的协调管理服务;
- HMaster:元数据管理;数据的管理(增删改查请求,负载均衡、Region的管理)
- HRegionServer:提供了实际数据的读写访问