HDFS的元数据持久化

dfs .name.dir

这个参数设置HDFS的元数据 信息存放在本地操作系统的目录,如果有多个目录用逗号分开。

目录里的文件示例见下图

1049092     2009-11-12 09:15    edits  
17678000   2009-11-12 08:50    fsimage
8                 2009-11-12 08:50    fstime
100             2009-11-12 08:50    VERSION


EditLog

Namenode用edits文件来保存对元数据进行的每次操作,比如创建文件,删除 文件。类似于mysql中的binlog机制。

SecondNameNode

SecondNamenode其实只是一个简单的元数据备份 进程,它会定期(缺省是1小时)把edits文件的内容合并到fsimage文件,同时保存最新的元数据副本在SecondNamenode进程所在机器的文件系统里


Fileimage

fsimage+edits才能准确表示内存中的元数据信息,NameNode启动的时候会合并edits文件到fsimage,然后load 这个image到内存。这个时候系统处于safemode,等待DataNode上报各自的block 数据块信息。

SafeMode

dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了 元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。

下面这行摘录自NameNode启动时的日志(block上报比例1达到了阀值0.9990)

The ratio of reported blocks 1.0000 has reached the threshold 0.9990. Safe mode will be turned off automatically in 18 seconds.


Format HDFS系统

hadoop namenode -format命令用来初始化HDFS系统,具体就是把dfs.name.dir目录中的四个文件edits,fsimage,fstime ,VERSION初始化。

NameSpaceID

NameNode初始化的时候会产生一个随机ID,记录在VERSION文件中的namespaceID字段。

cat VERSION
#Thu Nov 12 08:50:20 CST 2009
namespaceID=897887053
cTime=0
storageType=NAME_NODE
layoutVersion=-18

DataNode的VERSION文件中的namespaceID必须和NameNode中的一致,否则DataNode注册会失败。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fiberlijun/archive /2009/11/12/4800957.aspx

你可能感兴趣的:(数据备份,hadoop,image,mysql,Hadoop)