其余更多java基础文章:
java基础学习(目录)java
一个RegionServer能够包含多个HRegion,每一个RegionServer维护一个HLog,和多个HFiles以及其对应的MemStore。RegionServer运行于DataNode上,数量能够与DatNode数量一致。缓存
HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值能够设定)。若是机器忽然原地爆炸,把数据保存在内存中会引发数据丢失,为了解决这个问题,数据会先写在一个叫作Write-Ahead logfile的文件中,而后再写入内存中。因此在系统出现故障的时候,数据能够经过这个日志文件重建。服务器
Hbase表的分片,HBase表会根据RowKey值被切分红不一样的region存储在RegionServer中,在一个RegionServer中能够有多个不一样的region负载均衡
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。框架
HFile存储在Store中,一个Store对应HBase表中的一个列族post
顾名思义,就是内存存储,位于内存中,用来保存当前的数据操做,因此当数据保存在WAL中以后,RegsionServer会在内存中存储键值对。学习
HMaster与HRegionServer 启动时会向ZooKeeper注册,存储全部HRegion的寻址入口,实时监控HRegionserver的上线和下线信息。并实时通知给HMaster,存储HBase的schema和table元数据,默认状况下,HBase 管理ZooKeeper 实例,Zookeeper的引入使得HMaster再也不是单点故障。通常状况下会启动两个HMaster,非Active的HMaster会按期的和Active HMaster通讯以获取其最新状态,从而保证它是实时更新的,于是若是启动了多个HMaster反而增长了Active HMaster的负担。3d
HRegionServer保存着meta表以及表数据,要访问表数据,首先Client先去访问zookeeper,从zookeeper里面获取meta表所在的位置信息,即找到这个meta表在哪一个HRegionServer上保存着。日志
接着Client经过刚才获取到的HRegionServer的IP来访问Meta表所在的HRegionServer,从而读取到Meta,进而获取到Meta表中存放的元数据。cdn
Client经过元数据中存储的信息,访问对应的HRegionServer,而后扫描所在HRegionServer的Memstore和Storefile来查询数据。
最后HRegionServer把查询到的数据响应给Client。
Client也是先访问zookeeper,找到Meta表,并获取Meta表元数据。肯定当前将要写入的数据所对应的HRegion和HRegionServer服务器。
Client向该HRegionServer服务器发起写入数据请求,而后HRegionServer收到请求并响应。
Client先把数据写入到HLog,以防止数据丢失。而后将数据写入到Memstore。若是HLog和Memstore均写入成功,则这条数据写入成功。