Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Hadoop Streamingを使って
お好きな言語で
Map☆Reduce!
田地 将也
2016/05/19 LT資料
• 氏名:田地 将也(@otajisan)
• 所属:某中小SIer -> 某Web企業
• 役職:エンジニア兼スクラムマスター
• 趣味:酒、バンド、スノボー、モンハン
• よく使う言語:PHP, Perl, JavaScript
• 「アジ...
皆さん、
Hadoop使ってますか?
Hadoopとは?
• Hadoopはデータを複数のサーバに分散し、
並列して処理するミドルウェア
• 要は、1台で捌き切れないような大量のデータを、
並列バッチ処理で効率よく捌けるソリューション
Hadoopって
• なんか難しそう
• なんとなく敬遠
• Javaかよ!
みたいな
そんなあなたに
Hadoop
Streaming!
Hadoop Streamingとは?
• HadoopのMap/Reduce処理は
基本的にJavaで書く
• Hadoopに標準で組み込まれている
「Hadoop Streaming」という機能を使うと、
Unixの標準入出力を受け付けるこ...
つまり、
好きな言語で
Map/Reduceを書ける!
本LTでは、
Hadoop Streamingは
色んな言語でMap/Reduce書けるよ、
という様子をご紹介し、
Hadoop コワクナイヨ- という感覚を持って
いただけることを目的とします。
今回取り扱う
サンプル(Hello World)
について
HadoopのHello World
• 「ワードカウント」が
Hadoopでのハロワにあたります
WordCout
aaa
bbb
ccc
aaa
bbb
ddd
bbb
ccc
ddd
入力ファイルたち
WordCout
aaa
bbb
ccc
aaa
bbb
ddd
bbb
ccc
ddd
Map Reduce
Map
Map
Reduce
Reduce
shuffle
ごにょごにょ
WordCout
aaa
bbb
ccc
aaa
bbb
ddd
bbb
ccc
ddd
Map Reduce
Map
Map
Reduce
Reduce
shuffle
aaa 2
bbb 3
ccc 2
ddd 2
WordCout
aaa
bbb
ccc
aaa
bbb
ddd
bbb
ccc
ddd
Map Reduce
Map
Map
Reduce
Reduce
shuffle
aaa 2
bbb 3
ccc 2
ddd 2
ワードの出現回数を
カウ...
WordCout
aaa
bbb
ccc
aaa
bbb
ddd
bbb
ccc
ddd
Map Reduce
Map
Map
Reduce
Reduce
shuffle
aaa 2
bbb 3
ccc 2
ddd 2
この、Map / Red...
書いてみた
python
WordCountMapper.py
WordCountMapper.py
ここで標準入力を
受け付けて
WordCountMapper.py
ここで標準入力を
受け付けて
該当行の文字列
(例えばaaa)
と、
1という数値を出力する
WordCountReducer.py
WordCountReducer.py
ここでMapperからの入力を
受け付けて
WordCountReducer.py
ここでMapperからの入力を
受け付けて
渡ってきた
key: aaa value: 1
といった文字列を、
key毎にvalueを加算する
実行
コマンドが長〜いので
シェルとか作るといいです
作成したMapper/Reducerは
このへんに指定
結果
ファイルが出力されて
結果
中身を見ると
結果
正常にワードカウント
されました!
php
WordCountMapper.php
WordCountMapper.php
ここで標準入力を
受け付けて
WordCountMapper.php
ここで標準入力を
受け付けて
該当行を出力
WordCountReducer.php
WordCountReducer.php
ここでMapperからの入力を
受け付けて
WordCountReducer.php
ここでMapperからの入力を
受け付けて
渡ってきた文字列毎に
単語数を加算
結果は一緒なので割愛
perl
WordCountMapper.pl
もはやMapperなんか要らん!
-mapperに/bin/catを
指定すればおk
WordCountReducer.pl
WordCountReducer.pl
ここでMapperからの入力を
受け付けて
WordCountReducer.pl
ここでMapperからの入力を
受け付けて
渡ってきた文字列毎に
単語数を加算
まとめ
• Hadoop Streamingを使えば、
色んな言語でMap/Reduceを書ける
(jsとかもできるらしい)
• お好きな言語で快適なHadoopライフを!
Upcoming SlideShare
Loading in …5
×

Hadoop Streamingを使って お好きな言語でMap☆Reduce!

990 views

Published on

SW LT大会 発表時の資料です。
Hadoopを敬遠している方にオススメしたいHadoop Streamingの紹介程度のゆるい資料です。

Published in: Software
  • Be the first to comment

