Clojure + Leiningen なサンプル試してみるなど

以下なナニを試験してみました。

とりあえず start-all して

$ /usr/local/hadoop/bin/start-all.sh
starting namenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-namenode-ubuntu.out
localhost: starting datanode, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-datanode-ubuntu.out
localhost: Error: JAVA_HOME is not set.
localhost: starting secondarynamenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-secondarynamenode-ubuntu.out
localhost: Error: JAVA_HOME is not set.
starting jobtracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-jobtracker-ubuntu.out
run java in /usr/lib/jvm/java-1.6.0-openjdk
localhost: starting tasktracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-tasktracker-ubuntu.out
localhost: Error: JAVA_HOME is not set.
$

あらら。conf/hadoop-env.sh 修正するか。一旦止めて

$ /usr/local/hadoop/bin/stop-all.sh
stopping jobtracker
localhost: no tasktracker to stop
stopping namenode
localhost: no datanode to stop
localhost: no sectondarynamenode to stop
$

とほほ。修正してリトライ。

$ /usr/local/hadoop/bin/start-all.sh
starting namenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-namenode-ubuntu.out
run java in /usr/lib/jvm/java-1.6.0-openjdk
localhost: starting datanode, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-datanode-ubuntu.out
localhost: run java in /usr/lib/jvm/java-1.6.0-openjdk
localhost: starting secondarynamenode, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-secondarynamenode-ubuntu.out
localhost: run java in /usr/lib/jvm/java-1.6.0-openjdk
starting jobtracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-jobtracker-ubuntu.out
run java in /usr/lib/jvm/java-1.6.0-openjdk
localhost: starting tasktracker, logging to /usr/local/hadoop/bin/../logs/hadoop-hduser-tasktracker-ubuntu.out
localhost: run java in /usr/lib/jvm/java-1.6.0-openjdk
$

ええと jps とかしてみれば良いのかな。

$ jps
4451 NameNode
4550 DataNode
4655 SecondaryNameNode
4816 TaskTracker
4971 Jps
4716 JobTracker
$

これで準備完了なのかな。

$ lein compile

色々 Download されているご様子。てかなんとなく不具合っぽい出力だったりしてるのですがどうしたものか。
このあたり?

1) org.clojure:clojure:jar:1.1.0-master-SNAPSHOT

Try downloading the file manually from the project website.

Then, install it using the command:
mvn install:install-file -DgroupId=org.clojure -DartifactId=clojure -Dversion=1.1.0-master-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file

うーん。lib の中見たら clojure-1.1.0.jar はありますね。スルーしてみます。

$ lein uberjar

やはり 1.1.0-master-SNAPSHOT な clojure を要求してくるな。以下な情報が出力されております。

  Path to dependency:
        1) org.apache.maven:super-pom:jar:2.0
        2) leiningen:lein-swank:jar:1.1.0
        3) swank-clojure:swank-clojure:jar:1.1.0
        4) org.clojure:clojure:jar:1.1.0-master-SNAPSHOT

これ、うぶんつな leiningen 使わない、ってチョイスは無いんかな。

leiningen 手動で導入

スクリプト入手して実行せよ、とのこと。

$ wget https://raw.github.com/technomancy/leiningen/stable/bin/lein

とりあえず leiningen と clojure をアンインストールしてこのスクリプトを起動してみます。

$ ./lein self-install

clojure 1.2.1 を取得しているご様子。なんとなく leiningen と clojurewget しただけに見えるのだけれど、どうなんだろ。
を、./lein --help したらヘルプが出力されました。これを使えば良いのか。

$ cd clj-max-temperature
$ ../lein clean
$ ../lein compile

なんとなく動作がもさっとしてるなぁ。あ、でもこっちの方が出力抑制されてていい感じ。と言いつつ lein uberjar したらオチた。
再度 leiningen のみ導入してリトライしてみるもなんとなく lein compile がうまく動作していないカンジ。再度 compile してみたら今度は clojure-1.1.0-master-SNAPSHOT が云々なエラーで停止。
手動で入れた方は compile はパスするのか。どっちも動かないってアナタorz

あら?

リトライしたら挙動が違うぞ、ってか clj-max-temperature-*.jar ができたな。不具合が再現せず正常終了しちゃうとか相当滅茶苦茶だなぁ。
で、jar ができたらどうするんだっけ。以下を実行とあるな。

$ /usr/local/hadoop/bin/hadoop jar clj-max-temperature-standalone.jar input/sample.txt output

あらら、動かんな。hdfs なナニに置かないと駄目なの?
試してみます。

$ /usr/local/hadoop/bin/hadoop dfs -copyFromLocal input /user/hduser/input
$ /usr/local/hadoop/bin/hadoop dfs -ls /user/hduser

コピーされてますね。で、以下?

$ /usr/local/hadoop/bin/hadoop jar clj-max-temperature-standalone.jar input/sample.txt output

何かをしているご様子。そして loadave が結構上がってます。ctrl-c でプロセス殺しました。なんとなく挙動として微妙だなぁ。いちおう output にナニモノカが出力されてはいましたがどうなのでしょうか。

別途

確保している仮想ホストで上記手順をリトライしてみます。今日はもう駄目だ。