纯属作死!
hadoop配置好后,一定要先格式化:hadoop namenode -format
好像hadoop datanode -format也可以执行,但是没有什么效果。不推荐执行该语句。
博主就是配置好hadoop后,没有执行格式化,直接执行:start-all.sh
然后发现namenode无法启动,执行jps的效果如下:
查看hadoop-chj-namenode-hadoop.log的日志文件,报错如下:
2017-09-22 22:01:44,506 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory /usr/local/hadoop-1.0.0/hadoop_data/hdfs/namenode does not exist.
2017-09-22 22:01:44,508 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /usr/local/hadoop-1.0.0/hadoop_data/hdfs/namenode is in an inconsistent state: storage directory does not exist or is not accessible.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:288)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:386)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:360)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:276)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:496)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1279)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)
2017-09-22 22:01:44,509 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode:
报错的情况是namenode does not exist,也就是hdfs-site.xml中配置的dfs.name.dir的value值指向的文件夹不存在。
不存在,那就创建一个??
又作死,
创建之后,觉得应该完全ok了吧
执行:start-all.sh
执行:jps
namenode仍然无法启动,查看hadoop-chj-namenode-hadoop.log的日志文件,报错如下:
2017-09-22 22:06:40,156 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
java.io.IOException: NameNode is not formatted.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:315)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:386)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:360)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:276)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:496)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1279)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)
哦,提示我NameNode is not formatted,这好说
那就格式化一下嘛
执行:hadoop namenode -format
美滋滋,解决问题就是这么快!
然而
wtf???!!!!
继续查看hadoop-chj-namenode-hadoop.log的日志文件,报错如下:
2017-09-22 22:09:23,896 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
java.io.IOException: NameNode is not formatted.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:315)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:386)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:360)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:276)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:496)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1279)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)
还是报NameNode is not formatted的错
我格式化了呀??!!
于是继续格式化,无法启动,格式化,无法启动,…….
我觉得不行!!
这样下去,我会疯,hadoop也会疯
找了各种资料,终于明白了正确的打开方式!!!!谢天谢地!!!
(一)删除core-site.xml文件中配置的hadoop.tmp.dir指向的文件夹下的所有东西!!
(二)执行格式化:hadoop namenode -format
执行完毕后,在hadoop.tmp.dir指向的目录下会生成namenode文件夹
(三)启动hadooop,执行:start-all.sh
执行jps查看,
成功启动!