之前在用Mapreduce写代码时,在DFS Location下的会报一个error,大体的意思就是与主机名相关的错误
然后我就觉得可能时Hadoop开启时出了错误,然后我就重启了Hadoop,jps查看了一下,果然出现了错误
可见jps命令输入后什么都没有,原本应该如下图所示
后来我就在网上百度,发现出现错误的原因时我主机名和配置文件不一致造成的,根据Hadoop启动时的提示,从这随便挑选一个
例如; starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-ZMZ.out”,其中 ZMZ 时主机名,但其实
启动日志信息是记录在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-ZMZ.log 中,所以应该查看这个后缀为 .log 的文件,果不其然
在对应的log中,注意此ip
然后打开host文件,输入命令
sudo vi /etc/hosts
发现没有上图中.log 文件对应的ip地址,所以要修改host文件,把目前主机名及其对应的ip地址插进去
然后重启网络,输入
sudo /etc/init.d/networking restart
或者
reboot
重新启动计算机生效
然后我再次jps,发现又缺少了DataNode
于是在网上找到的解决办法,主要是参照林子雨的教程走的
此外,若是 DataNode 没有启动,可尝试如下的方法(注意这会删除 HDFS 中原有的所有数据,如果原有的数据很重要请不要这样做)
# 针对 DataNode 没法启动的解决方法 ./sbin/stop-dfs.sh # 关闭 rm -r ./tmp # 删除 tmp 文件,注意这会删除 HDFS 中原有的所有数据 ./bin/hdfs namenode -format # 重新格式化 NameNode ./sbin/start-dfs.sh # 重启
运行后会删除HDFS原有数据,注意保存
然后再次jps,发现正常运行了