由于不可控以及不可知的原因 我搭建的hadoop集群突然显示虚拟机出现了问题 导致某一个DataNode数据丢失 并且无法通过Xshell远程访问其他的DataNode 主机和虚拟机无法互相ping通 网上能找的解决办法基本都找了 依然无法解决 因此我能想到的是只能删除虚拟机 重新克隆一台机器 然而还是无法通过远程连接 无奈之下 我重启电脑 发现又可以通过Xshell远程访问了 具体原因尚不知晓
克隆成功后发现集群先格式化集群 正常启动 但是通过web监控页面的50070端口发现没有DataNode存在 上传文件时 显示由于副本为0 必须至少要有一个副本 因此上传失败。
原因: 由于我在格式化NameNode之后 没有删除主从节点上面的用于保存临时数据的文件夹(即dfs.name.dir配置的路径下的文件) 导致内部namenode存在的关于文件系统的元信息和数据节点对应不上造成的
解决方法:删除掉各个节点上面的hadoop的临时文件目录即:hadoop.tmp.dir目录(对应hdfs-site.xml中设置的dfs.name.dir路径 例如我设置的是/opt/hadoop-2.5.1)然后格式化集群,最后重启集群,会重新生成这个目录,问题j就搞定了
删除hadoop临时文件目录
重新格式化hdfs系统
启动集群
通过浏览器查看
发现DataNode正常显示了 但是需要注意的是 这个过程中hdfs系统中之前的所有文件会被清空