HadoopのCould not find any valid local directoryにハマる

これ,これで3回目くらい同じハマり方をしてる気がする...
私はPentium Mobileの古いノートPCがメインサーバなので,ディスク容量も少ないです.

だから,シングルノードセットアップをして,
http://hadoop.apache.org/common/docs/current/single_node_setup.html
サンプルを叩いただけで...
$ ./bin/hadoop jar hadoop-mapred-examples-0.21.0.jar grep input output 'dfs[a-z.]+'
バージョンも悪かった...0.21.0はひどい...)

途中でこんなエラーが出ます.
Could not find any valid local directory for output/hogehogehoge...

Java系はデフォルトで/tmpを使いまくるので,一杯になってました...rootになって

# rm -fR /tmp/*

ってやるとサンプルが動きました.

$ cat output/*
1       dfsadmin

どれ,次は擬似分散モード...と思ったら,おっと.

$ hadoop namenode -format
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
(中略)
Storage directory /tmp/hadoop-hadoop/dfs/name has been successfully formatted.
ls -l  /usr/local/lib/hadoop-0.21.0/bin/hdfs
-rwxr-xr-x 1 hadoop hadoop 4130 Aug 17 13:56 /usr/local/lib/hadoop-0.21.0/bin/hdfs
ls -l  /usr/local/lib/hadoop-0.20.2/bin/hdfs
ls: cannot access /usr/local/lib/hadoop-0.20.2/bin/hdfs: No such file or directory
 /usr/local/lib/hadoop-0.21.0/bin/hdfs
Hadoop common not found.

これ...バグっぽい...hdfsコマンドからはhdfs-config.shがすぐに呼ばれて,hdfs-config.shでは$HADOOP_COMMON_HOMEというディレクトリの存在を確認しているのですが,$HADOOP_COMMON_HOMEって,まだどこでも定義されていないのでHadoop common not foundになっています.
適当にhdfs-config.shの中で

export HADOOP_HDFS_HOME="${HADOOP_HDFS_HOME:-$bin/..}"
export HADOOP_COMMON_HOME=$HADOOP_HDFS_HOME 

とかやってクリア.

$ /usr/local/lib/hadoop/bin/hdfs
Usage: hdfs [--config confdir] COMMAND
       where COMMAND is one of:
  namenode -format     format the DFS filesystem
  secondarynamenode    run the DFS secondary namenode
  namenode             run the DFS namenode
  datanode             run a DFS datanode
  dfsadmin             run a DFS admin client
  fsck                 run a DFS filesystem checking utility
  balancer             run a cluster balancing utility
  jmxget               get JMX exported values from NameNode or DataNode.
  oiv                  apply the offline fsimage viewer to an fsimage
  fetchdt              fetch a delegation token from the NameNode
                                                Use -help to see options

では改めまして...
$ /usr/local/lib/hadoop/bin/hdfs namenode -format
(中略)
Storage directory /tmp/hadoop-hadoop/dfs/name has been successfully formatted.
(後略)
2度目以降だと
Re-format filesystem in /tmp/hadoop-hadoop/dfs/name ? (Y or N)
と聞いてきますが,ここは大文字小文字が区別されるので注意.


デーモンスタート.
$ /usr/local/lib/hadoop/bin/start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-mapred.sh
あれ,こっちも変わったのね...やりなおしましょう.
$ /usr/local/lib/hadoop/bin/stop-all.sh
This script is Deprecated. Instead use stop-dfs.sh and stop-mapred.sh
(後略)

$ /usr/local/lib/hadoop/bin/start-dfs.sh
starting namenode, logging to /usr/local/lib/hadoop/bin/../logs/hadoop-hadoop-namenode-regge.out

/usr/local/lib/hadoop/bin/start-mapred.sh
Hadoop common not found.
こいつもかっ.こっちはmapred-config.shに一行追加して...

export HADOOP_MAPRED_HOME="${HADOOP_MAPRED_HOME:-$bin/..}"
export HADOOP_COMMON_HOME=$HADOOP_MAPRED_HOME

$ /usr/local/lib/hadoop/bin/start-mapred.sh
starting jobtracker, logging to /usr/local/lib/hadoop/bin/../logs/hadoop-hadoop-jobtracker-regge.out
(後略)
$ hadoop fs -ls
10/12/27 19:58:44 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
10/12/27 19:58:45 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
ls: Cannot access .: No such file or directory.

またdeprecated...
まぁ,
$ hadoop fs -put conf input
10/12/29 15:10:43 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
10/12/29 15:10:43 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
hadoop@regge:/usr/local/lib/hadoop$ hadoop fs -ls .
10/12/29 15:10:59 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
10/12/29 15:11:00 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2010-12-29 15:10 /user/hadoop/input
putも出来て結果もoutputに入ってるのでよしとしましょう.