2021SC@SDUSC
目录
一、HBase概述
什么是HBase
Hbase是一种构建在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统,主要用来存储非结构化和半结构化的松散数据。HBase利用hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务。HBase介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。
与hadoop一样,HBase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
Hbase采用java语言实现,在其内部实现了BigTable论文提到的一些压缩算法、内存操作和布隆过滤器等,这些能力使得HBase在海量数据存储、高性能读写场景中得到了大量应用,如Facebook在2010年11月开始便一直选用HBase来作为消息平台的存储层技术。
HBase模块
HBase中相关模块的作用
- Master
HBase Master用于协调多个Region Server,侦测各个RegionServer之间的状态,并平衡RegionServer之间的负载。具有为HRegionServer分配HRegion、负责HRegionServer的负载均衡、发现失效的HRegionServer并重新分配、HDFS上的垃圾文件回收、处理Schema更新请求的作用。Hbase允许多个Master节点共存,但是这需要Zookeeper的帮助。当正在工作的Master节点宕机时,其他的Master则会接管HBase的集群。 - Region Server
对于一个RegionServer而言,其包括了多个Region。RegionServer的作用只是管理表格,以及实现读写操作。具有维护HMaster分配给它的HRegion,处理对这些HRegion的IO请求、负责切分正在运行过程中变得过大的HRegion的作用。 - Zookeeper
对于HBase而言,Zookeeper的作用是至关重要的。首先Zookeeper是作为HBase Master的HA解决方案,并且Zookeeper负责Region Server的注册。
逻辑模型
以表的形式存放数据,表由行和列组成,每个列组成输入某个列族,由行和列确定的存储单元成为元素,每个元素保存了同一份数据的多个版本,由时间戳来标志区分。
特点
1.半结构化数据:
hbase设计上没有严格形态的数据,数据记录可能包含不一致的列、不确定的大小等
2.可扩展性:
(1)在半结构化逻辑模