More Related Content
Similar to Clojure+Leiningenで3分Hadoop (20)
PDF
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own datasetmoto2g
PDF
Jenkins study jenkins build-cicdi昌桓 李
More from Toshiaki Maki (20)
PDF
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tToshiaki Maki
PDF
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1Toshiaki Maki
PDF
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Toshiaki Maki
PDF
Open Service Broker APIとKubernetes Service Catalog #k8sjpToshiaki Maki
PDF
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoToshiaki Maki
PDF
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Toshiaki Maki
PDF
Managing your Docker image continuously with Concourse CIToshiaki Maki
PDF
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...Toshiaki Maki
Clojure+Leiningenで3分Hadoop
- 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 )
- 3. Leiningen (pronounced “LINE-ing-en”) Clojure のビルドツール http://github.com/technomancy/leiningen デファクトスタンダードになりつつある jar(java アーカイブ ) の依存関係解決 maven2 レポジトリから取得する クラスパス設定済み REPL ・コンパイル環境を提供 Clojure 未インストールの状態からも使える ( 必要なものは Java のみ ) 超手軽に Clojure 開発環境構築& Java ライブラリ取得・使用が可能
- 4. 例題として Hadoop Leinigen の手軽さを活かし、 Hadoop 本のサンプルプログラム ( 例 2.6: 気象情報データセットから最大温度を取得 ) を実行する Clojure 、 Hadoop がインストールされていない想定 要 java/git/ ネット環境
- 5. デモ ( 動画 ) leiningen の使い方 ( コマンド一覧 ) は後ろのスライドに記載 実行するプログラム : http://bit.ly/9XieeT 軽く解説記事 : http://bit.ly/bodVU1
- 7. Leiningen の基本的な使い方 http://github.com/technomancy/leiningen/raw/stable/bin/lein をダウンロードしてパスを通す lein self-install leiningen インストール直後に一回だけ行う (windows 版は大変! ) lein new [project name] プロジェクト作成。 project.clj( プロジェクト設定マクロ ) 、スケルトンファイル生成 lein deps project.clj に記述した依存ライブラリ取得 (clojure 本体 /contrib もここで取得可能 ) lein repl project.clj に記述した依存ライブラリをクラスパスに入れた状態で REPL 起動 lein test テストコード実行 lein compile clj ファイルを class ファイル (java バイトコード ) にコンパイル lein jar プロジェクトで生成した class ファイルをまとめて java アーカイブ (jar) を作成 lein uberjar 依存ライブラリを含めた jar を作成 lein swank swank server を立ち上げる。別途プラグインが必要 その他 http://bit.ly/96A9ia 参考
- 8. マクロで Mapper/Reducer 定義 Mapper/Reduce クラス定義のような定型的な箇所はマクロでテンプレート化。 http://github.com/making/cloudure で改良中 (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. 簡単並行処理 map の代わりに pmap を使うと並行処理になる(ただし低コストな処理の場合はかえってスレッド生成のオーバヘッドのほうが大きい) pmap/reduce!( 違 ) 実際 map 関数を使うのは reducer 内だと思うので、、、
- 10. マルチメソッドを使う int -> IntWritable とか double -> DoubleWritable とか String -> Text に変換して Context に設定するのが面倒くさい->マルチメソッドでディスパッチ! Mapper/Reducer の返り値が [key value] な vector である場合にそれぞれディスパッチするようなマクロにする パフォーマンスはいまいちかも?