67
MapReduceによる大規模データ処理 at Yahoo! JAPAN 2011/09/26 ヤフー株式会社 R&D統括本部 角田直行、吉田一星

MapReduceによる大規模データ処理 at Yahoo! JAPAN

  • Upload
    yahoo

  • View
    5.328

  • Download
    1

Embed Size (px)

Citation preview

Page 1: MapReduceによる大規模データ処理 at Yahoo! JAPAN

MapReduceによる大規模データ処理 at Yahoo! JAPAN

2011/09/26

ヤフー株式会社 R&D統括本部

角田直行、吉田一星

Page 2: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

1

自己紹介

角田 直行(かくだ なおゆき)

R&D統括本部 プラットフォーム開発本部検索開発部 開発4

–2005年 ヤフー株式会社入社

–Yahoo!地図

–Yahoo!路線

–Yahoo!検索

–2011年現在、検索プラットフォームを開発中

Page 3: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

2

自己紹介

吉田 一星(よしだ いっせい)

R&D統括本部 プラットフォーム開発本部検索開発部 開発4

–2008年 ヤフー株式会社入社

–検索プラットフォームでHadoopに関する開発

–画像処理、iPhone向け技術開発にも関わる

Page 4: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

3

Agenda

–Yahoo! JAPANでの事例

–MapReduceによるアルゴリズムデザイン

–まとめ

Page 5: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Yahoo! JAPANでの事例

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

4

Page 6: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

5

Hadoop at Yahoo! JAPAN

様々なYahoo! JAPANのサービスを支えるプラットフォームで、

Hadoopが使われています

アクセスログデータプラットフォーム

検索プラットフォーム

レコメンデーションプラットフォーム

広告プラットフォーム

地域APIプラットフォーム

Page 7: MapReduceによる大規模データ処理 at Yahoo! JAPAN

–例えば、Yahoo! JAPANの検索サービスでは・・・

6

Yahoo! JAPANの検索サービス

検索ログプラットフォーム

検索プラットフォーム(ABYSS)

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

検索のログをHadoopで分析してデータ提供

サービスに検索機能を提供

Page 8: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

7

Yahoo!検索

–検索ログプラットフォームのデータを元に様々な機能を提供

関連検索ワード→

キーワード入力補助→

ショートカットの

表示制御→

Page 9: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

8

Yahoo!検索 リアルタイム検索

–検索プラットフォーム(ABYSS)が検索機能を提供

–Twitter社が提供した、リアルタイムのツイートデータを、ABYSS

側に送ってインデクシング

Page 10: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

9

Yahoo!オークション

–おすすめのオーション

レコメンデーションプラットフォーム

Hadoopで解析したデータを提供

Page 11: MapReduceによる大規模データ処理 at Yahoo! JAPAN

MapReduceのアルゴリズムデザイン

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

10

Page 12: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

11

Page 13: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

12

MapReduceのアルゴリズムデザイン

–Yahoo! JAPANでの実例を交えながら、MapReduceでどうアルゴ

リズムをデザインするか、解説します。

–空間解析

–検索インデックス作成

–機械学習

Page 14: MapReduceによる大規模データ処理 at Yahoo! JAPAN

空間解析

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

13

Page 15: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

14

空間解析

–位置関係を利用した検索を行いたい

–今いる場所から一番近いコンビニ

–港区にある図書館

–駅から5分のマンション

–環状7号線沿いのラーメン屋

Page 16: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

15

リバースジオコーダー

–緯度経度から住所を求める

ある地点

住所ポリゴン

含まれるかどうか

Page 17: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

16

MapReduceのおおまかな設計

–Mapper

–住所ポリゴンデータと、ある地点の緯度経度のデータを同じキ

ーで出力

–Reducer

–同じキーにまとまっている場合、地点データが住所ポリゴンデ

ータに含まれている。つまりその地点の住所がわかる。

→Mapのキーは何にするか?

Page 18: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

17

GeoHash

–緯度経度を英数字の文字列で表すアルゴリズム

–35.65861, 139.745447 → xn76ggrw26

–文字列の長さが精度に比例する

–文字列が短いとおおまかなエリア、長いとピンポイントのエリア

–点としてだけでなく、ある範囲(グリッド)を表すことが可能

Page 19: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

18

XN76GGR

(123.60m x 152.27m) XN76GGRW

(30.90m x 19.03m)

XN76GGRW2

(3.86 m x 4.76m)

XN76GGRW26

(0.97m x 0.59m)

Page 20: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

19

Page 21: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

20

Page 22: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

21

