`
twtbgn
  • 浏览: 44071 次
  • 性别: 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安装过程中的问题

    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...

    运行成功的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,centos7的安装

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

    Apriori_java_MR.zip

    (4) 使用hadoop namenode -format命令格式化NameNode,使用start-all.sh命令启动所有Hadoop进程。 (5) 在各节点命令行输入jps检查是否启动成功,若成功,使用wordcount示例进行测试,Hadoop平台搭建完成。 (6)...

    Hadoop的安装与配置及示例wordcount的运行

    1. 格式化文件系统:我们需要使用hadoop namenode -format命令来格式化文件系统。 2. 启动Hadoop:使用start-all.sh命令来启动Hadoop。 3. 运行wordcount示例程序:我们可以使用hadoop jar命令来运行wordcount示例...

    ⑤配置虚拟机Hadoop.docx

    1. 格式化 NameNode,使用命令 `hadoop namenode -format`。 2. 启动 Hadoop,使用命令 `start-all.sh`。 3. 在 Master 节点上执行 `jps` 命令,查看 Hadoop 服务状态。 通过以上步骤,可以成功配置和安装 Hadoop ...

    hadoop安装与配置及mapreduce测试网站

    然后,需要格式化 Namenode,输入命令:hadoop namenode -format。 在安装了 Hadoop 后,就可以配置 Hadoop 的集群了。Hadoop 按三类分别将主机划分为两种角色,最基本的就是 Master 和 Slave,主人与奴隶;按 HDFS...

    hadoop常见错误以及处理方法详解

    原因:每次namenode format会重新创建一个namenodeId,而dfs.data.dir参数配置的目录中包含的是上次format创建的id,和dfs.name.dir参数配置的目录中的id不一致。namenode format清空了namenode下的数据,但是没有

    ansible-hadoop

    Ansible角色和流浪汉文件使用WebHDFS创建本地HDFS Lab跑步光盘回购无所事事流浪ssh namenode-1 须藤-s 苏哈杜普光盘/ opt / hadoop / bin / hdfs namenode -format(仅一次!!!) /opt/hadoop/sbin/start-dfs.sh &...

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

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

    零基础学习Hadoop3.0从入门到源码

    ├─1.HDFS │ ├─视频-零基础学习Hadoop3.0-HDFS从入门到源码 │ │ │ 00--课程内容大纲和学习目标.mp4 ...│ │ │ 16--Hadoop概述--集群搭建--namenode format操作及注意事项.mp4 │ │ ├─

    hadoop安装

    [hadoop@a1 hadoop-0.20.2-cdh3u5]$ bin/hadoop namenode -format 开启 [hadoop@a1 hadoop-0.20.2-cdh3u5]$ bin/start-all.sh 在所有节点查看进程状态验证启动 [hadoop@a1 hadoop-0.20.2-cdh3u5]$ jps 8602 ...

    格式化namenode时报错No Route to Host from node1/192.168.3.101 to hadoop05:8485 failed on socket timeout ex

    格式化namenode时 报错 No Route to Host from ...在配置hadoop高可用HA集群的时候,在使用hadoop namenode -format格式化namenode节点时候,始终保如下错误: No Route to Host from hadoop01/192.168.3.101 to hadoo

    Hadoop集群安装

    /opt/hadoop$ bin/hadoop namenode -format 執行畫面如: 09/03/23 20:19:47 INFO dfs.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode...

    hadoop-2.7.7单机win7或win10搭建完整包

    6.在cmd输入hdfs namenode -format,看到successfully就说明format成功 7.在E:\apps\hadoop-2.7.7\sbin下按shiift右键打开cmd输入start-all,启动hadoop集群即可 8.出现启动失败,请删除E:\apps\hadoop-2.7.7\work\...

    hadoop-2.4.1安装软件包以及教程jdk.zip

    hdfs namenode -format (hadoop namenode -format) 3.4启动hadoop 先启动HDFS sbin/start-dfs.sh 再启动YARN sbin/start-yarn.sh 3.5验证是否启动成功 使用jps命令验证 27408 NameNode 28218 Jps ...

    Hadoop datanode重新加载失败无法启动解决.docx

    (3)将datanode与namenode的/current下的VERSION等相应文件文件清除后,回到namenode上,执行hdfs namenode -format命令,并切换到namenode的hadoop的/sbin目录下,执行sh start-dfs.sh和sh start-yarn.sh命令。...

    第3集-Hadoop环境搭建 - linux(centos7) - 安装配置hadoop2.7.7.pdf

    hdfs namenode -format ``` Then, start the HDFS daemon using the following command: ``` start-hdfs.sh ``` Conclusion In this article, we have introduced how to build a Hadoop environment on Linux ...

    高可用性的HDFS:Hadoop分布式文件系统深度实践

    2.4 Format情景分析 2.5 元数据应用场景分析 第3章 Hadoop的元数据备份方案 3.1 运行机制分析 4 3.1.1 NameNode启动加载元数据情景分析 3.1.2 元数据更新及日志写入情景分析 3.1.3 Checkpoint过程情景分析 3.1.4 元...

    大数据面试题.doc

    单项选择题 1. 下面哪个程序负责 HDFS 数据存储。... DataNode 首次加入 cluster 的时候,如果 log 中报告不兼容文件版本,那需要 NameNode执行"Hadoop namenode -format"操作格式化磁盘。( ) 别走开,答案在后

Global site tag (gtag.js) - Google Analytics