注意:zk:zookeeper rs:RegionServer
寻址机制
阶段一:HBase-0.96版本之前
流程:client ---> -root表 -----> .meta表 ----> region 即三层跳转
1. client向zk发送请求,获得root所在的rs地址
2. client请求root所在的rs地址,获取meta表地址,并cache相关信息,以便于下次访问
3. client请求meta表的rs地址,获取访问数据所在的rs地址信息,并cache相关信息,以便于下次访问
4. 根据信息访问对应的rs,并获取数据
阶段二: HBase-0.96版本之后
流程: client ----> meta表 -----> region
1. client请求zk获取相应的meta表所在的rs地址
2. 请求meta所在的rs获取数据所在的rs地址,并cache下来,以便于下次访问
3. client访问数据所在的rs,获取数据
读流程:
1. client向zk发送读请求,从meta表中读取数据所在的region的位置,获得相应的rs信息
2. 通过rs找到对应的region
3. 先从MemStore找数据,如果没有则去blockcache里读取,如果没有则去storeFile里读数据
4. 注意:如果是从storeFile中读取的数据,则把数据写入BlockCache再返回给客户端
写流程:
1. client向zk发送写请求,获取可以写入的rs中的region
2. 数据写入Hlog和MemStore
3. 当MemStore达到阈值时,将数据flush成一个storefile
4. 当storefile文件不断的增多,触发合并操作,合并为一个大的storefile并进行数据的删除、修改
5. 当storefile大小达到一个阈值时,触发region的切分操作,将原来的region切分为两个新的region
6. 父region退役,子region注册上线。