问题描述
经过配置core-site.xml和hdfs-site.xml,格式化配置文件,启动hadoop集群后,使用jps命令查看启动的jvm进程时发现没有namenode
此时再用stop命令停止hdfs,会发现关闭namenode时提醒no namenode to stop
与此同时,50070页面也无法访问
大致分析问题
综上情况,可以判断namenode并没有成功启动,那么问题出在哪呢?
1)检查配置文件
2)若无误,最好的方法不是上网搜,而是找到日志文件,查看日志文件来发现问题所在
细致分析
1)找到日志文件
日志文件在hadoop目录下logs文件中
2)找到namenode的日志信息
查看信息如下
需要关注三个点:
1)failed to start namenode
说明namenode启动失败
2)exiting with status 1
程序运行出现了异常 status为0时才是成功
3)重点 storage directory does not exist or is not accessible
存储namenode的文件夹不存在,或者无法打开
这时可以去hdfs-site中设置的namenode dir文件存储位置查看是否存在指定文件夹。
我的是不存在,datanode的存在。
综上,可以把问题定为namenode格式化操作出了问题,导致namenode相关文件部署失败,才会报directory does not exist的异常
终于。。问题解决!
查阅资料,才知道namenode格式化的那句命令必须在hadoop的bin目录下执行,在其他地方执行不顶用。
重新运行
可以看到程序给出信息
这次是successfuly formatted,再次证明是format命令出的错
这时再开启hadoop集群,然后再使用jps命令
终于有了!忙了一下午(捂脸.jpg)
这时50070页面也可以正常访问了
总结与反思
1)学会查看日志文件,分析日志文件。比一出错就看盲目看几百篇文章有用。因为别人的问题,不一定就是自己的。况且别人也是靠分析日志文件解决的问题
2)学会看命令运行的结果
实际上,在第一次执行namenode的format命令时,程序给出的运行结果指出了错误代码和错误原因,但是我只注意到了最后一行namenode shut down以为执行成功了,然鹅并没有
ps:感谢我一直没放弃,坚持找问题,分析问题,最后解决问题。虽然耗时有亿点点长~