开发者社区> 问答> 正文

HLog到最终落地到HDFS上的步骤是什么?

HLog到最终落地到HDFS上的步骤是什么?

展开
收起
游客fbdr25iajcjto 2021-12-06 00:02:18 457 0
1 条回答
写回答
取消 提交回答
  • (1)当WALEdit对象写入到本地系统的缓存后,会产生一个自增变量txid。且当WALEdit对象全部写入之后,会释放行锁、共享锁。

    (2)待WALEdit对象全部写完在之后,负责将WALEdit对象写入到HLog的线程会阻塞在syncedTillHere里面。

    (3)待行锁和共享锁释放之后,会携带自增变量txid去唤醒AsyncWriter线程

    (4)AsyncWriter线程会将所有在本地buffer中缓存的WALEdit对象写入到HDFS文件系统缓存中(在写入的过程中,AsyncWriter先会对比之前写入的旧的txid,比较传进来的txid是否大于,若小于,则表示已经写入过了,直接跳过)

    (5)当AsyncWriter线程将所有的WALEdit对象写入到HDFS文件系统缓存中后,会携带maxTxid去唤醒AsyncFlusher线程

    (6)此时AsyncFlusher线程会将所有写入到HDFS文件系统缓存的WALEdit对象全部Sync落地到HDFS上(HFile中)

    (7)待WALEdit对象全部落地到HDFS上后,会调用setFlushTxid方法唤醒AsyncNotifier线程

    (8)AsyncNotifier线程会唤醒所有阻塞在syncedTillHere的工作线程。所有工作线程被唤醒之后,则表示WAL写入完成

    (9)执行MVCC结束写事务

    2021-12-06 08:09:53
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
海量数据分布式存储——Apache HDFS之最新进展 立即下载
HareQL:快速HBase查询工具的发展过程 立即下载
Hadoop存储与计算分离实践 立即下载