作者:清皮皮 | 来源:互联网 | 2023-08-28 15:38
**1.**发起请求,请求到zookeeper集群,帮助你返回元数据位置机器,找到这个机器,请求RS下载元数据表(meta)**2.**返回元数据表,然后做一个缓存解析,开始解析所
**1.**发起请求,请求到zookeeper集群,帮助你返回元数据位置机器,找到这个机器,请求RS下载元数据表(meta)
**2.**返回元数据表,然后做一个缓存解析,开始解析所拿到的表的行数据在哪个Region里,开始请求这个Region获取数据
**3.**取的数据可能取一个store或两个store
3.1先从region的内存(Memstore)中找,有的话返回,并且加到缓存块(CacheBlock)里,如果内存中有,写到缓存里,
3.2 如果内存中没有,就从缓存拿,然后返回,
3. 3 如果缓存里也没有,就去Hfile中获取数据,(效率低)
4. 在HDFS对应的region中可能有很对个列族,在每个列族文件夹中可能有很多Hfile文件,要确定查询的key在哪个文件中,如果文件太多,一个一个找太麻烦,所以引入了一个算法:布隆过滤器布隆过滤器在Hbase中的应用–有了布隆过滤器后,从大量的文件里定位到具体哪个文件里有,在hfile里打一个标记
5. 根据rowkey,hashcode值确定位置是0还是1,是0的话绝对不存在,是1有可能存在
6. 在进行拿key的时候不是再次遍历,而是有一个index索引,它告诉你文件在这个索引里,进来以后看这个索引index,startkey,没有的话瞬间就走了,如果有的话瞬间就能找到这个数据块,然后就拿走了