Hadoop Streamingを使って お好きな言語でMap☆Reduce!

  1. 1. Hadoop Streamingを使って お好きな言語で Map☆Reduce! 田地 将也 2016/05/19 LT資料
  2. 2. • 氏名:田地 将也(@otajisan) • 所属:某中小SIer -> 某Web企業 • 役職:エンジニア兼スクラムマスター • 趣味:酒、バンド、スノボー、モンハン • よく使う言語:PHP, Perl, JavaScript • 「アジャイルひよこくらぶ」というコミュニティの幹事メンバーやってます • 最近ハマっていること!:スクラムによる現場改善、 Python x Hadoop Streaming x Deep Learning 自己紹介
  3. 3. 皆さん、 Hadoop使ってますか?
  4. 4. Hadoopとは? • Hadoopはデータを複数のサーバに分散し、 並列して処理するミドルウェア • 要は、1台で捌き切れないような大量のデータを、 並列バッチ処理で効率よく捌けるソリューション
  5. 5. Hadoopって • なんか難しそう • なんとなく敬遠 • Javaかよ! みたいな
  6. 6. そんなあなたに
  7. 7. Hadoop Streaming!
  8. 8. Hadoop Streamingとは? • HadoopのMap/Reduce処理は 基本的にJavaで書く • Hadoopに標準で組み込まれている 「Hadoop Streaming」という機能を使うと、 Unixの標準入出力を受け付けることができる
  9. 9. つまり、 好きな言語で Map/Reduceを書ける!
  10. 10. 本LTでは、 Hadoop Streamingは 色んな言語でMap/Reduce書けるよ、 という様子をご紹介し、 Hadoop コワクナイヨ- という感覚を持って いただけることを目的とします。
  11. 11. 今回取り扱う サンプル(Hello World) について
  12. 12. HadoopのHello World • 「ワードカウント」が Hadoopでのハロワにあたります
  13. 13. WordCout aaa bbb ccc aaa bbb ddd bbb ccc ddd 入力ファイルたち
  14. 14. WordCout aaa bbb ccc aaa bbb ddd bbb ccc ddd Map Reduce Map Map Reduce Reduce shuffle ごにょごにょ
  15. 15. WordCout aaa bbb ccc aaa bbb ddd bbb ccc ddd Map Reduce Map Map Reduce Reduce shuffle aaa 2 bbb 3 ccc 2 ddd 2
  16. 16. WordCout aaa bbb ccc aaa bbb ddd bbb ccc ddd Map Reduce Map Map Reduce Reduce shuffle aaa 2 bbb 3 ccc 2 ddd 2 ワードの出現回数を カウントする
  17. 17. WordCout aaa bbb ccc aaa bbb ddd bbb ccc ddd Map Reduce Map Map Reduce Reduce shuffle aaa 2 bbb 3 ccc 2 ddd 2 この、Map / Reduce処理を担う、「 Mapper」と「Reducer」を 色々な言語で書くことができます!
  18. 18. 書いてみた
  19. 19. python
  20. 20. WordCountMapper.py
  21. 21. WordCountMapper.py ここで標準入力を 受け付けて
  22. 22. WordCountMapper.py ここで標準入力を 受け付けて 該当行の文字列 (例えばaaa) と、 1という数値を出力する
  23. 23. WordCountReducer.py
  24. 24. WordCountReducer.py ここでMapperからの入力を 受け付けて
  25. 25. WordCountReducer.py ここでMapperからの入力を 受け付けて 渡ってきた key: aaa value: 1 といった文字列を、 key毎にvalueを加算する
  26. 26. 実行
  27. 27. コマンドが長〜いので シェルとか作るといいです
  28. 28. 作成したMapper/Reducerは このへんに指定
  29. 29. 結果 ファイルが出力されて
  30. 30. 結果 中身を見ると
  31. 31. 結果 正常にワードカウント されました!
  32. 32. php
  33. 33. WordCountMapper.php
  34. 34. WordCountMapper.php ここで標準入力を 受け付けて
  35. 35. WordCountMapper.php ここで標準入力を 受け付けて 該当行を出力
  36. 36. WordCountReducer.php
  37. 37. WordCountReducer.php ここでMapperからの入力を 受け付けて
  38. 38. WordCountReducer.php ここでMapperからの入力を 受け付けて 渡ってきた文字列毎に 単語数を加算
  39. 39. 結果は一緒なので割愛
  40. 40. perl
  41. 41. WordCountMapper.pl もはやMapperなんか要らん!
  42. 42. -mapperに/bin/catを 指定すればおk
  43. 43. WordCountReducer.pl
  44. 44. WordCountReducer.pl ここでMapperからの入力を 受け付けて
  45. 45. WordCountReducer.pl ここでMapperからの入力を 受け付けて 渡ってきた文字列毎に 単語数を加算
  46. 46. まとめ • Hadoop Streamingを使えば、 色んな言語でMap/Reduceを書ける (jsとかもできるらしい) • お好きな言語で快適なHadoopライフを!

×