SlideShare a Scribd company logo
Hadoop/MapReduce とは
Hadoop
● Java で書かれた分散処理フレームワーク
● HDFS 複数サーバにファイルを分散して、一つのファイ
ルのように扱える。
● HDFS 上のファイルより、MapReduce アルゴリズムで
の処理が可能
MapReduce
● Mapper で与えられたデータを "キー,値" に変換する
● Reducer に "キー,値のリスト(値, 値, ...)" が渡される。
Reducer は "キー,値" に集約する
● このロジックで分散できるっていう話
● Hadoop Streaming というツールで、好みの言語で
MapReduce できる。
WordCount サンプルがやってることは
● Mapper で与えられたアクセスログ行から "単語, 1" の行を書き出す。
● Reducer で "単語,(1,1,1,...)" から "単語,単語数" に集計して書き出す
「この商品を買った人はこんな商品も買っています」
w/ MapReduce
MapReduce アルゴリズムのイメージを掴むためのものです。
機械学習の協調フィルタリング Collaborative Filtering 等とは異なります。
UserID, ItemID
--------------------------
1, 10001
1, 10002
3, 10001
1, 10003
2, 10002
1, 10005
2, 10004
3, 10005
3, 10002
--------------------------
以下のような購入履歴テキストデータから --- 区切りの単位で Mapper に
分散されるとする。
--------------------------
サーバA
1, 10001
1, 10002
3, 10001
--------------------------
サーバB
1, 10003
2, 10002
1, 10005
--------------------------
サーバC
2, 10004
3, 10005
3, 10002
--------------------------
--------------------------
サーバA
1, 10001:10002
3, 10001
--------------------------
サーバB
1, 10003:10005
2, 10002
--------------------------
サーバC
2, 10004
3, 10002:10005
--------------------------
Mapper
Reducer
1, 10001:10002:10003:10005
2, 10002:10004
3, 10001:10002:10005
key = ユーザID
value = (アイテムID):(アイテムID):...
ユーザIDをキーにしてアイテムID文字列を結合する。
要するに
GROUP BY ユーザID
#!/usr/bin/env ruby
results = {}
while line = STDIN.gets
vals = line.strip.split(",")
results[vals[0]] = [] unless results.key?(vals[0])
results[vals[0]] << vals[1]
end
results.each do |key, value|
str = value.join(":")
print "#{key}t#{str}n"
end
Mapper
#!/usr/bin/env ruby
lastkey = ""
items = []
while line = STDIN.gets
vals = line.strip.split("t")
if lastkey != "" && vals[0] != lastkey
value = items.join(":")
print "#{lastkey}t#{value}n"
items = []
end
vals[1].split(":").each do |item|
items << item unless items.include?(item)
end
lastkey = vals[0]
end
if lastkey != ""
value = items.join(":")
print "#{lastkey}t#{value}n"
end
Reducer
--------------------------
サーバA
10001:10002, 1
10001:10003, 1
10001:10005, 1
10002:10001, 1
10002:10003, 1
10002:10005, 1
10003:10001, 1
10003:10002, 1
10003:10005, 1
10005:10001, 1
10005:10002, 1
10005:10003, 1
--------------------------
サーバB
10002:10004,1
10004:10002,1
--------------------------
サーバC
10001:10002, 1
10001:10005, 1
10002:10001, 1
10002:10005, 1
10005:10001, 1
10005:10002, 1
--------------------------
Mapper Reducer
関連する2アイテムIDをキーとして同時購入をカウント
10001:10002, 2
10001:10003, 1
10001:10005, 2
10002:10001, 2
10002:10003, 1
10002:10004, 1
10002:10005, 2
10003:10001, 1
10003:10002, 1
10003:10004, 1
10003:10005, 1
10004:10002, 1
10005:10001, 2
10005:10002, 2
10005:10003, 1
key = (アイテムID):(関連アイテムID)
value = 関連アイテム購入数
要するに
GROUP BY
(アイテムID):(関連アイテムID)
あとは抽出データをSQLデータベースなどに入れて活用する。関連アイテムの同
時購入数の多いものを類似アイテムとする。
-- "10001:10002, 2"
INSERT INTO recommend_items
(target_item, similar_item, similarity)
VALUES
("10001", "10002", 2);
--"10001:10003, 1"
INSERT INTO recommend_items
(target_item, similar_item, similarity)
VALUES
("10001", "10003", 1);
....
SELECT similar_item FROM recommed_items
WHERE target_item = "10001"
ORDER BY similarity DESC
LIMIT 10;
--------------------------
サーバA
10001,10002-2
10001,10003-1
10001,10005-2
10002,10001-2
10002,10003-1
--------------------------
サーバB
10002,10004-1
10002,10005-2
10003,10001-1
10003,10002-1
10003,10004-1
--------------------------
サーバC
10003,10005-1
10004,10002-1
10005,10001-2
10005,10002-2
10005,10003-1
--------------------------
Mapper
Reducer
アイテムIDをキーでグループ化し、Reducer で条件に合わな
い関連アイテムIDを除外することもできる。2未満は含めない
場合の例
10001,10002-2:10005-2:10001-2
10002,10001-2:10005-2
10005:10001-2
key = アイテムID
value = (関連アイテムID)-(同時購入数):....
要するに
GROUP BY (アイテムID)
HAVING (同時購入数) > 1
Hadoop の稼働コストのほうがかかるので、集計が終わったら Hadoop 外でやるほうがよい。次の Job
に引き継ぐためのデータであったり、不要なゴミデータばかりでデータ量が大きすぎる場合には有効。
要するに
GROUP BY
の繰り返し
● Mapper で GROUP のキーを作る
● Reducer で集計結果を得る

