Hadoop 复习整理(HBase)

HBase数据模型

对比关系型数据库管理系统(RDBMS)理解HBase

  HBase RDBMS
数据类型 HBase只有字符串(字节数组) RDBMS有丰富的数据类型
数据操作 HBase只支持增删改查 RDBMS支持SQL语句
存储模式 HBase基于列存储 RDBMS基于行存储
数据更新 HBase数据有多个版本 RDBMS更新后覆盖
扩展性 HBase具有很高的扩展性 RDBMS扩展性有限

逻辑视图

rowkey:
   row key是用来检索记录的主键。访问hbasetable中的行,只有三种方式:通过单个row key访问;通过row key的range;全表扫描。
   row key行键(Row key)可以是任意字符串(最大长度是64KB,实际应用中长度一般为10-100bytes),在hbase内部,row key保存为字节数组。存储时,数据按照Row key的字典序(byte order)排序存储。设计key时,要充分利用排序存储这个特性,将经常一起读取的行存储放到一起。
列族(column family)
hbase表中的每个列,都归属与某个列族。
列族是表的schema的一部分(而列不是),必须在使用表之前定义。
列名都以列族作为前缀。
单元(cell)
HBase中通过row和columns确定的为一个存贮单元称为cell。cell中的数据是没有类型的,全部是字节码形式存贮
时间戳(timestamp)
每个cell都保存着同一份数据的多个版本。
版本通过时间戳来索引。
时间戳可以由hbase(在数据写入时自动)赋值,此时是精确到毫秒的当前系统时间。也可以由客户显式赋值。
每个cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。
hbase提供了两种数据版本回收方式。一是保存数据的最后n个版本,二是保存最近一段时间内的版本(比如最近七天)。


HBase架构

HMaster
1.管理用户的增删改查等操作。
2.协调RegionServer:
   为RegionServer分配Region。
   发现失效的RegionServer并重新分配其上的Region。
   监控集群上所有RS的健康状态(通过zk)。

RegionServer
响应用户I/O请求,向HDFS文件系统中读写数据。
内部管理了一系列HRegion对象。
每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。
每个HStore对应了Table中的一个Column Family的存储。
Hfile: HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件。
HRegionServer中都包含一个WAL(write a head log)。用于保存还未持久化存储的数据,用户数据的还原。
RS用于切分过大的Region。

Region
HBase使用RowKey将表水平切割成多个HRegion。
从HMaster的角度,每个HRegion都纪录了它的StartKey和EndKey。由于RowKey是排序的,因而Client可以通过HMaster快速的定位每个RowKey在哪个HRegion中。
HRegion由HMaster分配到相应的HRegionServer中,然后由HRegionServer负责HRegion的启动和管理,和Client的通信,负责数据的读(使用HDFS)
每个HRegionServer可以同时管理1000个左右的HRegion。

Zookeeper
Zookeeper是一个分布式的协调服务。
ZK管理着HMaster和HRegionServer的状态(available/alive等) 。
ZK提供了宕机时通知功能,从而实现Hmaster的failover机制,RegionServer的failover机制。

在HMaster和HRegionServer连接到ZooKeeper后创建Ephemeral节点,并使用Heartbeat机制维持这个节点的存活状态。
Hmaster的监控zookeeper的ephemeral节点来监控RS的存活状态(默认:/hbase/rs/*)。
备用HMaster监控Zookeeper中的ephemeral节点,如果Active状态的HMaster宕机,且备用HMaster收到通知后切换为Active状态。

猜你喜欢

转载自blog.csdn.net/qq_36290948/article/details/87096386