开发者社区> 问答> 正文

Region写入流程的步骤是什么?

Region写入流程的步骤是什么?

展开
收起
游客fbdr25iajcjto 2021-12-05 18:06:27 624 0
1 条回答
写回答
取消 提交回答
  • 1)Acquire locks :HBase中使用行锁保证对同一行数据的更新都是互斥操作,用以保证更新的原子性,要么更新成功,要么更新失败。

    2)Update LATEST_TIMESTAMP timestamps :更新所有待写入(更新)KeyValue的时间戳为当前系统时间。

    3)Build WAL edit :HBase使用WAL机制保证数据可靠性,即首先写日志再写缓存,即使发生宕机,也可以通过恢复HLog还原出原始数据。该步骤就是在内存中构建WALEdit对象,为了保证Region级别事务的写入原子性,一次写入操作中所有KeyValue会构建成一条WALEdit记录。

    4)Append WALEdit To WAL :将步骤3中构造在内存中的WALEdit记录顺序写入HLog中,此时不需要执行sync操作。当前版本的HBase使用了disruptor实现了高效的生产者消费者队列,来实现WAL的追加写入操作。

    5)Write back to MemStore:写入WAL之后再将数据写入MemStore。

    6)Release row locks:释放行锁。

    7)Sync wal :HLog真正sync到HDFS,在释放行锁之后执行sync操作是为了尽量减少持锁时间,提升写性能。如果sync失败,执行回滚操作将MemStore中已经写入的数据移除。

    8)结束写事务:此时该线程的更新操作才会对其他读请求可见,更新才实际生效。

    2021-12-05 18:06:59
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载