Page 23: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

22

Page 24: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

23

Page 25: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

24

Map

–MultipleInputsで2種類のMapperを立ち上げる

–Mapper1

–Mapper2

Key ある地点の7桁GeoHash

Value ある地点のユニークID + 緯度経度

Key 住所ポリゴンデータと交わる7桁GeoHash

Value GeoHashのメッシュ単位で抜き出したポリゴンデータ

Page 26: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

25

Reduce

–同じGeoHashの住所ポリゴンと地点がまとまって入力

–ある地点が住所ポリゴンに含まれているかどうか、改めて演算

–MapReduceの出力

Key ある地点のユニークID

Value 住所文字列

Page 27: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

26

出力結果

UID 住所

755a458181f0d0ce670ca6363ac3fcf15c5ecec9

東京都西東京市谷戸町1丁目23

b9eb85ccad95dce44ba5ba56047c359a5ab25321

東京都西東京市ひばりが丘2丁目8

c2bd76e39a900202cd89a8a62127975779c3c5db

東京都西東京市ひばりが丘2丁目6

25e82144eff068c13d7d04004681723c53c56c72

東京都西東京市ひばりが丘2丁目7

a1f307a07f21cc5c43069f222a861fd3a0381427

東京都西東京市谷戸町3丁目20

0f88a6d126e9080de53d70b8771665a06d3b783c

東京都西東京市保谷町3丁目12

04a27655283486df6dde65cf31702310bd9113c3

東京都西東京市保谷町3丁目14

Page 28: MapReduceによる大規模データ処理 at Yahoo! JAPAN

検索インデックス生成

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

27

Page 29: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

28

検索インデックス生成

–MapReduceの最も基本的なタスクの一つ

–Hadoop MapReduceデザインパターンでも紹介されている

–インデックス=本の索引

apple.co.jp Apple, iPad, iPhone, Macbook…

yahoo.co.jp Yahoo, オークション, ニュース, 検索, 地図…

twitter.com tsuda, ふぁぼり, なう, 個人, 見解…

2ch.net 香具師, ガイシュツ, スマソ, 池沼, 希ガス…

Page 30: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

29

検索インデックス生成

–単語をキーにしたURLのリストの形式に転置する

–例えば、「地獄 ミサワ」で検索すると、その単語が含まれている

URLがすぐにわかる

iPhone apple.co.jp, softbank.co.jp, apple.com…

地獄 jigokuno.com, twitter.com, hatena.ne.jp…

ググレカス 2ch.net, nicovideo.jp, google.co.jp…

ミサワ jigokuno.com, misawa.co.jp…

Page 31: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

30

MapReduceのおおまかな設計

–Mapper

–URLとページの内容を入力として、単語を抽出

–Reducer

Key 単語

Value URL

Key 単語

Value URLのリスト

Page 32: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

31

実際の課題

–インデックスには複数のフィールドがある

–フィールドごとに単語を分割する方法が違う

–フィールドと単語分割の種類

–フィールドと単語分割の例

URL タイトル ページの内容

完全一致 2Gram 形態素解析

labs.yahoo.co.jp Yahoo!ラボ 実験的なサービス・機能・仕組みを…

labs.yahoo.co.jp Ya, ah, ho, oo, o!, !ラ, ラボ

実験的, な, サービス, ・, 機能, ・, 仕組み, を…

Page 33: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

32

実際の課題

–ユニークな文書番号を付与し、文書番号でソートする

–文書内での単語のポジションや頻度を考慮する

–検索インデックスの例

–TFIDFの計算のために、単語ごとの文書数と、文書ごとの単語数を計

算する

–TFIDFは文書内で単語の重要度を測る指標の一つでランキングに

用いられる

–インデックスを圧縮する必要がある

単語 <文書番号: 文書内のポジションのリスト>…

iPhone <3: 104,202,1241>, <7: 3,190,1267>…

Page 34: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

33

ABYSSの場合

–社内の検索サービスをホスティングするプラットフォーム

–30以上の社内サービスで使われている

–検索インデックス作成処理の流れ

前処理

文書番号をふる

数値インデックス作成

etc…

後処理

MapReduceの

結果のファイルを一つのインデックスにまとめる

Page 35: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

34

Map

–インデックスの元データが入力

–インデックスのスキーマファイルを読んで、単語の分割の種類ごとに処

理を分岐

–単語の正規化と、単語の分割を行う

labs.yahoo.co.jp Yahoo!ラボ 実験的なサービス・機能・仕組みを…

完全一致 2Gram 形態素解析

