HBase面试相关的问题

一、HBase为什么查询快? (寻址机制)

    根据rowkey查询时, 首先根据 region server 判断出该 rowkey 在不在这个regionserver管理的region的rowkey范围中, 这样就   能锁定rowkey所在的region, 然后根据布隆过滤器可以反向找出这个  rowkey 在这个 region 的哪一个StoreFile 中, 这样就实现了快速寻址。

二、HRegionServer中数据写流程

    1. 当客户端发起一个Put请求时, 首先它从hbase:meta表中查出该Put数据最终需要去的HRegionServer。然后客户端将Put请  求发送给相应的HRegionServer,在HRegionServer中它首先会将该   Put操作写入WAL日志文件中(Flush到磁盘中)

     2. 写完WAL日志文件后,HRegionServer根据Put中的TableName和RowKey找到相对应的HRegion, 并根据Column Family找到对应的HStore,并将Put写入到该HStore的MemStore中。此时写成功,  并返回通知客户端。

三、HBase rowkey设计原则

    首先, rowkey的长度尽量小一些,尽量不超过16个字节,避免占用太大的资源,影响存储效率和检索;遵循rowkey散列原则,可以实现负载均衡;设计上必须保证rowkey的唯一性; rowkey是按照字典  排序的,因此,一些场景可以利用这个特性,比如一天的数据存储到一块, 可以提高检索效率。总之,rowkey 的设计是很灵活的,需要视具体需求而定设计方法。

猜你喜欢

转载自www.cnblogs.com/fjdsj/p/10094382.html