hadoop启动失败

本文记录了Hadoop集群安装过程中遇到的问题及解决方案,特别是针对namenode与datanode连接失败的情况,通过调整hosts文件设置解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天晚上通过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启动失败的原因及解决方案 Hadoop启动失败可能由多种原因引起,以下是常见的几种情况及其对应的解决方案: #### 1. DataNode未正常启动 如果DataNode未能成功启动,则可能是由于之前重新格式化NameNode,而DataNode中的数据文件与新的NameNode元数据不一致。此时需要清理DataNode上的旧数据并重新同步。 停止所有服务: ```bash bigdata/hadoop/sbin/stop-all.sh ``` 查询`datanode`的存储路径: ```bash vim bigdata/hadoop/etc/hadoop/hdfs-site.xml ``` 找到`dfs.datanode.data.dir`参数指定的路径,并删除该路径下的所有文件夹内容[^1]。 #### 2. NameNode无法启动 NameNode无法启动通常是因为之前的某些操作(如手动删除或修改了相关目录)破坏了其内部状态。解决办法是清除所有历史数据并重新初始化NameNode。 关闭整个集群: ```bash sbin/stop-dfs.sh ``` 删除HDFS相关的所有数据目录(需谨慎操作),然后重新格式化NameNode: ```bash hdfs namenode -format ``` 之后按照顺序依次启动ZooKeeper和JournalNode(如果有配置的话)。最后统一启动Hadoop集群: ```bash start-all.sh ``` 此过程适用于更复杂的高可用环境设置[^4]。 #### 3. 配置文件分发问题 在多节点环境中,如果某个节点上缺少最新的配置更新也可能导致部分组件无法加载工作。因此,在完成本地机器上的任何更改后务必及时同步这些改动至其他成员服务器上。 例如使用自定义脚本批量推送最新版的核心站点XML文档给群集内的每台计算机实例: ```bash [xsync core-site.xml] ``` 确保命令正确无误地被执行于目标地址列表之中[^3]。 #### 4. 安全模式干扰 有时即使完成了上述步骤仍会遇到因为处于保护状态下而导致的一些常规指令被拒绝执行的现象。对于这种情况有两种处理方式可以选择尝试解除限制条件或者直接强制退出当前所处的状态以便继续下一步骤的操作流程。 调整阈值比例低于默认标准来加快脱离进程速度;或者是简单粗暴地发出特定请求让系统立即切换出来即可实现目的[^5]。 --- ### 总结 综上所述,针对不同类型的故障现象采取相应的修复措施能够有效提升解决问题效率的同时也保障系统的稳定性和可靠性水平得到进一步提高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周小科

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值