Contenu connexe
Similaire à MapReduceによる大規模データ処理 at Yahoo! JAPAN (20)
Plus de Yahoo!デベロッパーネットワーク (20)
MapReduceによる大規模データ処理 at Yahoo! JAPAN
- 2. 自己紹介
角田 直行(かくだ なおゆき)
R&D統括本部 プラットフォーム開発本部検索開発部 開発4
– 2005年 ヤフー株式会社入社
– Yahoo!地図
– Yahoo!路線
– Yahoo!検索
…
– 2011年現在、検索プラットフォームを開発中
1 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 3. 自己紹介
吉田 一星(よしだ いっせい)
R&D統括本部 プラットフォーム開発本部検索開発部 開発4
– 2008年 ヤフー株式会社入社
– 検索プラットフォームでHadoopに関する開発
– 画像処理、iPhone向け技術開発にも関わる
2 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 4. Agenda
–Yahoo! JAPANでの事例
–MapReduceによるアルゴリズムデザイン
–まとめ
3 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 5. Yahoo! JAPANでの事例
4 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 6. Hadoop at Yahoo! JAPAN
検索プラットフォーム
アクセスログデータ
広告プラットフォーム
プラットフォーム
レコメンデーションプ 地域APIプラットフォーム
ラットフォーム
様々なYahoo! JAPANのサービスを支えるプラットフォームで、
Hadoopが使われています
5 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 7. Yahoo! JAPANの検索サービス
–例えば、Yahoo! JAPANの検索サービスでは・・・
検索のログをHadoop サービスに検索機能を提供
で分析してデータ提供
検索ログプラット 検索プラットフォーム
フォーム (ABYSS)
6 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 8. Yahoo!検索
–検索ログプラットフォームのデータを元に様々な機能を提供
キーワード入力補助→
関連検索ワード→
ショートカットの
表示制御→
7 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 9. Yahoo!検索 リアルタイム検索
–検索プラットフォーム(ABYSS)が検索機能を提供
–Twitter社が提供した、リアルタイムのツイートデータを、ABYSS
側に送ってインデクシング
8 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 10. Yahoo!オークション
– おすすめのオーション
Hadoopで解析したデ
ータを提供
レコメンデーション
プラットフォーム
9 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 12. 11 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 14. 空間解析
13 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 15. 空間解析
–位置関係を利用した検索を行いたい
–今いる場所から一番近いコンビニ
–港区にある図書館
–駅から5分のマンション
–環状7号線沿いのラーメン屋
14 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 16. リバースジオコーダー
–緯度経度から住所を求める
含まれるかどうか
ある地点
住所ポリゴン
15 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 17. MapReduceのおおまかな設計
–Mapper
–住所ポリゴンデータと、ある地点の緯度経度のデータを同じキ
ーで出力
–Reducer
–同じキーにまとまっている場合、地点データが住所ポリゴンデ
ータに含まれている。つまりその地点の住所がわかる。
→Mapのキーは何にするか?
16 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 18. GeoHash
–緯度経度を英数字の文字列で表すアルゴリズム
–35.65861, 139.745447 → xn76ggrw26
–文字列の長さが精度に比例する
–文字列が短いとおおまかなエリア、長いとピンポイントのエリア
–点としてだけでなく、ある範囲(グリッド)を表すことが可能
17 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 19. XN76GGR
XN76GGRW
(123.60m x 152.27m)
(30.90m x 19.03m)
XN76GGRW2
(3.86 m x 4.76m)
XN76GGRW26
(0.97m x 0.59m)
18 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 20. 19 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 21. 20 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 22. 21 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 23. 22 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 24. 23 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 25. Map
–MultipleInputsで2種類のMapperを立ち上げる
–Mapper1
Key ある地点の7桁GeoHash
Value ある地点のユニークID + 緯度経度
–Mapper2
Key 住所ポリゴンデータと交わる7桁GeoHash
Value GeoHashのメッシュ単位で抜き出したポリゴンデータ
24 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 27. 出力結果
UID 住所
755a458181f0d0ce670ca6363ac3fcf15c5ec 東京都西東京市谷戸町1丁目23
ec9
b9eb85ccad95dce44ba5ba56047c359a5ab2 東京都西東京市ひばりが丘2丁目8
5321
c2bd76e39a900202cd89a8a62127975779c 東京都西東京市ひばりが丘2丁目6
3c5db
25e82144eff068c13d7d04004681723c53c5 東京都西東京市ひばりが丘2丁目7
6c72
a1f307a07f21cc5c43069f222a861fd3a0381 東京都西東京市谷戸町3丁目20
427
0f88a6d126e9080de53d70b8771665a06d3 東京都西東京市保谷町3丁目12
b783c
04a27655283486df6dde65cf31702310bd91 東京都西東京市保谷町3丁目14
13c3
26 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 28. 検索インデックス生成
27 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 29. 検索インデックス生成
–MapReduceの最も基本的なタスクの一つ
–Hadoop MapReduceデザインパターンでも紹介されている
–インデックス=本の索引
apple.co.jp Apple, iPad, iPhone, Macbook…
yahoo.co.jp Yahoo, オークション, ニュース, 検索, 地図…
twitter.com tsuda, ふぁぼり, なう, 個人, 見解…
2ch.net 香具師, ガイシュツ, スマソ, 池沼, 希ガス…
28 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 30. 検索インデックス生成
–単語をキーにした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…
29 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 31. MapReduceのおおまかな設計
–Mapper
–URLとページの内容を入力として、単語を抽出
Key 単語
Value URL
–Reducer
Key 単語
Value URLのリスト
30 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 32. 実際の課題
–インデックスには複数のフィールドがある
–フィールドごとに単語を分割する方法が違う
–フィールドと単語分割の種類
URL タイトル ページの内容
完全一致 2Gram 形態素解析
–フィールドと単語分割の例
labs.yahoo.co.jp Yahoo!ラボ 実験的なサービス・機
能・仕組みを…
labs.yahoo.co.jp Ya, ah, ho, oo, 実験的, な, サービ
o!, !ラ, ラボ ス, ・, 機能, ・, 仕組
み, を…
31 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 33. 実際の課題
–ユニークな文書番号を付与し、文書番号でソートする
–文書内での単語のポジションや頻度を考慮する
–検索インデックスの例
単語 <文書番号: 文書内のポジションのリスト>…
iPhone <3: 104,202,1241>, <7: 3,190,1267>…
–TFIDFの計算のために、単語ごとの文書数と、文書ごとの単語数を計
算する
–TFIDFは文書内で単語の重要度を測る指標の一つでランキングに
用いられる
–インデックスを圧縮する必要がある
32 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 34. ABYSSの場合
–社内の検索サービスをホスティングするプラットフォーム
–30以上の社内サービスで使われている
–検索インデックス作成処理の流れ
前処理 後処理
文書番号をふる MapReduceの
数値インデックス 結果のファイルを
作成 一つのインデック
etc… スにまとめる
33 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 35. Map
–インデックスの元データが入力
labs.yahoo.co.jp Yahoo!ラボ 実験的なサービス・機
能・仕組みを…
–インデックスのスキーマファイルを読んで、単語の分割の種類ごとに処
理を分岐
完全一致 2Gram 形態素解析
–単語の正規化と、単語の分割を行う
Key フィールド名+単語+文書番号+ポジション+フィールド番号
Value 文書番号+ポジション
34 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 36. Shuffle
–Partitioner
–同じフィールドのデータは同じReducerに行くように分散
–Comparator
–単語のキー順にソート
–単語が同じ場合は文書番号でソート
–文書番号も同じ場合はポジションでソート
–GroupingComparator
–フィールド名+単語で、グルーピングしてReducerに渡す
35 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 37. Reduce
–フィールド名+単語でグルーピング、単語、文書番号、ポジション
でソートされて入力
–MultipleOutputsでフィールドごとにファイルを出力
–インデックスは圧縮して出力
Key 単語
Value 文書番号+ポジションのリスト
ミサワ <124: 12,135,1223>, <278,1278,2380>…
iPhone <3: 104,202,1241>, <7: 3,190,1267>…
36 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 38. 機械学習
37 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 39. 機械学習とは?
「データの中で見えているものを手がかりに、見えないものを予測
する」
–ページの内容がアダルトかどうか判定する
–自分のプロフィールと条件に合ったお見合い相手を探す(
Yahoo!お見合い)
–検索結果を様々な指標に応じて最適にランキング
–クエリや、コンテンツ、その人の興味に合った広告を表示
–あるニュースに関連するニュースを表示
38 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 40. 機械学習によるランキング
–検索結果を機械学習でランキングする
–WEBページの様々な指標(=素性)を考える
PageRank クリック数 リンク数 被リンク数
50 2300 50 120
–それぞれの素性に対して予め学習済みの重みが与えられているとする
0.2 0.01 -0.02 0.05
–掛け合わせたものをスコアとして検索結果をランキングする
スコア = 50×0.2+2300×0.01+50×-0.02+120×0.05=53
–重みさえわかれば、ランキングができる
39 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 42. 重みの学習
–オンライン学習
–正解データを一件ずつ見ていって、重みを更新する
–実装が容易
–ノイズが含まれていたり、素性が多い場合に有効
–バッチ学習
–すべての正解データを見て重みを更新する
–実装が難解
–情報量が多いので、精度が高くなる場合が多い
41 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 43. オンライン学習
–正解データを一つ見て、古い重みを新しい重みに更新する
新しい重み = 古い重み – 適当な係数 × (予測スコア - 正解スコア)
× 正解データ
古い重み 0.2 0.01 -0.02 0.05
|
0.001 ×(53 - 58)
×
正解データ 50 2300 50 120
||
新しい重み 0.205 11.51 -0.015 0.005
–オンライン学習をMapReduceで行いたい
42 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 44. Iterative Parameter Mixing
Mapper Mapper Mapper
重みベクトル 重みベクトル 重みベクトル
を更新 を更新 を更新
Reducer
重みベクトル
を平均
[Mann et al. 09]
[Mcdonald et al. 10]
43 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 45. MapReduce
– Mapper
– 正解データを入力
– 前回の繰り返しの重みをMapの初期化処理で読み込んでおく
– オンライン学習で、重みを更新
Key なし
Value 重み
– Reducer
– Reducerは一つだけ立ち上げる
– 重みを平均して出力する
– このMapReduceを繰り返す
44 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 46. GBDT
–実際には精度が高い決定木ベースのGBDTという手法が使われ
ている
–決定木とは?
クリック数 > 3000
PageRank > 30 被リンク数 > 100
クリック数 > 1200 60 70 100
20 45
45 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 48. GBDTの学習プロセス
正解データの平均スコア
を元に決定木1を構築
正解データ
+
の平均スコア
決定木1 決定木2 決定木n
47 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 49. GBDTの学習プロセス
決定木1までの学習結果
を元に決定木2を学習
正解データ
+
の平均スコア
決定木1 決定木2 決定木n
48 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 50. GBDTの学習プロセス
決定木n-1までの学習結果
を元に決定木nを学習
正解データ
+
の平均スコア
決定木1 決定木2 決定木n
49 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 54. 決定木の構築
–これを繰り返し、一定の深さになったところで、中断
クリック数 > 3000
PageRank > 30 被リンク数 > 100
クリック数 > 1200 60 70 100
20 45
53 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 55. MapReduceで分散
–MapReduceで分散可能なのは決定木の構築 [Jerry et al. 10]
–どう決定木の枝を分岐させるか
–学習データを分岐させてスコアをアップデート
–GDBTの学習プロセス自体はシーケンシャルなので、決定木の構築を
決定木の数だけ繰り返す
–ちなみに決定木の数も予め与える
→ → →
54 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 56. 枝の分岐
–正解スコアと予測スコアの差の平均の二乗が最小になるように分岐
最小にな
クリック数 > 3000
るように
-30 × -30 + 7×7 = 139
–すべての素性に対して、どこで分割するかをすべての場合について計
算すればよい クリック数 クリック数
はソート済 > 3000
クリック数 PageRank リンク数 被リンク数
1923 34 87 14
左に分岐
2399 15 25 158
右に分岐 3400 92 102 245
55 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 57. MapReduce~水平分割~
–水平に分割する場合
Mapper1 クリック数 PageRank リンク数 被リンク数
1923 34 87 14
Mapper2 2399 15 25 158
3400 92 102 245
Mapper3
56 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 58. MapReduce~水平分割~
–Mapper
–ある学習データのすべての素性に対して以下を出力
Key 素性の名前 + 素性の値
Value 正解スコアと予測スコアの差+重み
–Reducer
–ある素性について、素性の値がソートされて入力される
Key 素性の名前 + 素性の値
Value 正解スコアと予測スコアの差の和+重みの和
57 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 60. MapReduce~垂直分割~
–垂直に分割する場合
クリック数 PageRank リンク数 被リンク数
1923 34 87 14
2399 15 25 158
3400 92 102 245
Mapper1 Mapper2 Mapper3 Mapper4
59 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 61. MapReduce~垂直分割~
–Mapper
–ある素性のすべての値をソートし、ベストな分岐ポイントを見つ
ける
–一つのMapperで一つのKey/Valueを出力
Key 正解スコアと予測スコアの差の平均の二乗の最小値
Value 素性の情報
–Reducer
–そのまま出力すれば、最小の分岐ポイントが一番上に来る
60 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 62. 分散方法の比較
–水平分割は、データの数だけスケールする一方で、後処理に時
間がかかる
–垂直分割は、後処理が必要ない一方で、素性の数しかスケール
しない
–実は、MapReduceを使わずにMPIで分散させる方法が一番速い
–HadoopのHDFSだけを使い、Hadoopのノード上でOpenMPIを使っ
て分散を行なっている
61 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 63. まとめ
62 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
- 67. ご静聴ありがとうございました!
66 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止