More Related Content

PDF
MapReduce解説
PDF
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
PDF
Hadoopによる大規模分散データ処理
PDF
Hadoopことはじめ
PDF
ただいまHadoop勉強中
PDF
Hadoopデータプラットフォーム #cwt2013
PPT
Hadoop loves H2
MapReduce解説
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
Hadoopによる大規模分散データ処理
Hadoopことはじめ
ただいまHadoop勉強中
Hadoopデータプラットフォーム #cwt2013
Hadoop loves H2

What's hot (20)

PPT
Amazon Redshift ベンチマーク Hadoop + Hiveと比較
PPTX
今さら聞けないHadoop セントラルソフト株式会社(20120119)
ODP
Hadoop for programmer
PDF
Hadoop入門
PDF
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
PDF
Hadoopのシステム設計・運用のポイント
PDF
MapReduceプログラミング入門
PPTX
SASとHadoopとの連携
PPTX
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
PDF
MapReduce入門
PDF
オライリーセミナー Hive入門 #oreilly0724
PDF
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
PDF
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
PDF
Hadoop概要説明
PDF
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
PDF
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
PPT
はやわかりHadoop
PDF
MapR M7 技術概要
PDF
世界一簡単なHadoopの話
PDF
Hadoop 基礎
Amazon Redshift ベンチマーク Hadoop + Hiveと比較
今さら聞けないHadoop セントラルソフト株式会社(20120119)
Hadoop for programmer
Hadoop入門
HadoopとRDBMSをシームレスに連携させるSmart SQL Processing (Hadoop Conference Japan 2014)
Hadoopのシステム設計・運用のポイント
MapReduceプログラミング入門
SASとHadoopとの連携
大規模分散システムの現在 -- GFS, MapReduce, BigTableはどう変化したか?
MapReduce入門
オライリーセミナー Hive入門 #oreilly0724
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Hadoop概要説明
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
はやわかりHadoop
MapR M7 技術概要
世界一簡単なHadoopの話
Hadoop 基礎
Ad

Viewers also liked (17)

PDF
CDHの歴史とCDH5新機能概要 #at_tokuben
KEY
Hadoop導入事例 in クックパッド
PPTX
JVM and OS Tuning for accelerating Spark application
PDF
Hadoop Conference Japan 2016 LT資料 グラフデータベース事始め
PPTX
Stormとその周辺 2013.03.15
PDF
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
PPTX
sparksql-hive-bench-by-nec-hwx-at-hcj16
PDF
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
PDF
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
PDF
ライブストリーミングの基礎知識その2
PDF
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
PDF
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
PDF
日々進化するHadoopの 「いま」
PDF
Developer Summit 2017
PPTX
Wireshark入門(4)
PPTX
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
PDF
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
CDHの歴史とCDH5新機能概要 #at_tokuben
Hadoop導入事例 in クックパッド
JVM and OS Tuning for accelerating Spark application
Hadoop Conference Japan 2016 LT資料 グラフデータベース事始め
Stormとその周辺 2013.03.15
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
sparksql-hive-bench-by-nec-hwx-at-hcj16
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
ライブストリーミングの基礎知識その2
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
日々進化するHadoopの 「いま」
Developer Summit 2017
Wireshark入門(4)
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
Ad

Similar to Hadoop / MapReduce とは (20)

PPT
Hadoopの紹介
PDF
2014-07-26 Exploration into HDInsight Tuning Maniax 2014 Hadoopコース参戦記
PPTX
PDF
WDD2012_SC-004
PDF
OSC2012 OSC.DB Hadoop
PDF
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
PPTX
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
PDF
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
PPT
Googleの基盤クローン Hadoopについて
PDF
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
PDF
CDH4.1オーバービュー
PDF
Osc2012 spring HBase Report
PDF
AI・HPC・ビッグデータで利用される分散ファイルシステムを知る
PDF
[db tech showcase Tokyo 2015] B34:データの仮想化を具体化するIBMのロジカルデータウェアハウス by 日本アイ・ビー・エ...
PPTX
Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w
KEY
MapReduceからの
PDF
Hadoopとその周辺の紹介
PDF
OSC2012 Tokyo/Spring - Hadoop入門
PDF
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
PPTX
Hadoop / Elastic MapReduceつまみ食い
Hadoopの紹介
2014-07-26 Exploration into HDInsight Tuning Maniax 2014 Hadoopコース参戦記
WDD2012_SC-004
OSC2012 OSC.DB Hadoop
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Googleの基盤クローン Hadoopについて
Apache Kuduは何がそんなに「速い」DBなのか? #dbts2017
CDH4.1オーバービュー
Osc2012 spring HBase Report
AI・HPC・ビッグデータで利用される分散ファイルシステムを知る
[db tech showcase Tokyo 2015] B34:データの仮想化を具体化するIBMのロジカルデータウェアハウス by 日本アイ・ビー・エ...
Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w
MapReduceからの
Hadoopとその周辺の紹介
OSC2012 Tokyo/Spring - Hadoop入門
DBP-011_Apache Spark for Azure HDInsight ~新世代の Big Data 処理基盤~
Hadoop / Elastic MapReduceつまみ食い

Hadoop / MapReduce とは