我的namedata进程突然之间没有的原因:是因为我之前没有停止hadoopd的集群又重新启动hadoopde集群
还有其他原因也会导致比如:1.直接关闭虚拟机,也没有停止hadoop 集群
2.格式化namenode之前,没有删除data里面的数据和日志,导致 namenode和datanode的cluserID 不一致
总结:在用完hadoop之后一定要记得停止hadoop集群!!!!
这里我会把我碰到的问题都罗列出来
一.首先我jps后没有了namenode进程(解决方法)
看网上的有三种情况1.就是上面讲的那几种;2.就是namenode的端口可能被占用了;3.namenode的在core-site.xml配置的hadoop.tmp.dir文件位置不对
情况二:
最好验证:查看占用端口的进程,然后kill
[hadoop@hadoop001 ~]$ lsof -i:9000(端口号)
或者[hadoop@hadoop001 ~]$ sudo netstat -anp | grep 9000(这个需要先给hadoop配置sudo权限)
如果有就kill,没有就换情况二
情况一:
先停止Hadoop的集群
[hadoop@hadoop001 ~]$ sbin/stop-dfs.sh
然后删除logs日志和data的数据,下面是我删除的过程
[hadoop@hadoop001 ~]$ cd app/hadoop
找到logs文件夹然后进入删除里面的log日志,可以全部删除
[hadoop@hadoop001 logs]$ rm -rf *
然后再寻找你的tmp目录(如果你没有移动过,默认是在/tmp目录下的hadoop-hadoop里面)
然后找到dfs文件夹
删除你data数据(我是连着name和namesecondary一起删除了,不影响)
[hadoop@hadoop001 dfs]$ rm -rf data name
若是在tmp目录里面还有这个nm-local-dir文件夹也一并删除
[hadoop@hadoop001 tmp]$ rm -rf nu-local-dir
然后进行namenode的格式化
[hadoop@hadoop001 hadoop]$bin/hdfs namenode -format
最后就可以重启了hadoop集群,jps就有了
[hadoop@hadoop001 ~]$ sbin/start-dfs.sh
[hadoop@hadoop001 ~]$ jps
这边我重启完建议还是把/tmp的hadoop-hadoop文件夹里面的内容重新移动到你自己创建的tmp文件中,防止被删除。(如果你移动了建议看一下三)
情况三:
刚开始你的dfs文件夹是默认安装在/tmp目录的hadoop-hadoop下的,如果你没有移动过就不用在core-site.xml中配置位置,但是一般为了防止文件被自动删除所以都会移动,就像我上面建议的一样会把文件夹移走,那么就需要在core-site.xml中配置一下了
在core-site.xml新增
红色字体就是我所移动之后的文件夹位置了
总结:对于情况一三,也就是说每次namenode格式化结束以后,你的dfs文件夹位置都会被默认放在/tmp目录,你需要移走,但是你也得保证core-site.xml配置的文件位置和你移走后所安放的位置!!一致!!,不然就会是上面解决方法操作完jps有namenode进程了,但是一重启又没有了
二.在过程中我有过jps后namenode进程有,但是datanode没有
1.namenode的clusterID和datanode的clusterID不一致(原因就是namenode格式化导致的);2.data目录下的文件夹没有内容
情况一:找到namenode的clusterID 然后复制到datanode的clusterID,再重启hadoop集群就好了
两者的clusterID就是在上面说的tmp目录下的dfs文件夹中的data和name文件夹中,里面的current文件夹中的VERSION文本中。
情况二:重复我一中的解决方法可以解决。



