全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

HBase系列常见面试题汇总---HBase如何保证读的高效以及数据的强一致性

发布时间:2022-08-12 11:15:16
发布人:syq

  1.HBase如何保证读的高效?

  缓存

  * HBase 有两块主要的内存缓存,MemStore 和 BlockCache。 * 一个查询过来 RegionServer 后,首先用 MemStoreScanner 搜索 MemStore 里是否有所查的 rowKey ,这一步在内存中,所以是很快的。 * 如果不在 memstore 中,会经过一系列的索引寻址定位到 Block 的位置。如果 Block 在 BlockCache 缓存中则可以直接在内存中操作,速度很快,不需要再进行一次 IO 将整个 Block 读取到内存中。

HBase如何保证读的高效

  过滤

  * RegionServer 启动的时候就会把每个 HFile 的起止 Rowkey 加载到内存中,在定位 HFile 的时候可以过滤掉大部分 HFile * 加载到内存中的Bloom Block也会通过BloomFilte也会过滤掉大部分一定不包含所查RowKey的HFile。

  索引

  * 经过了上面的过滤,其实只剩下很少一部分的 HFile 需要去检索了,HBase 有三级索引,第一级索引会常驻内存,二三级的索引会以 Block 的形式存在 HFile 中。 * 另外因为 HBase 是多版本共存的,所以结果可能是会有多个的,因此检索的过程不是找到一个就返回了,而是要找到所有的,然后将结果合并。

  2.HBase 如何保证数据的强一致性?

  HBase 是牺牲了数据的部分可用性来保证它的数据强一致性的,即CAP原理中舍弃了一部分的可用性,HBase 是个 CP系统。

  * HBase 中每一条数据只会出现在一个 Region,它的数据冗余备份不是在 Region 这个层面做的,还是依赖 HDFS 来做的冗余。而且同一时间一个 Region 只会被分配给一个 RegionServer,这就保证了系统中只会有一条可以使用的数据。HBase 支持行级事物,即一个 put 操作要么成功,要么失败。

  * 另外当有 RegionServer 宕机的时候,Region 会被分配到其他的 RegionServer 上,同时重写 WAL Log,这个过程中整个 Region 中的数据是不可用的,因为它是缺失的。如果可用性强的话那么必定会有数据不一致的问题(即写入过的数据查询不到),所以这里用可用性来换取了强一致性,等到 WAL 写完,保证了数据完整性之后,才可重新访问。

  更多关于“大数据培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

相关文章

明道、teambition、Tower.im、Worktile、trello的功能都有哪些?

明道、teambition、Tower.im、Worktile、trello的功能都有哪些?

2023-10-14
反欺诈中所用到的机器学习模型有哪些?

反欺诈中所用到的机器学习模型有哪些?

2023-10-14
强化学习中on-policy与off-policy有什么区别?

强化学习中on-policy与off-policy有什么区别?

2023-10-14
为什么交叉熵可以用于计算代价?

为什么交叉熵可以用于计算代价?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取