1. 程式人生 > >Linux系統下pid與pid文件及Hadoop更改pid文件存儲位置

Linux系統下pid與pid文件及Hadoop更改pid文件存儲位置

Hadoop

1.認識pid:

PID全稱是Process Identification。
PID是進程的代號,每個進程有唯一的PID編號。它是進程運行時系統隨機分配的,並不代表專門的進程。在運行時PID是不會改變標識符的,但是你終止程序後再運行PID標識符就會被系統回收,就可能會被繼續分配給新運行的程序。

2.pid文件

  • pid文件的內容
    用cat命令查看,可以看到內容只有一行,記錄了該進程的ID
  • pid文件的作用
    防止啟動多個進程副本
  • pid文件的原理
    進程運行後會給.pid文件加一個文件鎖,只有獲得該鎖的進程才有寫入權限(F_WRLCK),把自身的pid寫入該文件中。
    其他試圖獲得該鎖的進程會自動退出。

    3.Hadoop中pid文件存儲

  • 簡介:
    Hadoop啟動後相關進程的PID文件默認配置是保存在 /tmp 目錄下,使用stop-all.sh,stop-dfs.sh,stop-yarn.sh腳本來停止相關進程是通過對應的pid文件來停止的,而Linux下 /tmp 目錄有定時清理的機制,所以為了防止停止進程時出現no namenode to stop等報錯,我們應該更改進程pid文件存儲的位置。
  • 更改方法:
    [hadoop@hadoop000 ~]$ mkdir -p /opt/software/hadoop-2.8.1/pids
    [hadoop@hadoop000 ~]$ jps
    10512 ResourceManager
    8018 Jps
    10004 SecondaryNameNode
    9655 NameNode
    9806 DataNode
    10623 NodeManager
    [hadoop@hadoop000 ~]$ cd /opt/software/hadoop-2.8.1/sbin/
    [hadoop@hadoop000 sbin]$ ./stop-dfs.sh
    [hadoop@hadoop000 sbin]$ ./stop-yarn.sh
    [hadoop@hadoop000 sbin]$ vi hadoop-daemon.sh
    HADOOP_PID_DIR=/opt/software/hadoop-2.8.1/pids
    [hadoop@hadoop000 sbin]$ vi yarn-daemon.sh
    YARN_PID_DIR=/opt/software/hadoop-2.8.1/pids
    [hadoop@hadoop000 sbin]$ ./start-dfs.sh
    [hadoop@hadoop000 sbin]$ ./start-yarn.sh
    [hadoop@hadoop000 sbin]$ jps
    9201 SecondaryNameNode
    9425 ResourceManager
    9540 NodeManager
    9828 Jps
    8852 NameNode
    8973 DataNode
    #發現pid存儲在新的位置
    [hadoop@hadoop000 sbin]$ cd /opt/software/hadoop-2.8.1/pids/
    [hadoop@hadoop000 pids]$ ll
    total 20
    -rw-rw-r-- 1 hadoop hadoop 5 May 22 20:14 hadoop-hadoop-datanode.pid
    -rw-rw-r-- 1 hadoop hadoop 5 May 22 20:14 hadoop-hadoop-namenode.pid
    -rw-rw-r-- 1 hadoop hadoop 5 May 22 20:14 hadoop-hadoop-secondarynamenode.pid
    -rw-rw-r-- 1 hadoop hadoop 5 May 22 20:15 yarn-hadoop-nodemanager.pid
    -rw-rw-r-- 1 hadoop hadoop 5 May 22 20:15 yarn-hadoop-resourcemanager.pid

Linux系統下pid與pid文件及Hadoop更改pid文件存儲位置