千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > HBase系列常见面试题汇总---HBase如何保证读的高效以及数据的强一致性

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

来源:千锋教育
发布人:syq
时间: 2022-08-12 11:15:16 1660274116

  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万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT