详谈HBase框架图
最底层是HDFS,HBase是基于HDFS上构建的框架。
DATa Node是管理在Linux系统上的文件夹,(习惯上称作实际的存储框架就DATa Node(是Java进程),实际上是不能存储的,其实是管理数据的地方)
上层是HBase,HBase还要依赖于Zoo’eKeeper,所以在启动HBase之前就要先启动ZooKeeper和Hadoop。
HBase里面有一个HMaster(高可用),是管理整个集群的作用。HMaster会将高可用的信息存到ZooKeeper
HRegionServer就相当于HDFS里面的DataNote的作用是一样的(实际存储业务的地方)也是java进程
HRegionServer里面有一个HLog,HLog就是一个操作日志(一个Region Server里面只有一个HLog),HLog相当于一个操作日志,提前把数据保存在磁盘(其实就是保存在HDFS上面),防止数据丢失。先执行HLog后执行MemStore。
GRegionServer里面还有一个HRegion(就是MySQL中的一张一张表,一个HRegion就是一张表)当数据特别大时,一张表就会切分,这时候,一张表就会对应多个HRegion。
HRegion里面会有Store(一个Store就对应一个列族,一张表里面可以有多个列族)
在HBase中会将不同的列族分开存储的,所以就会有多个Store。
Store(列族)里面会分成多个小的Store称作MemStore(内存级别的存储:内存容量有限(不安全),要把数据存到磁盘(硬盘)里面)
Sotre里面还有一些StoreFile(磁盘里面),一个Store File就是一个一个MenStore刷写下来的File文件
Store File里面还会有HFile,数据就是以HFile(HFile是一种存储格式)格式存储在HDFS上面的
最终StoreFile是以HFile形式存储在DataNode上面的,最终也就是存在Linux本地的文件系统上面。
小结:
上面的全部主导都是HMaster协调这些事情来做的
开始是由Client(客户端)触发读写请求的
主要核心的两个进程(1)HMaster:整体管理集群的(管理HRegionServer工作的,协调整个数据的负载均衡)(2)**HRegionServer:**实际的工作者
HRegion达到一定数据量的时候,按照数据量平均切分。
Client访问顺序:先内存后磁盘
触发Flash的三种情况:
1)HRegionServer整个内存达到40%也会触发
2)MemStore任意数据存储一小时了也会触发
3)HRegion所有内存相加超过128MG也会触发
HBase主要的目的就是可以在HDFS上实现随机读写