`
twtbgn
  • 浏览: 45188 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hadoop namenode format的作用

 
阅读更多

今天一同事问重启了hadoop集群后要不要format,我当时想也没想就说,不可以,不然数据都丢失了。后来仔细一想,不对,namenode format貌似不会影响datanode上面的数据,那么namenode format的作用是什么呢,通过代码来看一看吧。

namenode format的类为 org.apache.hadoop.hdfs.server.namenode.NameNode,看看format部分的源码:

private static boolean format(Configuration conf,
      boolean isConfirmationNeeded, boolean isInteractive) throws IOException {
    //这里获取配置文件中dfs.name.dir属性中配置的文件,主要为fsimage
    Collection<File> dirsToFormat = FSNamesystem.getNamespaceDirs(conf);
    //这里获取配置文件中dfs.name.edits.dir属性中配置的文件,主要为edits文件
    Collection<File> editDirsToFormat = 
                 FSNamesystem.getNamespaceEditsDirs(conf);
	。。。
	。。。
    	
    FSNamesystem nsys = new FSNamesystem(new FSImage(dirsToFormat,
                                         editDirsToFormat), conf);
    //这里执行format
    nsys.dir.fsImage.format();
    return false;
  }

 后面调用了FsImage的format:

  public void format() throws IOException {
    //新的layoutVersion
    this.layoutVersion = FSConstants.LAYOUT_VERSION;
    //新的namespaceid
    this.namespaceID = newNamespaceID();
    this.cTime = 0L;
    this.checkpointTime = FSNamesystem.now();
    for (Iterator<StorageDirectory> it = 
                           dirIterator(); it.hasNext();) {
      StorageDirectory sd = it.next();
      //这里正在执行format,删除文件夹,重建文件夹,设置新文件内容
      format(sd);
    }
  }

再来看看format(StorageDirectory )方法做了什么:

void format(StorageDirectory sd) throws IOException {
    //删除current文件夹及其下的所有文件,接着在创建一个新的current文件夹
    sd.clearDirectory(); // create currrent dir
    sd.lock();
    try {
      //将image,edits,namespaceid,layoutVersion等下入current文件夹下
      saveCurrent(sd);
    } finally {
      sd.unlock();
    }
    LOG.info("Storage directory " + sd.getRoot()
             + " has been successfully formatted.");
  }

 

 这里看到format只是对namenode的fsimage,edits等进行删除和重建,并不对datanode有的任何操作,因此不用担心会丢失数据。重新启动集群,datanode向namenode发送了block的信息,namenode就会又得到整个集群的元数据了,并保存在内存中。

下次研究下整个集群的启动过程。。

分享到:
评论

相关推荐

    Hadoop常见异常

    这个错误可能是由于Hadoop无法连接到NameNode导致的。解决办法是,检查Hadoop的配置文件,确保NameNode的设置正确。 Hadoop常见的异常有多种,解决方法也各不相同。但是,通过检查Hadoop的配置文件,释放更多的磁盘...

    hadoop安装过程中的问题

    6.hadoop namenode format 7./hadoop/etc/slaves这个文件里必须把所有的slaves的主机名写进去。 8.mast的/etc/hosts slave1的/etc/hosts slave2 的/etc/hosts (localhost: 127.0.0.1可以去掉,只写主机名对应的IP...

    hadoop2.0 2个namenode 2个datanode 部署

    在启动服务之前,我们需要格式化 Namenode,使用命令 ${HADOOP_HOME}/bin/hdfs namenode -format -clusterid [clusterID]。然后,在某个 Namenode 上执行 ${HADOOP_HOME}/sbin/,启动服务。 高可用性 在这个部署...

    运行成功的hadoop配置文件

    Without "hadoop namenode -format" 目录结构: /data/hadoop 为工作目录,实际为一个链接(link) /data/hadoop-0.19.1 为实际0.19.1的安装目录 /data/hadoop-0.20.1 为实际0.20.1的安装目录 /data/hadoop-0.19.1的...

    hadoop运行wordcount实例

    - 解决方案:当执行 `hadoop namenode -format` 时,确保 DataNode 和 NameNode 的元数据被正确格式化。若之前有残留的临时文件,需要先清除,然后重新执行格式化命令 `hadoop namenode -format`。 #### 三、成功...

    Hadoop安装与配置详细教程(Linux)

    hdfs namenode -format ``` 7. **启动Hadoop服务**: 在master节点上启动Hadoop的所有服务: ``` start-dfs.sh start-yarn.sh ``` 8. **检查Hadoop状态**: 通过Web界面或命令行检查Hadoop集群的状态: -...

    hadoop配置运行错误

    问题描述:在hadoop系统中,如果我们对namenode进行格式化(使用bin/hadoop namenode -format命令),然后重启集群,可能会出现Incompatible namespaceIDS错误。 解决方法: 1. 删除datanode的数据文件:删除...

    win环境 hadoop 3.1.1安装包

    这一步骤包括格式化HDFS的文件系统,通常是通过执行"Hadoop namenode -format"命令来完成的。一旦文件系统被成功格式化,用户就可以启动Hadoop集群,通过使用"start-all.sh"脚本(在Linux/Unix系统中)或"Hadoop.cmd...

    hadoop组件程序包.zip

    5. 初始化HDFS:执行hadoop namenode -format命令,初始化NameNode。 6. 启动Hadoop:依次启动DataNode、NameNode、YARN和MapReduce服务。 7. 测试运行:使用hadoop fs -ls命令检查HDFS是否正常工作,通过运行...

    大数据hadoop,centos7的安装

    格式化文件系统(仅第一次执行即可,不要重复执行):hdfs/hadoop namenode -format 启动hdfs: sbin/start-dfs.sh 验证是否启动成功: jps DataNode SecondaryNameNode NameNode 浏览器访问方式: ...

    hadoop2.6.5伪分布式搭建

    - 如果 `hadoop` 命令找不到,确保你在 Hadoop 的 bin 目录外运行命令,如:`../bin/hadoop namenode -format`。 - 创建软链接(快捷方式):`ln -s 源文件 目标目录`,确保使用绝对路径。 9. **启动 Hadoop 服务...

    hadoop格式化HDFS出现错误解决办法

    在执行hadoop namenode -format命令时,出现未知的主机名。  问题原因:  出现这种问题的原因是Hadoop在格式化HDFS的时候,通过hostname命令获取到的主机名与/etc/hosts文件中进行映射的时候,没有找到。 解决...

    HadoopNameNode高可用(HighAvailability)实现解析

    在Hadoop1.0时代,Hadoop的两大核心组件HDFSNameNode和JobTracker都存在着单点问题,这其中以NameNode的单点问题尤为严重。因为NameNode保存了整个HDFS的元数据信息,一旦NameNode挂掉,整个HDFS就无法访问,同时...

    大数据 hadoop-3.1.3 linux 安装包

    完成配置后,初始化HDFS命名空间,格式化NameNode,通过`hadoop namenode -format`命令实现。接着,启动Hadoop的各个服务,包括DataNode、NameNode、ResourceManager、NodeManager等。可以使用`start-dfs.sh`和`...

    win环境 hadoop 3.1.0安装包

    在命令行中执行`hadoop namenode -format`,对HDFS进行初始化。 9. **启动Hadoop**: 运行`start-dfs.cmd`启动HDFS,然后运行`start-yarn.cmd`启动YARN。通过`jps`命令检查Hadoop进程是否正常运行。 10. **测试...

    hadoop.txt

    ./hadoop namenode -format [options] ``` - **选项说明**: - `-nonInteractive`:非交互模式,如果文件系统已被格式化,则不提示而直接退出。 - `-force`:强制模式,即使文件系统已经被格式化也会再次格式化...

    Windows上安装Hadoop

    - 初始化NameNode:`hadoop namenode -format`。 - 启动DataNode:`hadoop datanode`。 - 启动NameNode:`hadoop namenode`。 - 启动ResourceManager:`yarn resourcemanager`。 - 启动NodeManager:`yarn ...

    HADOOP安装部署文档

    bin/hadoop namenode -format ``` 成功后,即可启动Hadoop。bin目录下有许多启动脚本,如start-dfs.sh和start-mapred.sh,根据需求启动相应的服务。 最后,了解HDFS的基本操作。例如,创建目录: ``` bin/hadoop ...

    hadoop2.7.3版本 windows下安装步骤和配置文件(不用cywin)

    5. **格式化NameNode**: 打开命令行,进入Hadoop的bin目录,运行`hadoop namenode -format`命令,初始化NameNode。 6. **启动Hadoop服务**: 先启动DataNode,然后启动NameNode,接着启动YARN和MapReduce的服务。...

    hadoop-2.4.1版本大数据

    4. **格式化NameNode**:使用`hadoop namenode -format`命令对NameNode进行格式化。 5. **启动Hadoop**:依次启动DataNode、ResourceManager、NodeManager和NameNode。 6. **测试运行**:通过上传文件到HDFS并执行...

Global site tag (gtag.js) - Google Analytics