Key フィールド名+単語+文書番号+ポジション+フィールド番号

Value 文書番号+ポジション

Page 36: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

35

Shuffle

–Partitioner

–同じフィールドのデータは同じReducerに行くように分散

–Comparator

–単語のキー順にソート

–単語が同じ場合は文書番号でソート

–文書番号も同じ場合はポジションでソート

–GroupingComparator

–フィールド名+単語で、グルーピングしてReducerに渡す

Page 37: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

36

Reduce

–フィールド名+単語でグルーピング、単語、文書番号、ポジション

でソートされて入力

–MultipleOutputsでフィールドごとにファイルを出力

–インデックスは圧縮して出力

Key 単語

Value 文書番号+ポジションのリスト

ミサワ <124: 12,135,1223>, <278,1278,2380>…

iPhone <3: 104,202,1241>, <7: 3,190,1267>…

Page 38: MapReduceによる大規模データ処理 at Yahoo! JAPAN

機械学習

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

37

Page 39: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

38

機械学習とは?

「データの中で見えているものを手がかりに、見えないものを予測

する」

–ページの内容がアダルトかどうか判定する

–自分のプロフィールと条件に合ったお見合い相手を探す(

Yahoo!お見合い)

–検索結果を様々な指標に応じて最適にランキング

–クエリや、コンテンツ、その人の興味に合った広告を表示

–あるニュースに関連するニュースを表示

Page 40: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

39

機械学習によるランキング

–検索結果を機械学習でランキングする

–WEBページの様々な指標(=素性)を考える

–それぞれの素性に対して予め学習済みの重みが与えられているとする

–掛け合わせたものをスコアとして検索結果をランキングする

スコア = 50×0.2+2300×0.01+50×-0.02+120×0.05=53

–重みさえわかれば、ランキングができる

PageRank クリック数 リンク数 被リンク数

50 2300 50 120

0.2 0.01 -0.02 0.05

Page 41: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

40

重みの学習

–重みをどう学習するかがポイント

–あらかじめ、素性とスコアのペア(=正解データ)を用意しておく

–正解データを元に、重みを学習していく

正解スコア PageRank クリック数 リンク数 被リンク数

30 50 2300 50 120

22 45 1200 100 20

Page 42: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

41

重みの学習

–オンライン学習

–正解データを一件ずつ見ていって、重みを更新する

–実装が容易

–ノイズが含まれていたり、素性が多い場合に有効

–バッチ学習

–すべての正解データを見て重みを更新する

–実装が難解

–情報量が多いので、精度が高くなる場合が多い

Page 43: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

42

オンライン学習

–正解データを一つ見て、古い重みを新しい重みに更新する

新しい重み = 古い重み – 適当な係数 × (予測スコア - 正解スコア)

× 正解データ

–オンライン学習をMapReduceで行いたい

0.2 0.01 -0.02 0.05

50 2300 50 120

0.001 ×(53 - 58)

×

||

0.205 11.51 -0.015 0.005

古い重み

正解データ

新しい重み

|

Page 44: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

43

Iterative Parameter Mixing

Mapper Mapper Mapper

Reducer

重みベクトル を更新

重みベクトル を更新

重みベクトル を更新

重みベクトル を平均

[Mann et al. 09]

[Mcdonald et al. 10]

Page 45: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

44

MapReduce

–Mapper

–正解データを入力

–前回の繰り返しの重みをMapの初期化処理で読み込んでおく

–オンライン学習で、重みを更新

–Reducer

–Reducerは一つだけ立ち上げる

–重みを平均して出力する

–このMapReduceを繰り返す

Key なし

Value 重み

Page 46: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

45

GBDT

–実際には精度が高い決定木ベースのGBDTという手法が使われ

ている

–決定木とは?

クリック数 > 3000

PageRank > 30 被リンク数 > 100

クリック数 > 1200

20 45

60 70 100

Page 47: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

46

GBDT

–複数の決定木のスコアを足し合わせて、結果のスコアを決定

=合計スコア

決定木1のスコア 決定木2のスコア 決定木nのスコア

正解データの平均スコア

+

Page 48: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

47

GBDTの学習プロセス

正解データの平均スコア

+

正解データの平均スコア

を元に決定木1を構築

決定木1 決定木2 決定木n

Page 49: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

48

GBDTの学習プロセス

正解データの平均スコア

+

決定木1までの学習結果

を元に決定木2を学習

決定木1 決定木2 決定木n

Page 50: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

49

GBDTの学習プロセス

正解データの平均スコア

+

決定木n-1までの学習結果

