大数据开发之Hadoop篇----pid文件剖析

这里我们先看下在我还没有启hdfs那三个进程的时候,/tmp目录下的情况:

现在我启动一下hdfs三个进程:

这个时候有没发现在/tmp目录下多出了几个文件

这几个文件记录的是什么呢?

存储的就是namenode这个进程的进程号,当我们关掉这几个进程后,在/tmp目录下的这几个文件也就消失了。那么这几个文件究竟对我们的进程有什么影响呢?老实说,对进程的运行是没有什么影响的,但是......

来我们看下删除后的情况,我们就直接拿namenode的pid文件来测试呗

我把namende的pid文件删除后,jps进程还在,现在我们再测试下是否可以读写hdfs呢?

还是能操作hdfs的,这个时候我们来关闭一下hdfs的进程

无法关闭namenode进程了,22059进程还在。

这个时候我们在次启动hdfs看看下情况是什么,尤其是/tmp中pid文件里的内容会是怎么样呢?

一切正常,尤其是jps出来的namenode的进程号还是22059。好,现在我们去看下/tmp目录下的namenode的pid文件里的内容

对应我们之前说的pid文件是存储进程号的,但是现在的pid文件里的进程号和我们jps出来的进程号是不一样的,为什么呢?

我们用ps -ef来查看下namenode这个进程啥回事

有两个NameNode进程而且进程号都不一致了,现在我们可以得出的结论是,如果删除了pid文件虽然不影响hdfs的正常运行,但是不能正常关闭,重启后的进程也非常混乱。那么你们可能会说你不要手贱去删除就好了,这里就引出我们什么要说这个的问题了,我们的pid文件是在哪里呀?/tmp目录下呀,按照linux的机制是每一个月就清空一次/tmp目录的东西,到时候系统自动帮你删了pid文件时,我们生产上虽然很少关闭hdfs进程,但有的时候也难免的吧,这个时候我们关闭也不行,重启也混乱就不好了。

所以我们需要将pid文件的存储路径给修改了,那么在哪里修改这个参数呢?

这个参数是配置在hadoop/etc/hadoop/hadoop-env.sh下的

就是这个参数了,一般默认是/tmp目录下的,如果在生产上我们就要注意了。

这也是在生产上吃过亏的教训呀,以后要注意了。

猜你喜欢

转载自blog.csdn.net/weixin_39702831/article/details/83025792
今日推荐