Hbase知识点总结

一.客户端存储与读取数据流程

    首先,存储数据的region信息是在hbase:meta(元数据表)中管理,而管理hbase:meta的region(只有一个)的位置是由zookeeper管理的。因此client查询数据的流程:1.client首先查询zookeeper中管理hbase:meta的region位置。2.找到管理hbase:meta的region后就找到了hbase:meta。 3.找到hbase:meta后,在meta中scan(扫描)数据的region。4. 找到管理数据的region后就找到了需要查询的数据。(其中region是由HRegionServer管理)

二. HMaster 连接zookeeper

    HMaster连接zookeeper是为了查找HRegionServer的位置然后管理HRegionServer。

三. HBase数据存储

HBase中所有数据文件都是存储在Hadoop HDFS文件系统上,主要包括两种文件。

    1.HFile: HBase中KeyValue数据存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile的轻量级包装,进行数据存储。

    2.Hlog File ,HBase中WAL(预写日志)的存储格式,物理上是Hadoop的Sequence File。

HBase存储数据是首先会向HLog存储一份以防HRegionServer宕机,在向MenStore存储。

四. HRegionServer

        HRegionServer内部管理了一系列的HRegion对象,每个HRegion对应了table中的一个region,HRgion中由多个HStore组成。每个Hstore对应了Table中的column family(列簇),可以看出每个列簇就是一个集中地存储单元,因此最好将具备共同IO特性的column放在一个column family中,这样最高效。

        HStore存储时HBase的核心,有两部分组成,一部分是MenStore,一部分是StoreFile。MEMStore是Stored Memory Buffer,用户写入的数据首先会当如MemStore,当MemStore满了以后就会Flush成一个StoreFile(底层实现是HFile)。

五. MemStore和StoreFile

        Client写入->存入MemStore,一直到MEMStore存满->Flush成一个StoreFile,直到增长到一定阈值->触发Compact合并操作->将多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除->当StoreFile Compact后,逐步形成越来越大的StoreFile->单个StoreFile大小超过一定阈值之后,触发Split操作,把当前RegionSplit成2个Region ,Region会下线,新Split的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流道2个Region上。

        Hbase只是增加数据,所有的更新和删除操作都是在Compact阶段做的,所以,用户写操作只需要进入到内存中即可立即返回,从而保证I/O高性能。

六. HLog文件结构

        WAL以为Write Ahead log,类似MySQL中的binlog,用来做灾后恢复。

    

    

猜你喜欢

转载自blog.csdn.net/nieji3057/article/details/80074589