一、数据存储

  • 数据存储: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查询的时候,有以下几种方式:

  1. 通过get方式,指定rowkey获取唯一一条记录
  2. 通过scan方式,设置startRow和stopRow参数进行范围匹配
  3. 全表扫描,即直接扫描整张表中所有行记录


三、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操作