HBase写流程
1.Client从缓存中定位要写入的region的信息。如果没有,访问zookeeper,找到-MEAT-,以此确定要写入的region的信息
2.regionserver会先将更新写入到HLog中(HLog在hdfs中,因此丢失的风险很小),在写入WAL中之后,写入到写缓存memcache中
3.当写缓存的大小达到写缓存的阈值(默认64M)后,溢写到磁盘中
4.当磁盘中的溢写文件在3-10个时,会被合并成一个新的溢写文件(之前的溢写文件会被删除,并生成新的溢写文件)。
5.当溢写的文件增长到一定的大小之后,会被一分为2,分配给不同的regionserver进行管理。
HBase读流程
1.Client会先从自己的缓存中定位region,如果没有缓存,则去zookeeper查找。
2.在zookeeper获取元数据的表-META-所在的region,以此确定regionserver的位置
3.去-META-所在的regionserver获取到元数据表。将元数据表-META-缓存到Client的缓存中,然后在元数据表找到要查找的rowkey所在的regionserver。
4.客户端向rowkey所在的regionserver发起请求。先去写缓存memstore中查找,若找不到,则去读缓存blockcache中查找,若仍找不到,则去store文件中去查找