昨天晚上通过jps名录检查到进程已经启动,满以为hadoop已经安装成功了,没想到在做wordcount试验时,才发现报错,错误是做常见的:
could only be replicated to 0 nodes, instead of 1
查看namnode的启动日志,果然发现报错:
2016-11-24 20:07:40,983 ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:hadoop cause:java.io.IOException: File /home/hadoop/hadoop-1.2.1/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
2016-11-24 20:07:40,984 INFO org.apache.hadoop.ipc.Server: IPC Server handler 5 on 9000, call addBlock(/home/hadoop/hadoop-1.2.1/tmp/mapred/system/jobtracker.info, DFSClient_NONMAPREDUCE_-379254569_1, null) from 127.0.0.1:33986: error: java.io.IOException:
File /home/hadoop/hadoop-1.2.1/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
java.io.IOException: File /home/hadoop/hadoop-1.2.1/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1920)
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:783)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:587)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1432)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1428)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1426)
网上搜了一大晚上,又是搞到1点多,试过了重新格式化、重新初始化整个机器,都无果。
经过反复思考,觉得应该是namenode与datanode没有建立连接,遂以 hadoop格式化 不能连接到datanode 作为关键字搜索,其中搜索到了一篇文字,其中一段话给了我关键性提示 :
最终发现core-site.xml 中
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
才意识到监听127.0.0.1端口,并不能被外机访问
虽然我的core-site.xml中配置的不是localhaost,是完整的机器名:hadoop01,但是最后一句话让我想起,我的hosts文件里面有一行 :
127.0.0.1 hadoop01 localhost.localdomain localhost
而且在初始化的时候也出现过这样的输出:
SHUTDOWN_MSG: Shutting down NameNode at hadoop01/127.0.0.1
会不会真是这个原因的呢。在我将hosts文件中的这一行注释掉后,重新初始化整个集群。果然,启动日志中没有再报错,wordcount试验也顺利完成。
回顾本次安装hadoop集群,真是历经磨难,才能成长。总结本次hadoop安装经验如下:
1、ssh免密码配置,因为在执行ssh-keygen -t rsa后,本应该直接回车的操作,多余的输入了密码导致免密码配置折腾了很久
2、hosts文件没有修改好,这个文件怎么修改,可能有多中方法,比如将127.0.0.1这行删掉或注释,也可以将后面的机器名删除,只保留127.0.0.1与localhost的对应
3、hadoop在启动的时候,错误日志不会错误输出,需要到logs目录下自行查看,不要认为看到启动没有报错,进程已经启动,就以为大功告成了。
4、多思考,转换思路,层层分析,如果一种方法无法解决问题时,可以换另外一种,例如换一个关键词在百度上再搜一遍。
最后,吃水不忘挖井人,附上给了我重要提示的文章连接,感谢这位前辈:
http://www.linuxidc.com/Linux/2014-03/97530.htm
hadoop启动失败
最新推荐文章于 2025-03-14 11:52:48 发布