博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hbase的wal机制
阅读量:4160 次
发布时间:2019-05-26

本文共 1423 字,大约阅读时间需要 4 分钟。

简介

hbase是基于LSM树的存储系统,它使用日志文件和内存存储来的存储架构将随机写转换成顺序写,以此保证稳定的数据插入速率。而这里说的日志文件即是wal文件,用于在服务器崩溃后回滚还没持久化的数据。

WAL(Write-Ahead-Log)预写日志是Hbase的RegionServer在处理数据插入和删除的过程中用来记录操作内容的一种日志。在每次Put、Delete等一条记录时,首先将其数据写入到RegionServer对应的HLog文件中去。

客户端向RegionServer端提交数据的时候,会先写入WAL日志,只有当WAL日志写入成功的时候,客户端才会被告诉提交数据成功。如果写WAL失败会告知客户端提交失败,这其实就是数据落地的过程。

在一个RegionServer上的所有Region都共享一个HLog,一次数据的提交先写入WAL,写入成功后,再写入menstore之中。当menstore的值达到一定的时候,就会形成一个个StoreFile。

Hbase容错处理

WAL记载了每一个RegionServer对应的HLog。RegionServer1或者RegionServer1上某一个regiong挂掉了,都会迁移到其它的机器上处理,重新操作,进行恢复。

当RegionServer意外终止的时候,Master会通过Zookeeper感知到,Master首先会处理遗留下来的HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应的Region目录下,然后再将实效的Region重新分配,领取到这些Regio你的RegionMaster发现有历史的HLog需要处理,因此会Replay HLog的数据到Memstore之中,然后flush数据到StoreFiles,完成数据的恢复。

Hbase适用场景

1.大数据量存储,大数据量高并发操作。

2.需要对数据随机读写操作。

3.读写访问均是非常简单的操作

Hbase使用WAL的目的

Write Ahead Log(WAL)将HBase中数据的所有更改记录到基于文件的存储中。在正常操作下,不需要WAL,因为数据更改从MemStore移动到StoreFiles。但是,如果在刷新MemStore之前RegionServer崩溃或变得不可用,则WAL确保可以重播对数据所做的更改。如果写入WAL失败,则修改数据的整个操作将失败。

HBase使用WAL接口的实现。通常,每个RegionServer只有一个WAL实例。一个例外是携带hbase:Meta的RegionServer;meta表有自己的专用WAL。在将它们的Mutations MemStore记录到受影响的Store之前,RegionServer将Puts和Deletes记录到它的WAL中。

HLog:在2.0之前,HBase中的WAL接口被命名HLog。在0.94中,HLog是WAL实施的名称。您可能会在为这些旧版本定制的文档中找到对HLog的引用。

WAL位于HDFS中的/hbase/WALs/目录下,每个区域有子目录。

Hbase和HDFS的关系

相同点:

二者都具有良好的容错性和扩展性,都可以扩展成百千上万个结点

不同点:

1.HDFS适合批处理场景。

2.HDFS不支持数据的随机查找、不适合增量数据处理、不支持数据更新。

关系:

Hbase内存管理的所有文件都存储在HDFS之中。

 

你可能感兴趣的文章
马云校长湖畔大学第三期讲义完整版
查看>>
iPhone为什么比Android好
查看>>
小程序的今天就是微信指数的明天
查看>>
从互联网到人工智能,BAT这七年来到底做了什么
查看>>
2012年十大科技趋势:Siri将震惊世界
查看>>
2017(第十届)中国绿公司年会马云演讲
查看>>
李彦宏:睡不着觉不是因对手
查看>>
从手Q与微信之争,看腾讯内在的真实矛盾与战略
查看>>
移动互联网的七宗败案
查看>>
互联网十大失败案
查看>>
小米颓势已现,生死劫命悬手机
查看>>
三大隐忧 三星未来路在何方?
查看>>
linux下各种进制转化最简单的的命令行
查看>>
结构体和联合体
查看>>
ACM(Association for Computing Machinery )组织的详细介绍
查看>>
unix高级编程之-命令行参数(实践一)
查看>>
无线网络加密方式对比 .
查看>>
linux中cat命令使用详解
查看>>
Static 作用详述
查看>>
透析ICMP协议(三): 牛刀初试之一 应用篇ping(ICMP.dll)
查看>>