赞
踩
目录
从图中可以看出,HBase是由Client、Zookeeper、HMaster、HRegionServer、HDFS等几个组件组成。
下面介绍一下几个组件的相关功能:
Client包含了访问HBase的接口,另外Client还维护了对应的cache来加速HBase的访问,比如cache的.META元数据的信息。
HBase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。具体工作如下:
master节点的主要职责如下:
HregionServer直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下:
HDFS为HBase提供最终的底层数据存储服务,同时为HBase提供高可用(Hlog存储在HDFS)的支持,具体功能概括如下:
HBase表的分片,HBase表会根据RowKey值被切分成不同的HRegion存储在RegionServer中,每个HRegion会分散在不同的RegionServer中,但一个HRegion是不会拆分到多个RegionServer上的。 HRegion是Hbase中分布式存储和负载均衡的最小单元。
每个HRegion由多个Store构成,每个Store由一个MemStore和0或多个StoreFile组成,每个Store保存一个Columns Family。
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。HRegion虽然是分布式存储的最小单元,但并不是存储的最小单元。StoreFile是以HFile的形式存储在HDFS的。
HFile的格式参考如下:
HFile分为六个部分:
HFile的Data Block,Meta Block通常采用压缩方式存储,压缩之后可以大大减少网络IO和磁盘IO,随之而来的开销当然是需要花费cpu进行压缩和解压缩。目标HFile的压缩支持两种方式:Gzip,Lzo。
memstore是一块内存区域,写入的数据会先写入memstore进行缓冲,然后再把数据刷到磁盘 。内存存储存当前的数据操作,所以当数据保存在WAL中之后,RegsionServer会在内存中存储键值对。
当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。
HBase
有一个叫做Meta
的特殊的目录表,用于保存集群中Regions
的位置信息(Region
列表)。ZooKeeper
存储着Meta
表的位置。
与nosql数据库们一样,RowKey是用来检索记录的主键。访问HBASE table中的行,只有三种方式:
1)通过单个RowKey访问(get)
2)通过RowKey的range(正则)(like)
3)全表扫描(scan)
RowKey行键 (RowKey)可以是任意字符串(最大长度是64KB,实际应用中长度一般为 10-100bytes),在HBASE内部,RowKey保存为字节数组。存储时,数据按照RowKey的字典序(byte order)排序存储。设计RowKey时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。