Hadoop源码分析之NameNode--Format

本文详细探讨了Hadoop NameNode的Format操作,包括启动时的检查、format命令的使用及其参数,以及Format过程中的关键步骤,如初始化日志系统和处理确认操作。此外,还提到了不同类型的Edit Log管理接口和相关配置选项。
摘要由CSDN通过智能技术生成

前几天在测试hadoop的时候,由于重复执行了NameNode - Format操作,中间发现一些问题,于是就研究了一下NameNode -- Format操作的过程,在这里记录一下。微笑

NameNode在启动的时候会check meta和image的存储目录( dfs.namenode.name.dir )是否存在, 指定的目录不存在,就把报没有对应的目录而退出整个启动过程。而该初始化动作在format的时候进行。所以在搭建Hadoop环境时候需要对NameNode进行format操作。
  format:  
   sudo -u hdfs hdfs namenode -format (如果在本地调试的时候加上-format运行参数)

  format过程可以加下面几个参数:

   -forc: 对已有的数据进行format时,跳过confirm操作,直接format。
   -nonInteractive: 对已有的数据进行format时,跳过confirm操作,不进行format操作。
   -clusterid: format的时候可以指定一个clusterid,如果没有指定系统为生产一个新的。

Format整个过程及原理:
通过配置文件初始化需要format的目录,整个format主要对dfs.namenode.name.dir,  dfs.namenode.shared.edits.dir(HA)及dfs.namenode.edits.dir配置的目录进行format操作。该操作主要在NameNode.format这个方法中实现。  
  a) 其间为调用fsImage.getEditLog().initJournalsForWrite();来初始化整个日志系统(Edit Log)。其中包括本地文件系统与通过dfs.namenode.edits.journal-plugin配置的plugin。目前HDFS的EditLo文件可以存放在多种容器里,比如Local Filesystem, shared NFS, Bookkeeper等(其对应的日志管理接口分别定义FileJournalManager,BookkeeperJournalManager,BackupJournalManager等),而对应的管理这些不同容器内的文件的方法也有多种。

如果对已有的NameNode做format操作,需要处理confirm操作。NameNode.format-->FSImage.confirmFormat-->Storage.confirmFormat。
format过程:NameNode.format-->FSImage.format-->(NNStorage.format, FSEditLog.formatNonFileJournals,FSImage.saveFSImageInAllDirs)

//NameNode.format method source as below: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值