SlideShare a Scribd company logo
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 )
Clojure をインストールした後、 こんな風に思ったことないですか? REPL 起動の仕方が人によって違わない? .clj ファイルをロードしたいけど Could not locate っていわれる クラスパス追加しないといけないの? jar をどこに置けばいいのか分からない 面倒くさい。。。
Leiningen  (pronounced “LINE-ing-en”) Clojure のビルドツール http://github.com/technomancy/leiningen デファクトスタンダードになりつつある jar(java アーカイブ ) の依存関係解決 maven2 レポジトリから取得する クラスパス設定済み REPL ・コンパイル環境を提供 Clojure 未インストールの状態からも使える ( 必要なものは Java のみ ) 超手軽に Clojure 開発環境構築& Java ライブラリ取得・使用が可能
例題として Hadoop Leinigen の手軽さを活かし、 Hadoop 本のサンプルプログラム ( 例 2.6: 気象情報データセットから最大温度を取得 ) を実行する Clojure 、 Hadoop がインストールされていない想定 要 java/git/ ネット環境
デモ ( 動画 ) leiningen の使い方 ( コマンド一覧 ) は後ろのスライドに記載 実行するプログラム :  http://bit.ly/9XieeT 軽く解説記事 :  http://bit.ly/bodVU1
以下、補足資料
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   参考
マクロで 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))))))
簡単並行処理 map の代わりに pmap を使うと並行処理になる(ただし低コストな処理の場合はかえってスレッド生成のオーバヘッドのほうが大きい) pmap/reduce!( 違 ) 実際 map 関数を使うのは reducer 内だと思うので、、、
マルチメソッドを使う int -> IntWritable とか double -> DoubleWritable とか String -> Text に変換して Context に設定するのが面倒くさい->マルチメソッドでディスパッチ! Mapper/Reducer の返り値が [key value] な vector である場合にそれぞれディスパッチするようなマクロにする パフォーマンスはいまいちかも?

More Related Content

Similar to Clojure+Leiningenで3分Hadoop (20)

PDF
Filesystem via MySQL
Tomoya Kabe
 
PDF
Tour of distributed systems 1 - ZooKeeper
Chris Birchall
 
PDF
20151114 drupal温泉合宿 成果
Kunihiro Imura
 
PDF
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
moto2g
 
ODP
Doctrineではじめるsymfony1.2開発
Katsuhiro Ogawa
 
PDF
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Tetsuyuki Kobayashi
 
PDF
「はじめてのClojure」出版記念!Light Tableを使ってClojureに触れてみよう!
schoowebcampus
 
PPT
20090124shibuya Trac
Kazuya Hirobe
 
KEY
Clojureの発表など
Kikuta Go
 
PDF
Javaのログ出力: 道具と考え方
Taku Miyakawa
 
PDF
Laravel heroku-push
Kazuya Gonjo
 
PDF
誰でも出来るosxでのローカルなウェブ開発環境構築
Hiroshi Yamato
 
PDF
CakePHP - The point of upgrade
Yasuo Harada
 
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
 
PDF
明日から使えるgradle
kimukou_26 Kimukou
 
ODP
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
Hidenori Goto
 
PPTX
Clojure座談会 #1 LT 独自コレクションを定義しよう
Keisuke Fukuda
 
PDF
Jenkins study jenkins build-cicdi
昌桓 李
 
PPT
Scala Daysに行ってみて
Kota Mizushima
 
PPTX
Glusterfsを用いた静的コンテンツ配信サーバ冗長化 20130723
Takaki Kawamura
 
Filesystem via MySQL
Tomoya Kabe
 
Tour of distributed systems 1 - ZooKeeper
Chris Birchall
 
20151114 drupal温泉合宿 成果
Kunihiro Imura
 
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
moto2g
 
Doctrineではじめるsymfony1.2開発
Katsuhiro Ogawa
 
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Tetsuyuki Kobayashi
 
