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只是初始化一些目录和文件而已。
具体的实现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只是初始化一些目录和文件而已。
相关文章推荐
- "hadoop namenode -format"命令的作用和影响的文件
- hadoop namenode -format 网络异常
- Hadoop源码分析之NameNode--Format
- hadoop伪分布式每次启动时需要重新format否则namenode无法启动的问题
- Hadoop中NameNode、DataNode和Client三者之间的通信方式是什么?怎样进行合作?
- ./bin/hadoop namenode -format namenode格式化命令出错
- 关于hadoop namenode -format不成功的问题
- 为什么每次重启机器后,namenode都启动不了,需要先hadoop namenode -format
- hdfs格式化hadoop namenode -format错误
- hadoop namenode -format错误,找不到或无法加载主类org.apache.hadoop.util.PlatformName
- hadoop namenode -format 后出现datanode 无法启动故障解决办法
- Hadoop中NameNode、DataNode和Client三者之间的通信方式是什么?怎样进行合作?
- hadoop namenode –format 错误
- HDFS------hadoop namenode -format
- hadoop namenode -format格式化名称节点时出错
- 解决hadoop namenode -format / hdfs namenode -format 找不到java的文件目录
- hadoop namenode -format 重新初始 name 节点的引起的问题。
- "Hadoop namenode -format" get "java.net.UnknownException"
- HADOOP NAMENODE FORMAT过程分析
- 关于Hadoop伪分布式每次启动都要format namenode