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 と clojure を wget しただけに見えるのだけれど、どうなんだろ。
を、./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 にナニモノカが出力されてはいましたがどうなのでしょうか。
別途
確保している仮想ホストで上記手順をリトライしてみます。今日はもう駄目だ。