Hadoop的Pid文件

存储位置

hadoop启动之后,pid文件是存储哪里?
我们可以通过查看 hadoop-env.sh文件

cat etc/hadoop/hadoop-env.sh从下图可以看出hadoop默认的pid文件是存储到/tmp目录的

从下图可以看出hadoop默认的pid文件是存储到/tmp目录的

从下图可以看出hadoop默认的pid文件是存储到/tmp目录的

hadoop-env.sh文件

从下图可以看出,后缀名是.pid的就是hadoop的pid文件

/tmp目录

启动和停止

我们启动的时候,是执行sbin/start-df.sh文件,我们看一看这个文件

cat sbin/start-dfs.sh

start-df.sh文件

从上面这个图可以看出,启动namenode节点的时候,调用了hadoop-daemons.sh文件了,我们再看看这个文件

cat sbin/hadoop-daemons.sh

hadoop-daemons.sh文件

从上图可以看出,在最后一行又调用了hadoop-daemon.sh文件,我们在看看这个文件

cat sbin/hadoop-daemon.sh

hadoop-daemon.sh文件

从上面两张图可以得出结论:

  1. hadoop启动的时候,会生成pid文件,并把进程号写入到pid文件
  2. hadoop停止的时候,会到pid文件中获取进程号,然后停止进程,最后删除pid文件

下面我们做一下验证:

  1. 看下namenode的进程号是不是和pid文件里的进程号一样

    start-jps命令

    从上图可以看出,进程号是一样的,说明我们前面的推理是正确的

  2. 我们把生成号的namenode的pid文件名字改一下,停止的时候脚本会找不到pid文件,也就不会停止namenode进程了

    stop-jps命令

    从上图可以看出,我们的两个推理是正确的

  3. tmp目录的弊端
    linux的/tmp目录会自动清理一段时间没有访问的文件,一般都是30天,假如hadoop启动了30天以上,那么pid文件会被删除,再调用停止的时候会停止不了,生产上一般不会放在/tmp目录下,下面我们自己创建个目录存放pid文件

    #创建文件夹
    mkdir -p /data/tmp
    #赋予权限
    chmod 777 -R /data/tmp
    然后修改etc/hadoop/hadoop-env.sh文件

    然后修改etc/hadoop/hadoop-env.sh文件

    vi /etc/hadoop/hadoop-env.sh

    修改hadoop-env.sh文件的pid目录

    然后启动

    sbin/start-dfs.sh

    启动之后,我们查看pid文件

    新的pid目录


原文链接:https://blog.csdn.net/u010452388/article/details/97686380

Author: Tunan
Link: http://yerias.github.io/2018/10/09/hadoop/6/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.