Linux系統下pid與pid文件及Hadoop更改pid文件存儲位置
阿新 • • 發佈:2018-05-22
Hadoop1.認識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文件存儲位置