1.HBase 数据读取流程分析,从 zookeeper 获得 meta 表所在 region 位置,再根据 table、namespace、rowkey 去 meta 表中获取读对象所在的 RegionServer。
1.HBase如何保证读的高效?缓存:* HBase 有两块主要的内存缓存,MemStore 和 BlockCache。 * 一个查询过来 RegionServer 后,首先用 MemStoreScanner 搜索 MemStore 里是否有所查的 rowKey ,这一步在内存中,所以是很快的。 * 如果不在 memstore 中,会经过一系列的索引寻址定位到 Block 的位置。如果 Block 在 BlockCache 缓存中则可以直接在内存中操作,速度很快,不需要再进行一次 IO 将整个 Bl
1.怎么实现HBase的加盐之后的Key找Value?两种方式:如果是随机加盐,通过自定义一个HBase协处理器[coprocessors]来实现。加盐时,使用hash截取拼接的方式,这样查找时,采用同样的方式拼接查找即可(rowkey计算md5,sha256等截取前几位+原始rowkey拼接, 不利于scan,但是get能精确定位)
MVCC(Multi Version Consistency Control),简单地说,是一种通过数据的多版本来解决读写一致性问题的解决方案。我们知道 HBase 是会保留多版本的数据的,每次写入都会产生一个新版本的数据,每次读取都会默认读最新版本的数据,那么 HBase 是在并发请求的场景下是怎么控制这些多版本的呢?下面是对HBase的MVCC多版本并发机制的具体介绍。
BloomFilter* 默认值为 NONE,布隆过滤器的作用是可以过滤掉大部分不存在目标查询值的 HFile(即略去不必要的磁盘扫描),可以有助于降低读取延迟。 配置方式: create 'table',{BLOOMFILTER =>'ROW |ROWCOL'} * ROW,表示对 Rowkey 进行布隆过滤,Rowkey 的哈希值在每次写入行时会被添加到布隆过滤器中,在读的时候就会通过布隆过滤器过滤掉大部分无效目标。 * ROWCOL 表示行键 + 列簇 + 列的哈希将在每次插入行时添加到布隆