本文从原理上讲解格式化NameNode可能会出现的问题。
格式化NameNode的命令
hdfs namenode -format
我们每次格式化namenode之后都会产生一个新的标记namenode的id,而这个id也是在datanode里面有的。这个标记会缓存在你的hadoop的缓存文件里,当你格式化namenode之后,你的datanode的id还在,但是你的namenode的id变化了。
查看namenode的方法:
进入到数据日志:
data/tmp/dfs/name/current/
举个栗子:
namenode是之前的一个秀才,datanode是秀才的娘子,某天,秀才要进京赶考。然后赶考前给了秀才娘子给了秀才一半玉佩(一半玉佩就是id),但是很幸运的是这个秀才考取了功名,准备衣锦还乡,但是路上不幸玉佩被土匪抢走了,回到家后,秀才娘子没有见到那半个玉佩,遂将秀才赶出门外。
所以:解决办法是:
在格式化namenode之前,删除缓存的data数据和log数据,然后再格式化namenode.