「はじめてのClojure」出版記念!Light Tableを使ってClojureに触れてみよう!
schoowebcampus
 
20090124shibuya Trac
Kazuya Hirobe
 
Clojureの発表など
Kikuta Go
 
Javaのログ出力: 道具と考え方
Taku Miyakawa
 
Laravel heroku-push
Kazuya Gonjo
 
誰でも出来るosxでのローカルなウェブ開発環境構築
Hiroshi Yamato
 
CakePHP - The point of upgrade
Yasuo Harada
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
 
明日から使えるgradle
kimukou_26 Kimukou
 
symfonyで汎用設定値を読み書きするモデル等をプラグインにした話
Hidenori Goto
 
Clojure座談会 #1 LT 独自コレクションを定義しよう
Keisuke Fukuda
 
Jenkins study jenkins build-cicdi
昌桓 李
 
Scala Daysに行ってみて
Kota Mizushima
 
Glusterfsを用いた静的コンテンツ配信サーバ冗長化 20130723
Takaki Kawamura
 

More from Toshiaki Maki (20)

PDF
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
Toshiaki Maki
 
PDF
Concourse x Spinnaker #concourse_tokyo
Toshiaki Maki
 
PDF
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Toshiaki Maki
 
PDF
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
Toshiaki Maki
 
PDF
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Toshiaki Maki
 
PDF
Spring Boot Actuator 2.0 & Micrometer
Toshiaki Maki
 
PDF
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Toshiaki Maki
 
PDF
Spring Cloud Function & Project riff #jsug
Toshiaki Maki
 
PDF
Introduction to Spring WebFlux #jsug #sf_a1
Toshiaki Maki
 
PDF
BOSH / CF Deployment in modern ways #cf_tokyo
Toshiaki Maki
 
PDF
Why PCF is the best platform for Spring Boot
Toshiaki Maki
 
PDF
Zipkin Components #zipkin_jp
Toshiaki Maki
 
PPTX
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
Toshiaki Maki
 
PDF
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Toshiaki Maki
 
PDF
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
Toshiaki Maki
 
PDF
Spring ❤️ Kotlin #jjug
Toshiaki Maki
 
PDF
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Toshiaki Maki
 
PDF
Managing your Docker image continuously with Concourse CI
Toshiaki Maki
 
PDF
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Toshiaki Maki
 
PDF
Short Lived Tasks in Cloud Foundry #cfdtokyo
Toshiaki Maki
 
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
Toshiaki Maki
 
Concourse x Spinnaker #concourse_tokyo
Toshiaki Maki
 
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Toshiaki Maki
 
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
Toshiaki Maki
 
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Toshiaki Maki
 
Spring Boot Actuator 2.0 & Micrometer
Toshiaki Maki
 
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Toshiaki Maki
 
Spring Cloud Function & Project riff #jsug
Toshiaki Maki
 
Introduction to Spring WebFlux #jsug #sf_a1
Toshiaki Maki
 
BOSH / CF Deployment in modern ways #cf_tokyo
Toshiaki Maki
 
Why PCF is the best platform for Spring Boot
Toshiaki Maki
 
Zipkin Components #zipkin_jp
Toshiaki Maki
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
Toshiaki Maki
 
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Toshiaki Maki
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
Toshiaki Maki
 
Spring ❤️ Kotlin #jjug
Toshiaki Maki
 
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Toshiaki Maki
 
Managing your Docker image continuously with Concourse CI
Toshiaki Maki
 
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Toshiaki Maki
 
Short Lived Tasks in Cloud Foundry #cfdtokyo
Toshiaki Maki
 
Ad

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 )
  • 2. Clojure をインストールした後、 こんな風に思ったことないですか? REPL 起動の仕方が人によって違わない? .clj ファイルをロードしたいけど Could not locate っていわれる クラスパス追加しないといけないの? jar をどこに置けばいいのか分からない 面倒くさい。。。
  • 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 である場合にそれぞれディスパッチするようなマクロにする パフォーマンスはいまいちかも?