分享

NameNode的format操作做了什么

pig2 2014-3-8 20:30:32 发表于 问题解答 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 9 16016
我们可以带着下面问题来阅读回帖中的内容:
NameNode的fromat命令到底做了什么事情呢?
在NameNode节点上,有两个最重要的路径,分别是用来做什么的?
这两个路径,在配置文件中是怎么表示的?
格式化时,NameNode会清空哪两个目录下的所有文件?
格式化时,NameNode会在两个路径下创建几个文件?分别是什么文件?
创建的这些文件有什么用?
dfs.name.dir和dfs.name.edits.dir这两个属性分别代表什么含义?
fsimage文件的作用是什么?
edits文件的作用是什么?
fstime的作用是什么?
VERSION的作用是什么?




已有(9)人评论

跳转到指定楼层
pig2 发表于 2014-3-8 20:30:44
本帖最后由 pig2 于 2014-3-9 00:11 编辑

阅读本文内容需要了解此帖hadoop详细了解5个进程的作用中的namenode与Secondary NameNode。否则对于出现的fsimage,edits这两个文件可能会看不懂。

在Hadoop的HDFS部署好了之后并不能马上使用,而是先要对配置的文件系统进行格式化。在这里要注意两个概念,一个是文件系统,此时的文件系统在物理上还不存在,或许是网络磁盘来描述会更加合适;二就是格式化,此处的格式化并不是指传统意义上的本地磁盘格式化,而是一些清除与准备工作。本文接下来将主要讨论NameNode节点上的格式化。

我们都知道,NameNode主要被用来管理整个分布式文件系统的命名空间(实际上就是目录和文件)的元数据信息,同时为了保证数据的可靠性,还加入了操作日志,所以,NameNode会持久化这些数据(保存到本地的文件系统中)。对于第一次使用HDFS,在启动NameNode时,需要先执行-format命令,然后才能正常启动NameNode节点的服务。那么,NameNode的fromat命令到底做了什么事情呢?

在NameNode节点上,有两个最重要的路径,分别被用来存储元数据信息和操作日志,而这两个路径来自于配置文件,它们对应的属性分别是dfs.name.dir和dfs.name.edits.dir,同时,它们默认的路径均是/tmp/hadoop/dfs/name。格式化时,NameNode会清空两个目录下的所有文件,之后,会在目录dfs.name.dir下创建文件:
  1. {dfs.name.dir}/current/fsimage
  2. {dfs.name.dir}/current/fstime
  3. {dfs.name.dir}/current/VERSION
  4. {dfs.name.dir}/image/fsimage
复制代码
会在目录dfs.name.edits.dir下创建文件:
  1. {dfs.name.edits.dir}/current/edits
  2. {dfs.name.edits.dir}/current/fstime
  3. {dfs.name.edits.dir}/current/VERSION
  4. {dfs.name.edits.dir}/image/fsimage
复制代码
那么这些文件又是用来干什么的呢?
      在介绍这文件的用途之前,我们可以将dfs.name.dir和dfs.name.edits.dir配置成相同的目录,这样的话,NameNode执行格式化之后,会产生如下的文件:{dfs.name.dir}/current/fsimage、{dfs.name.dir}/current/edits、{dfs.name.dir}/current/fstime、{dfs.name.dir}/current/VERSION、{dfs.name.dir}/image/fsimage,由此可以看出上面名字相同的文件实际是一样的,所以在这里,我建议把dfs.name.dir和dfs.name.edits.dir配置成相同的值,以来提高NameNode的效率。ok,现在就来重点的介绍一下这些文件的用途吧。
      fsimage:存储命名空间(实际上就是目录和文件)的元数据信息,文件结构如下:
0_1319541570kJb3.gif


     edits:用来存储对命名空间操作的日志信息,实现NameNode节点的恢复;
     fstime:用来存储元数据上一次check point 的时间;
     VERSION:用来存储NameNode版本信息,命名空间ID(版本号),内容如下:

0_1319542081crLR.gif

      /image/fsimage: 上一次提交前的/current/fsimage文件;



回复

使用道具 举报

xioaxu790 发表于 2014-3-9 11:44:19
pig2 发表于 2014-3-8 20:30
阅读本文内容需要了解此帖hadoop详细了解5个进程的作用中的namenode与Secondary NameNode。否则对于出现的f ...

在NameNode节点上,有两个最重要的路径,分别被用来存储元数据信息和操作日志。那么当执行-format时,是否会删除掉真正的数据?
回复

使用道具 举报

pig2 发表于 2014-3-9 11:48:18
xioaxu790 发表于 2014-3-9 11:44
在NameNode节点上,有两个最重要的路径,分别被用来存储元数据信息和操作日志。那么当执行-format时,是 ...

数据一般都存放在datanode中,他的格式化,跟我们的硬盘格式化是有所区别的。是为namenode的启动做准备
回复

使用道具 举报

xioaxu790 发表于 2014-3-9 11:52:34
OK,嘿嘿,ping2威武
回复

使用道具 举报

admin 发表于 2014-3-9 16:20:33
1.NameNode主要被用来管理整个分布式文件系统的命名空间(实际上就是目录和文件)的元数据信息,同时为了保证数据的可靠性,还加入了操作日志,所以,NameNode会持久化这些数据(保存到本地的文件系统中)
2.在NameNode节点上,有两个最重要的路径,分别被用来存储元数据信息和操作日志,而这两个路径来自于配置文件,它们对应的属性分别是dfs.name.dir和dfs.name.edits.dir,同时,它们默认的路径均是/tmp/hadoop/dfs/name。格式化时,NameNode会清空两个目录下的所有文件


通过上面还可以得出,维护目录和文件的元数据库信息已经存储在硬盘上了,我们格式化,只是清空两个目录下的所有文件。所以数据不会丢失。




回复

使用道具 举报

lestchun 发表于 2014-3-9 19:36:48
新加的 节点 为什么不需要 format  了呢?
回复

使用道具 举报

pig2 发表于 2014-3-9 19:53:59
lestchun 发表于 2014-3-9 19:36
新加的 节点 为什么不需要 format  了呢?

新增的节点是datanode,namenode来管理datanode。上面咱们格式化的是namenode。
回复

使用道具 举报

471505881qq 发表于 2014-3-31 15:38:04
谢谢楼主的分享!
回复

使用道具 举报

微步客 发表于 2018-8-16 17:02:47
网站响应特别慢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条