私はSupervisorを使用してdockerized hadoop cdh 4.6.0を実行しています。 Dockerコンテナを開き、次の2つのコマンドを試しました。非常に混乱。
jps
103 -- process information unavailable
291 -- process information unavailable
107 -- process information unavailable
449 Jps
プロセス情報が利用できないということは、プロセスがゾンビであることを意味すると読みました。しかし、同じコンテナで使用されているこれらのプロセスの状態を確認しました。
root@1389ca416997:/# /etc/init.d/hadoop-hdfs-namenode status
* Hadoop namenode is running
root@1389ca416997:/# /etc/init.d/hadoop-hdfs-secondarynamenode status
* Hadoop secondarynamenode is running
root@1389ca416997:/# /etc/init.d/hadoop-hdfs-datanode status
* Hadoop datanode is running
このあいまいさの原因は何ですか?それとも私が間違っていますか?
答え1
jps
ファイルを使用して/tmp/hsperfdata_<username>
vmidと情報を決定します。ただし、何らかの理由でファイルが古いファイルになることがあります。これにより、jps
古いVMIDが報告され始めることができます。
答え2
私はあなたがすでにこの問題を解決していると思いますが、まだ答えを探している他の人のためにここに書いています。問題はこれに関連している可能性があります。ここにJavaエラーがあります。
解決策は、jpsが見つけることが期待される形式のファイルの特定のプロセスファイルへのソフトリンクを生成することです。たとえば、ln -s /tmp/hsperfdata_hdfs/553 /tmp/hsperfdata_553
または、Javaバージョンをダウングレードしてみることもできます。私にとって、これは1.7.0_65まで動作しました。おそらくそれ以降のバージョンでも動作するかもしれませんが、1.7.0_79で問題が発生し始めました。
あるいは、rootユーザーとしてのみ確認しても構わない場合は、/tmp/hsperfdata_userファイルを所有しているユーザーとしてjpsを実行できます。例:sudo -u hdfs jps
およびsudo -u mapred jps
/tmp/hsperfdata_hdfs/および/tmp/hsperfdata_mapred/でそれぞれ実行中のプロセスを表示します。