Posted on 2012-07-06 11:41
云云 阅读(1787)
评论(0) 编辑 收藏
在运行了一段时间hadoop集群后,机器重启了一次。
然后启动hadoop,再jps没有看到namenode 和datanode的pid
很不解,于是再重启,却又报4900端口存在 需要停止。
这下有意思了。无奈之下 使用netsat -nap | grep 4900来查看是否存在
果然存在,再用命令lsof -i:49000 找出4900端口号的进程id。再用kill -9 来杀死。
问题是解决了,可不能每次这样啊,后来发现hadoop默认的pid是存在
linux下的/tmp目录下的。每一个pid 使用文件像hadoop-hadoop-jobtracker.pid
这样的文件名存放起来的。可以cat一下 看看内容。
linux重启的时候 会把tmp目录中的内容删除,同时crontab 也会在一定时间后删除
tmp目录下的文件。索性,hadoop可以设置pid的存放位置。
在hadoop-env.sh中,默认是关闭了的。删除 # export HADOOP_PID_DIR=/var/hadoop/pids 前面的#
把路径设置成你想要的路径。
同样的hbase也是一样的,最好改一下。
到这里让我想起了hbase曾经报过一个错误 找不到hbase.version
在tmp目录也有这个文件,我想重启机器后 hbase找不到这个文件也与这个目录有关。