赞
踩
在Hadoop环境搭建时并非一次完成,其中经历一次关机,关机时Xtrem的会话窗口直接关闭,未作任何停止集群的操作。
-bash:hadoop-daemon.sh start datanode
-bash:hadoop-daemon.sh start namenode
上述两行代码曾显示未找到命令,找不到原因所在。
故选择重新格式化namenode.
先删除了以下:
[root@node-1 sbin]# stop-all.sh
node-1: no namenode to stop
localhost: no datanode to stop
0.0.0.0: no secondarynamenode to stop
stopping yarn daemons
no resourcemanager to stop
localhost: no nodemanager to stop
no proxyserver to stop
使用jsp指令可见进程仍在运行
[root@node-1 sbin]# jps
3201 Jps
1459 DataNode
1318 NodeManager
2302 ResourceManager
今天在Cygwin上运行hadoop的时候发现一个问题,当hadoop集群运行一段时间以后,输入bin/stop-all.sh无法停止服务,在windows的任务管理器中还是能够看到那几个java进程。有时候会提示找不到进程ID,但大多时候不会提示。如下图:
- 1
在网上搜索了一圈,得知了问题所在:stop-all.sh会调用stop-mapred.sh和 stop-dfs.sh去停止jobtracker, tasktrackers; namenode, datanodes。Jobtracker和namenode的停止是在本地通过调用hadoop-daemon完成的,而tasktracker,和datanode 的停止是通过调用hadoop-daemons来完成的。Hadoop-daemon实质上是ssh到每一个slave去执行一个当地的hadoop- daemon命令,比如:hadoop-daemon stop datanoade。Hadoop-daemon stop command会通过kill -0 `cat command.pid` 来测试进程是否存在,如果这个测试中有错误产生,就会报”no command to stop ”。可能原因: pid 文件丢了,导致 hadoop-daemon.sh stop XXX 时找不到进程号。
解决办法:默认 pid 文件放在 /tmp 目录下,不太安全。可以在 conf/hadoop-env.sh 里设置 HADOOP_PID_DIR 环境变量改变 pid 文件的存放目录。
所以配置的时候最好添加一个固定的目录存储hadoop的PID。
删除pid文件后进程依然在执行
故使用
解决方法
使用ps命令查找正在运行的namenodes、datanodes和secondary namenodes的pid,然后在/tmp目录创建对应的pid文件,重新执行stop-dfs.sh脚本,一切正常!或者可以直接运行kill -9命令把对应的pid进程杀掉。下次重新启动hdfs之前建议修改$HADOOP_PID_DIR目录,否则的话那些pid文件还是会被tmpwatch清理。
的方法
[root@node-1 hadoop-2.9.2]# jps
4433 Jps
1459 DataNode
1318 NodeManager
2302 ResourceManager
[root@node-1 hadoop-2.9.2]# kill -9 1459
[root@node-1 hadoop-2.9.2]# kill -9 1318
[root@node-1 hadoop-2.9.2]# kill -9 2302
[root@node-1 hadoop-2.9.2]# jps
1459 -- process information unavailable
1318 -- process information unavailable
4445 Jps
2302 -- process information unavailable
目前就解决到这种程度。
12/23记
为什么net+hostonly模式下
第一个网卡设置为dhcp
第二个网卡设置为静态的?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。