您的位置:首页 > Web前端 > Node.js

hadoop namenode format做了什么?

2012-08-04 11:47 274 查看
一看到format就和磁盘格式化联想到一起,然后这个format是对hdfs来说的,所以有些人害怕真的是格式化自己的文件系统了,其实大可不必担心。

具体的实现format的功能是在 org.apache.hadoop.hdfs.server.namenode.FSImage 这个类的format(StorageDirectory sd)方法中,我们首先大概看下方法说明:

Java代码


/** Create new dfs name directory. Caution: this destroys all files

* in this filesystem. */

这个方法说明是建立新的dfs name dir,但是会删除所有这个目录下的文件,这个看方法实现中的第一行就可以知道

Java代码


sd.clearDirectory(); // create currrent dir

针对clearDirectory的说明如下:

* Clear and re-create storage directory.

* <p>

* Removes contents of the current directory and creates an empty directory.

*

* This does not fully format storage directory.

好下面看具体的做了什么

Java代码


1 :saveFSImage(getImageFile(sd, NameNodeFile.IMAGE));

2 :editLog.createEditLogFile(getImageFile(sd, NameNodeFile.EDITS));

其实就是建立新的image文件以及editlog文件,只是这些文件建立的时候会写入一些初始值。

首先来看image文件的建立过程:

Java代码


1 :saveINode2Image //save the root

2 :saveImage // save the rest of the nodes

3 :fsNamesys.saveFilesUnderConstruction //Serializes leases

其实这三部 在第一次format时只有第一步会真正写数据,其他两步在这个时候还未有作用。

第一步写了一些权限组相关的信息,具体可以看 fsimage 文件。

再来看editlog的建立过程:

用RandomAccessFile 建立了一个rw文件用于记录editlog。

总的来说:namenode format只是初始化一些目录和文件而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: