最近使用Hadoop,因为之前配置过Hadoop(单机模式),所以直接使用start-all.sh启动Hadoop,用jps命令查看启动进程时,发现只有TaskTracker,DataNode和SecondaryNameNode三个进程启动了,而另外两个进程NameNode和JobTracker并没有启动。
上网查了一下,在http://blog.csdn.net/bychjzh/article/details/7830508文章中有提到因为Hadoop数据文件(即配置文件中adoop.tmp.dir属性定义的文件)问题,使用默认文件,会在每次开机时清空该文件,所以要在每次启动Hadoop前格式化hdfs。虽然我也有这个问题,但按照他说的做并没有解决我的问题。
网上很多人说NameNode的问题基本上都和配置文件有关,所以我就查看了一下我的配置文件,发现由fs.default.name属性指定的hdfs路径不对,我的笔记本动态获取ip,这次启动分配的ip地址和以前配置时的不一样,导致启动脚本找不到hdfs路径,把路径修改好后,格式化hdfs(hadoop namenode -format),启动Hadoop,成功!
(补充,后来发现启动hadoop时jobtracker进程也启动不了,也是类似的问题,在mapred-site.xml配置文件中配置mapred.job.tracker也涉及到hdfs路径的指定,修改为正确的ip即可)