一、数据存储
- 数据存储:HBase数据存储依赖于HDFS,自身不存储数据,所以HBase其实是个表数据管理的工具。
- 数据备份:HBase的数据可靠性完全依赖于HDFS进行数据备份(三副本),因此,HBase无需关心数据的可靠性,只需要关心服务的可靠性即可
二、HBase的服务可靠性如和保证?
通过转移管理权限。
HBase中的Region(真实数据存在HDFS)由Region Server进行管理,当ZooKeeper发现RS挂掉后,HMaster会将此RS上的Region数据进行迁移(其实所谓的迁移,只是将Region的管理权限迁移到其它的RS上,数据存储的位置仍然在HDFS上,没有改变)
二、数据结构和查询
HBase只在rowkey有索引,所以主要面向于基于rowkey进行简单的查询,HBase不适合复杂查询,如根据多个字段查询(没有索引,查询很慢),表关联直接不支持
HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定位。
HBase中rowkey可以唯一标识一行记录,在HBase查询的时候,有以下几种方式:
- 通过get方式,指定rowkey获取唯一一条记录
- 通过scan方式,设置startRow和stopRow参数进行范围匹配
- 全表扫描,即直接扫描整张表中所有行记录
三、HDFS
HDFS:存储和计算分离的架构
依赖 HDFS提供最终的 底层数据存储 服务, 多副本(三副本)
- HBase表的HDFS目录结构如下
/hbase
/data
/<Namespace> (集群里的Namespaces)
/<Table> (该集群的Tables)
/<Region> (该table的Regions)
/<ColumnFamily> (该Region的列族)
/<StoreFile> (该列族的StoreFiles)
- HLog的HDFS目录结构如下
/hbase
/WALs
/<RegionServer> (RegionServers)
/<WAL> (WAL files for the RegionServer)
四、 Hbase中HMaster作用
HMaster在功能上主要负责Table表和HRegion的管理工作,具体包括:
1、管理用户对Table表的增、删、改、查操作;
2、管理HRegion服务器的负载均衡,调整HRegion分布;
3、在HRegion分裂后,负责新HRegion的分配;
4、在HRegion服务器停机后,负责失效HRegion服务器上的HRegion迁移。
五、MemStore存储了哪些数据?
内存中会存储多个CF的数据,所以一次flush会生成多个StoreFile,并且有些StoreFile可能很小
这就是为什么要求HBase的CF不能设置太多,太多的话会频繁刷新磁盘,而且小文件会触发耗时的Compact操作