大家知道Hadoop不能直接进行多次格式化,多次格式化($ hdfs namenode -format)会造成没有datanode,因为每次格式化操作会重新创建一个namenodeId,而dfs.data.dir参数配置的目录中包含的是上次格式化创建的id,和dfs.name.dir参数配置的目录中的id不一致。那么应该怎样正确地重新格式化我们的Hadoop呢?

以下是正确重新格式化的方法:

a. 停止Hadoop所有进程

$ stop-all.sh

b.删除$HADOOP_HOME目录下的logs和tmp目录(关键步骤)

$ cd $HADOOP_HOME
$ ls
bin  include  libexec      logs        README.txt  share
etc  lib      LICENSE.txt  NOTICE.txt  sbin        tmp
$ rm -rf logs tmp

c.重新格式化文件系统

$ hdfs namenode -format

d.启动Hadoop进程

$ start-all.sh

e.确认Hadoop进程是否已开启

$ jps
7366 NameNode
8278 Jps
7640 SecondaryNameNode
7849 ResourceManager
7482 DataNode
7967 NodeManager

10-07 16:08