Hadoop参数:dfs.name.dir 与 dfs.data.dir

dfs.name.dir
Determines where on the local filesystem the DFS name node should store the name table(fsimage). If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy.
这个参数用于确定将HDFS文件系统的元信息保存在什么目录下。
如果这个参数设置为多个目录,那么这些目录下都保存着元信息的多个备份。
如:

    dfs.name.dir
    /pvdata/hadoopdata/name/,/opt/hadoopdata/name/


dfs.data.dir 
Determines where on the local filesystem an DFS data node should store its blocks. If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. Directories that do not exist are ignored.
这个参数用于确定将HDFS文件系统的数据保存在什么目录下。
我们可以将这个参数设置为多个分区上目录,即可将HDFS建立在不同分区上。
如:

    dfs.data.dir
    /dev/sda3/hadoopdata/,/dev/sda1/hadoopdata/

如何处理多次格式化文件系统后,datanode,namenode无法启动的问题
一、问题描述
      当我多次格式化文件系统时,如
        root@localhost:/usr/local/hadoop-1.0.2# bin/hadoop namenode -format
     会出现datanode无法启动,查看日志,发现错误为:
        2012-04-20 20:39:46,501 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /home/gqy/hadoop/data: namenode namespaceID = 155319143; datanode namespaceID = 1036135033
二、问题产生原因
      当我们执行文件系统格式化时,会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)中保存一个current/VERSION文件,记录namespaceID,标识了所格式化的 namenode的版本。如果我们频繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的current/VERSION文件只是你第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。
三、解决办法
      把配置文件中dfs.data dir在本地系统的路径下的current/VERSION中的namespaceID改为与namenode一样

你可能感兴趣的:(hadoop,大数据开发)