Your SlideShare is downloading. ×
0
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Clojure+Leiningenで3分Hadoop

4,842

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,842
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
24
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Clojure+Leiningen で 3 分 Hadoop Shibuya.lisp TT#5 March 10, 2010 @making ( http://ik.am ) BlogSystem Written By CommonLisp 「 CategoL 」 ( http://github.com/making/categol )
  • 2. Clojure をインストールした後、 こんな風に思ったことないですか? REPL 起動の仕方が人によって違わない? .clj ファイルをロードしたいけど Could not locate っていわれる クラスパス追加しないといけないの? jar をどこに置けばいいのか分からない 面倒くさい。。。
  • 3. Leiningen (pronounced “LINE-ing-en”) <ul><li>Clojure のビルドツール </li></ul><ul><ul><li>http://github.com/technomancy/leiningen </li></ul></ul><ul><ul><li>デファクトスタンダードになりつつある </li></ul></ul><ul><li>jar(java アーカイブ ) の依存関係解決 </li></ul><ul><ul><li>maven2 レポジトリから取得する </li></ul></ul><ul><li>クラスパス設定済み REPL ・コンパイル環境を提供 </li></ul><ul><li>Clojure 未インストールの状態からも使える ( 必要なものは Java のみ ) </li></ul>超手軽に Clojure 開発環境構築& Java ライブラリ取得・使用が可能
  • 4. 例題として Hadoop <ul><li>Leinigen の手軽さを活かし、 Hadoop 本のサンプルプログラム ( 例 2.6: 気象情報データセットから最大温度を取得 ) を実行する </li></ul><ul><li>Clojure 、 Hadoop がインストールされていない想定 </li></ul><ul><ul><li>要 java/git/ ネット環境 </li></ul></ul>
  • 5. デモ ( 動画 ) <ul><li>leiningen の使い方 ( コマンド一覧 ) は後ろのスライドに記載 </li></ul><ul><li>実行するプログラム : http://bit.ly/9XieeT </li></ul><ul><li>軽く解説記事 : http://bit.ly/bodVU1 </li></ul>
  • 6. 以下、補足資料
  • 7. Leiningen の基本的な使い方 <ul><li>http://github.com/technomancy/leiningen/raw/stable/bin/lein </li></ul><ul><ul><li>をダウンロードしてパスを通す </li></ul></ul><ul><li>lein self-install </li></ul><ul><ul><li>leiningen インストール直後に一回だけ行う (windows 版は大変! ) </li></ul></ul><ul><li>lein new [project name] </li></ul><ul><ul><li>プロジェクト作成。 project.clj( プロジェクト設定マクロ ) 、スケルトンファイル生成 </li></ul></ul><ul><li>lein deps </li></ul><ul><ul><li>project.clj に記述した依存ライブラリ取得 (clojure 本体 /contrib もここで取得可能 ) </li></ul></ul><ul><li>lein repl </li></ul><ul><ul><li>project.clj に記述した依存ライブラリをクラスパスに入れた状態で REPL 起動 </li></ul></ul><ul><li>lein test </li></ul><ul><ul><li>テストコード実行 </li></ul></ul><ul><li>lein compile </li></ul><ul><ul><li>clj ファイルを class ファイル (java バイトコード ) にコンパイル </li></ul></ul><ul><li>lein jar </li></ul><ul><ul><li>プロジェクトで生成した class ファイルをまとめて java アーカイブ (jar) を作成 </li></ul></ul><ul><li>lein uberjar </li></ul><ul><ul><li>依存ライブラリを含めた jar を作成 </li></ul></ul><ul><li>lein swank </li></ul><ul><ul><li>swank server を立ち上げる。別途プラグインが必要 </li></ul></ul><ul><li>その他 http://bit.ly/96A9ia 参考 </li></ul>
  • 8. マクロで Mapper/Reducer 定義 <ul><li>Mapper/Reduce クラス定義のような定型的な箇所はマクロでテンプレート化。 </li></ul><ul><li>http://github.com/making/cloudure </li></ul><ul><li>で改良中 </li></ul>(defmapreduce hello :mapper ([key value context] (.write context (Text. key) (IntWritable. (Integet/parseInt value)))) :reducer ([key values context] (.write context key (IntWritable. (reduce + (map #(.get %) values))))))
  • 9. 簡単並行処理 <ul><li>map の代わりに pmap を使うと並行処理になる(ただし低コストな処理の場合はかえってスレッド生成のオーバヘッドのほうが大きい) </li></ul><ul><li>pmap/reduce!( 違 ) </li></ul><ul><ul><li>実際 map 関数を使うのは reducer 内だと思うので、、、 </li></ul></ul>
  • 10. マルチメソッドを使う <ul><li>int -&gt; IntWritable とか </li></ul><ul><li>double -&gt; DoubleWritable とか </li></ul><ul><li>String -&gt; Text </li></ul><ul><li>に変換して Context に設定するのが面倒くさい-&gt;マルチメソッドでディスパッチ! </li></ul><ul><li>Mapper/Reducer の返り値が [key value] な vector である場合にそれぞれディスパッチするようなマクロにする </li></ul><ul><li>パフォーマンスはいまいちかも? </li></ul>

×