could only be replicated to 0 nodes, instead of 1
Hadoop 1.0.3の検証環境を作ったのだが、お約束のHDFSのエラーにハマった。HDFSにファイル追加しようとすると、以下のようなExceptionが出る。
12/10/08 14:31:24 WARN hdfs.DFSClient: Error Recovery for block null bad datanode[0] nodes == null
12/10/08 14:31:24 WARN hdfs.DFSClient: Could not get block locations. Source file "/user/hadoop/input/input/text01" - Aborting...
put: java.io.IOException: File /user/hadoop/input/input/text01 could only be replicated to 0 nodes, instead of 1
HDFSの再作成をしたのだが、なぜか復旧しなかった。色々試したが、どうやらHadoop関連のゴミプロセスが残っていたことが原因だったようだ。stop-all.shでは停止できなかったらしい。
エラー復旧させるために、
1、bin/stop-all.shする
2、Hadoopのシステムフォルダ(今回の環境だとデフォルトの/tmpの下)のhadoopユーザのファイル、ディレクトリを削除
3、ps -ef | grep <hadoopユーザ>して、ゴミプロセスを探し、kill -9
4、hadoop namenode -format
5、bin/start-all.sh
したら直った。