2008年5月4日日曜日

hadoop使ったプログラムのテストではまった

テストなので、java -cp classがあるディレクトリ:hadoop-0.16.3-core.jar hogeとかやって動かしていた。どうせヒストリー使うだけなので。
そのあとにjarを作って、java -cp myapp.jar:hadoop-0.16.3-core.jar hogeで動かすようにした。もともとantでjarは作ってたんだけど…

テストしていたのは、HDFSにファイルを作ったりするプログラムなので、結果をhadoop fs -lsrとかして動作を確認していた。
それが、jarを作って動かすようにしてから、HDFS上に全くファイルが作られなくなった。
プログラム的にはエラーが起こるわけでもないし、ファイル作った直後に読み出すコードを入れてみると正しく読める。なので、別のnamenodeに繋いでしまっているのではないか?と焦る。(2系統あるので)

ここで設定ファイルを確認しようとして気付いた。「classのディレクトリにhadoop-site.xml入れてたんだった…
デフォルトでは、ローカルファイルシステム上で動くので、hadoop fs -lsrでは確認できなかったという落ちでした。ローカルファイルシステム上にちゃんとファイルが出来ていました。何度も動かしたので大量に。

ということで、使っている設定ファイルとか繋いでいるnamenodeに気をつけないと言う教訓が得られました。



0 件のコメント:

コメントを投稿