HDFS真死和假死,其實(shí)就是?process information unavailable狀態(tài)的真假判斷蜕青。
一、真死
我們先在 /opt/software/hadoop-2.8.1/sbin目錄下使用命令 ./start-dfs.sh將hdfs啟動,這時(shí)候有一個NameNode等太,一個SecondaryNameNode,一個DataNode蛮放。
如圖:
在root用戶下使用命令 kill -9 $(pgrep -f hadoop-2.8.1) 將hadoop用戶下的進(jìn)程全部殺死缩抡。就會出現(xiàn)以下狀態(tài),使用命令 ps -ef|grep 進(jìn)程號 ?查看進(jìn)程也會發(fā)現(xiàn)包颁,所有的進(jìn)程都不存在了瞻想。這種狀態(tài)就是真死。
二娩嚼、假死
? ? ? ? 承接上文蘑险,在hadoop用戶下再一次重新啟動HDFS,然后jps查看進(jìn)程是否存在岳悟。此時(shí)的進(jìn)程是存在的佃迄。
如下圖:
然后再在root用戶下直接jps查看進(jìn)程,卻出現(xiàn)以下的狀況竿音,發(fā)現(xiàn)進(jìn)程依舊不可查看和屎。而且此時(shí)的進(jìn)程的進(jìn)程號發(fā)生了變化,進(jìn)程號自動變?yōu)閯倓倖拥倪M(jìn)程號春瞬。
這種狀態(tài)屬于假死柴信。
總結(jié):真死——進(jìn)程不存在且不可用(process information unavailable)
? ? ? ? ? ? 假死——進(jìn)程存在但不可用 (process information unavailable)
三、jps ——查看Java的進(jìn)程號
進(jìn)一步解釋:jps 查詢的是當(dāng)前用戶的?hsperfdata_當(dāng)前用戶/文件宽气。
hsperfdata_hadoop/文件 ? 文件的名字就是該用戶進(jìn)程的進(jìn)程號随常。
四、在生產(chǎn)上出現(xiàn)process information unavailable狀態(tài)時(shí)萄涯,該怎么做呢绪氛?
1. 使用 jps 找到進(jìn)程號
2. ?ps -ef|grep pid 查看是否存在
3. ?如果不存在,就可以去該 /tmp/hsperfdata_xxx目錄下刪除
? ? ?查找準(zhǔn)確的hsperfdata_xxx目錄—— cd /tmp目錄涝影,然后輸入命令 ll hsperfdata_*枣察,查看所有用戶的hsperfdata_xxx對應(yīng)文件,然后看顯示不可用(process information unavailable)的進(jìn)程號在哪個文件夾,再去對應(yīng)的文件夾將文件刪除序目。
4. ?如果存在臂痕,但是當(dāng)前用戶查看進(jìn)程就是顯示process information unavailable(不可用),就切換用戶查看進(jìn)程在哪猿涨。