HBase学习笔记
1.Hbase是一个用java语言实现的,构建于Hadoop分布式系统(HDFS)上的分布式数据库。
2.HBase的特点:
a:海量存储
b:列式存储(可以针对列进行权限控制和读取)
c:多版本:根据时间戳存储不同版本的数据
d:稀疏性:
1. 为空的列不占用实际存储空间
2.传统数据库为空的列依然要占用存储空间
e:高扩展,高可用性:底层基于HDFS,高可用和扩展性得到了保障。
3.HBase中表结构模型
a:表(table):用于存储管理数据,具有稀疏性,面向列的特点。
b:行键(RowKey):类似于MYSQL中的主键,HBase根据行键来快速检索数据,一个行键对应一条记录。与MYSQL主键不同的是,HBase的行键是天然固有的,每一行数据都存在行键。
c:列簇(ColumnFamily):是列的集合。列族在表定义是需要指定,而列在插入数据是动态指定。列中的数据都是以二进制的形式存在,没有数据类型。
d:时间戳(TimeStamp):是列的一个属性,是一个64位整数。由行键和列确定的单元格,可以存储多个数据,每个数据含有时间戳属性,数据具有版本特性。可以根据版本或时间戳来指定查询历史版本数据,如果都不指定,则默认返回最新版本的数据。
4.HBase系统架构
可以看出HBase需要依赖Zookeepeer和HDFS。
a:Zookeeper
1:保证任何时候,集群中只有一个running master,避免单点问题;
2:存储所有Region的寻址入口,包括表地址,HMaster地址;
3:实时监控Region Server的状态,将Region Server的上线和下线信息,实时通知通知给Master;
4:存储Hbase的schema,包括有哪些table,每个table有哪些column family
b:Master:可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。
c:RegionServer:HBase中最核心的模块,主要负责响应用户的I/O请求,向HDFS文件系统中读写数据。
d:HDFS:负责存储数据。