我的namedata进程突然之间没有的原因:刚开始我以为是没有关闭集群就重启,后面发现是因为                                                                    我/tmp目录下的hadoop-hadoop文件移走后没有配置目                                                                      标文件位置

还有其他原因也会导致比如:1.直接关闭虚拟机,也没有停止hadoop 集群

                                               2.格式化namenode之前,没有删除data里面的数据和日志,导致                                                        namenode和datanode的cluserID 不一致

总结:/tmp目录下的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

hadoop jps无法找到 windows运行 hadoop启动后jps没有namenode_big data

找到logs文件夹然后进入删除里面的log日志,可以全部删除

[hadoop@hadoop001 logs]$ rm -rf *

 然后再寻找到tmp目录(这是我自己创建的tmp目录,存放name和data文件的,如果你没有移动过,默认是在/tmp目录下的hadoop-hadoop里面)

然后找到dfs文件夹

hadoop jps无法找到 windows运行 hadoop启动后jps没有namenode_大数据_02

hadoop jps无法找到 windows运行 hadoop启动后jps没有namenode_big data_03

删除data数据(我是连着name和namesecondary一起删除了,不影响)

 [hadoop@hadoop001 dfs]$ rm -rf data name 

hadoop jps无法找到 windows运行 hadoop启动后jps没有namenode_big data_04

 若是在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新增

<property>
         <name>hadoop.tmp.dir</name>
         <value>/home/hadoop/tmp</value>
     </property>

红色字体就是我所移动之后的文件夹位置了,一般情况下配置完,你重启也会出现namenode进程打不开,原因是:我们mv完hadoop-hadoop文件后,配置文件还是读取老地方 /tmp ,实际存储已经在/home/ruoze/tmp了,所以就需要重新格式化了,回到情况一的解决方法。

总结:对于情况一三,也就是说每次namenode格式化结束以后,你的dfs文件就会根据你配置的目录存放,当你修改配置目录时,就需要重新格式化,去更新读取dfs的位置

二.在过程中我有过jps后namenode进程有,但是datanode没有

1.namenode的clusterID和datanode的clusterID不一致(原因就是namenode格式化导致的);2.data目录下的文件夹没有内容

情况一:找到namenode的clusterID 然后复制到datanode的clusterID,再重启hadoop集群就好了

两者的clusterID就是在上面说的tmp目录下的dfs文件夹中的data和name文件夹中,里面的current文件夹中的VERSION文本中。

情况二:重新格式化