を元に決定木nを学習

決定木1 決定木2 決定木n

Page 51: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

50

決定木の構築

–どの素性をどの値で、決定木の枝を分岐するかを決定

Page 52: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

51

決定木の構築

–実際に学習データを分岐させてスコアをアップデート

クリック数 > 3000

60 70

Page 53: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

52

決定木の構築

–次の枝をどう分岐させたらいいかを決定

70

クリック数 > 3000

Page 54: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

53

決定木の構築

–これを繰り返し、一定の深さになったところで、中断

クリック数 > 3000

PageRank > 30

クリック数 > 1200

20 45

60 70 100

被リンク数 > 100

Page 55: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

54

MapReduceで分散

–MapReduceで分散可能なのは決定木の構築

–どう決定木の枝を分岐させるか

–学習データを分岐させてスコアをアップデート

–GDBTの学習プロセス自体はシーケンシャルなので、決定木の構築を

決定木の数だけ繰り返す

–ちなみに決定木の数も予め与える

[Jerry et al. 10]

→ → →

Page 56: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

55

枝の分岐

–正解スコアと予測スコアの差の平均の二乗が最小になるように分岐

–すべての素性に対して、どこで分割するかをすべての場合について計

算すればよい

クリック数 > 3000

-30 × -30 7 × 7 + 139 =

最小になるように

クリック数 PageRank リンク数 被リンク数

1923 34 87 14

2399 15 25 158

3400 92 102 245

左に分岐

右に分岐

クリック数 > 3000

クリック数 はソート済

Page 57: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

56

MapReduce~水平分割~

–水平に分割する場合

クリック数 PageRank リンク数 被リンク数

1923 34 87 14

2399 15 25 158

3400 92 102 245

Mapper1

Mapper2

Mapper3

Page 58: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

57

MapReduce~水平分割~

–Mapper

–ある学習データのすべての素性に対して以下を出力

–Reducer

–ある素性について、素性の値がソートされて入力される

Key 素性の名前 + 素性の値

Value 正解スコアと予測スコアの差+重み

Key 素性の名前 + 素性の値

Value 正解スコアと予測スコアの差の和+重みの和

Page 59: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

58

MapReduce~水平分割~

–後処理で、MapReduceの結果のデータを逐次見ていって、どの

素性でどの値で分割するかを決定する

クリック数 正解スコアと予測スコアの差

1923 -3

2399 5

3400 3

1×1

3×3

10

||

最小になるように

Page 60: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

59

MapReduce~垂直分割~

–垂直に分割する場合

クリック数 PageRank リンク数 被リンク数

1923 34 87 14

2399 15 25 158

3400 92 102 245

Mapper1 Mapper2 Mapper3 Mapper4

Page 61: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

60

MapReduce~垂直分割~

–Mapper

–ある素性のすべての値をソートし、ベストな分岐ポイントを見つ

ける

–一つのMapperで一つのKey/Valueを出力

–Reducer

–そのまま出力すれば、最小の分岐ポイントが一番上に来る

Key 正解スコアと予測スコアの差の平均の二乗の最小値

Value 素性の情報

Page 62: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

61

分散方法の比較

–水平分割は、データの数だけスケールする一方で、後処理に時

間がかかる

–垂直分割は、後処理が必要ない一方で、素性の数しかスケール

しない

–実は、MapReduceを使わずにMPIで分散させる方法が一番速い

–HadoopのHDFSだけを使い、Hadoopのノード上でOpenMPIを使っ

て分散を行なっている

Page 63: MapReduceによる大規模データ処理 at Yahoo! JAPAN

まとめ

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

62

Page 64: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

63

まとめ

–MapReduceはシンプルながらも、柔軟なフレームワーク

–現実の問題に対して、MapReduceをどう設計していくか

–必ずしもMapReduceが最適ではない場合もある

–Yahoo! JAPANはこれからもHadoopを活用していきます

Page 65: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

64

Hadoopの連載記事

–いまさら聞けないHadoopとテキストマイニング入門

–機械学習、Iterative Parameter Mixingでの分散方法を解説

http://www.atmarkit.co.jp/fjava/rensai4/hadoop_tm01/01.html

Page 66: MapReduceによる大規模データ処理 at Yahoo! JAPAN

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

65

東京Node学園

–アジア最大のNode.jsイベント、10/29 at Yahoo! JAPAN

–Node.jsの作者などが講演します。

http://nodefest.jp/2011/

Page 67: MapReduceによる大規模データ処理 at Yahoo! JAPAN

ご静聴ありがとうございました!

Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

66