HDFS元数据管理

1.原理

如下图我红色标出的字所示,元数据核心点就在于引入双缓冲机制+分段加锁,详细内容可以参考我的Notion笔记:

https://prickle-art-18b.notion.site/1-2-HDFS-b60e89aaf677487a9bc666edd6a01815

 大致步骤:

  1. 第一次启动NameNode前的格式化(hdfs namenode -format)操作会创建 fsimage 和 editlog 文件,启动之后会把 fsimage 加载到内存。

  2. 客户端写数据,会先记录到 editlog文件中,editlog 修改完成之后,会再更新内存中的文件系统镜像(WAL)

  3. JournalNode同步元数据(时刻监测EditLog文件)(共享存储系统是实现高可用关键)

2.源码流程图

大致可以分为以下步骤:

  1. 双缓冲机制+分段加锁 —> 磁盘写 变 内存写

  2. new path传入目录路径(FileTest.java —> DistributedFileSystem.java —> DFSClient.java)

  3. NameNodeRpcServer.java —> FSNamesystem.java

  4. 到达FSDirectory目录树类,创建目录

  5. 通过editlog调用,拿到两种stream向JournalNode和NameNode写日志(都用到双缓冲区,见上面图)

  6. NameNode落盘

  7. 备用NameNode同步元数据(走http方式)(StandbyCheckpointer.java)

  8. 上传数据到active namenode

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值