実行は同じユーザ名で

namenodeを別のメモリーをバカヅミしているマシンで動かすことにした。なぜなら、128台で動かそうとした途端、Out of memoryなどといわれたからだ。javaのオプションを見直せばうまくいったかもしれないが、とりあえず別のマシンで動かすことにした。

が、今度はGrepのサンプルが動かない、エラーを見るとファイルがないといっている。んなアホな。-lsで見るとちゃんとできている。
このときあまり気に止めていなかったが、namenodeを動かしていたマシンのユーザ名がdatanodeと異なっていた。ちょっとソースを眺めていたら、絶対パスを指定しない場合、/user/ユーザ名/を補間するコードを見ていて、カレントパスというのが存在しないことに気がついた。
# cd がない時点で気づけよ。。。
とりあえず、javaのオプションに-Duser.name=ユーザー名 を付けて解決。

さらに一つ気がついた。セキュリティのセの字もないことに。シングルなユーザしか使わないことを前提にするなら、/user/ユーザ名/って付ける必要ないじゃん。それともマルチユーザで使うように拡張する予定なのか。だとしたらnamenodeを実行しているユーザでパスを補間するのは止めてほしいな。。。