这周主要学习了Hbase的原理以及Hbase的编程实例,还有MapReduce实例,这篇文章主要简单的介绍HBase的原理,详细的介绍环境的搭建以及编程的实例。MapReduce实例开发会作为单独的一篇文章来写。
一、HBase原理
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价的PC Server上搭建起大规模集群,它是一个可以随机访问的存储和检索数据的平台。它不介意数据类型,允许动态的,灵活的数据类型。以上关于HBase的定义来自学习的课件中。以下关于自己的理解,HBase为一个可分布式的存储系统,弥补了HDFS不可随机访问的不足,数据是以Byte表的形式存储,所以不介意数据的类型,即任何数据类型均可存储。它的架构图如下所示:
以上为HBase的一个架构图,包含client、Zookeeper、HMaster、HRegionServer等
Client:包含HBase的访问接口,RegionServer等信息
RegionServer:为HBase中一个较为核心的模块,主要负责相应用户的IO请求,如HDFS中文件读写,管理多个Region对象
HRegion:HBase内包含多个HRegion,相当于HBase中的一个单位
Store:封装了HFile,存储于HDFS中
MemStore:内存中的数据缓存,类似Oracle的Buffer Cache
HMaster:为RegionServer分配region,负责RegionServer的负载均衡
Zookeeper:主要负责管理集群,存储所有Region的寻址入口,实时监控RegionServer的状态
HBase的逻辑模型如下图所示,有行和列组成,列划分为若干个列族,一般情况下用一个列族,多行列,行健(rowkey)为表的主键,可以通过rowkey来检索数据。时间戳为存储数据的时间,行和列为一个单元(cell),一般每个cell都保存同一份数据的多个版本,因此时间戳可以确定数据的版本。rowkey一般是通过字典排序,采用倒叙的方式。因此最前面的为最新的数据。