Hbase 写工作机制

客户端——MemStore——列族——Hfile

1、Hbase在执行写操作的时候,首先会将写动作记录在hlog,memstore中,只有在这两个地方都确认完成后才被记录操作成功。

Memstore是内存里面的缓冲区,Hbase在在写入硬盘之前会在这个缓冲区内积累,当MemStore的数据量达到阀值时,才开始向硬盘中写入,在列族中生成一个HFile文件,一个列族可以有多个HFile文件。

2、那么现在就面临一个问题,大型集群中出现故障很正常,如果MemStore没有来的急刷写,服务器挂掉了咋办?

Hbase采用的机制时在写动作完成之前写入wal,每一台服务器维护着一个  WAL文件,记录着发生的变化,直到在该文件中新纪录写入成功之后才被认为时成功,如果出现当机可以通过WAL 来恢复数据。不需要手动执行恢复。如果想禁用wal,  可以通过

Put p = new Put();

p.setWriteToWal(false);

来禁用。

如有错误大家积极提出,一同进步。


你可能感兴趣的:(Hbase 写工作机制)