之前搭好了Hadoop之后虚拟机一直没关,今天更新了一下系统,重新开机之后发现hdfs的操作都报“无法链接”错误。使用jps命令查看发现没有NameNode在运行。

于是查日志,在hadoop-2.6.4/logs文件夹下有hadoop-hekunxi-namenode-ubuntu.log的日至文件,记录了namenode的运行日志,在其中发现报错:

2016-05-09 20:29:28,432 WARN org.apache.hadoop.hdfs.server.common.Storage: Storage directory /tmp/hadoop-hekunxi/dfs/name does not exist
2016-05-09 20:29:28,433 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-hekunxi/dfs/name is in an inconsistent state:

原来是因为hadoop默认的临时文件夹是在系统的/tmp文件夹下,第一次搭建的时候用了hdfs namenode -format,所以简历了临时文件夹,之后再启动start-dfs.sh自然可以启动namenode。而/tmp会在关机时清理,所以下一次开机之后就会出错。

解决方法是在core-site.xml中配置hadoop.tmp.dir属性,配置后重新hdfs namenode -format即可。不过format对于namenode到底有哪些影响呢?还需要学习。。。