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

  • 5,035 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
5,035
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
67
Comments
0
Likes
13

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. MapReduceによる大規模データ処理 at Yahoo! JAPAN 2011/09/26 ヤフー株式会社 R&D統括本部 角田直行、吉田一星
  • 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. 無断引用・転載禁止
  • 11. MapReduceのアルゴリズムデザイン10 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 12. 11 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 13. MapReduceのアルゴリズムデザイン –Yahoo! JAPANでの実例を交えながら、MapReduceでどうアルゴ リズムをデザインするか、解説します。 –空間解析 –検索インデックス作成 –機械学習12 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. 無断引用・転載禁止
  • 26. Reduce –同じGeoHashの住所ポリゴンと地点がまとまって入力 –ある地点が住所ポリゴンに含まれているかどうか、改めて演算 –MapReduceの出力 Key ある地点のユニークID Value 住所文字列25 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 13c326 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. 無断引用・転載禁止
  • 41. 重みの学習 –重みをどう学習するかがポイント –あらかじめ、素性とスコアのペア(=正解データ)を用意しておく 正解スコア PageRank クリック数 リンク数 被リンク数 30 50 2300 50 120 22 45 1200 100 20 –正解データを元に、重みを学習していく40 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 4545 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 47. GBDT –複数の決定木のスコアを足し合わせて、結果のスコアを決定正解データ =合計スコア +の平均スコア 決定木1のスコア 決定木2のスコア 決定木nのスコア46 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 48. GBDTの学習プロセス 正解データの平均スコア を元に決定木1を構築 正解データ + の平均スコア 決定木1 決定木2 決定木n47 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 49. GBDTの学習プロセス 決定木1までの学習結果 を元に決定木2を学習 正解データ + の平均スコア 決定木1 決定木2 決定木n48 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 50. GBDTの学習プロセス 決定木n-1までの学習結果 を元に決定木nを学習 正解データ + の平均スコア 決定木1 決定木2 決定木n49 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 51. 決定木の構築 –どの素性をどの値で、決定木の枝を分岐するかを決定 ?50 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 52. 決定木の構築 –実際に学習データを分岐させてスコアをアップデート クリック数 > 3000 60 7051 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 53. 決定木の構築 –次の枝をどう分岐させたらいいかを決定 クリック数 > 3000 70 ?52 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 54. 決定木の構築 –これを繰り返し、一定の深さになったところで、中断 クリック数 > 3000 PageRank > 30 被リンク数 > 100 クリック数 > 1200 60 70 100 20 4553 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 24555 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 Mapper356 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. 無断引用・転載禁止
  • 59. MapReduce~水平分割~ –後処理で、MapReduceの結果のデータを逐次見ていって、どの 素性でどの値で分割するかを決定する クリック数 正解スコアと予測スコアの差 1923 -3 1×1 2399 5 + 3400 3 3×3 || 最小にな 10 るように58 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 Mapper459 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. 無断引用・転載禁止
  • 64. まとめ –MapReduceはシンプルながらも、柔軟なフレームワーク –現実の問題に対して、MapReduceをどう設計していくか –必ずしもMapReduceが最適ではない場合もある –Yahoo! JAPANはこれからもHadoopを活用していきます63 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 65. Hadoopの連載記事 –いまさら聞けないHadoopとテキストマイニング入門 –機械学習、Iterative Parameter Mixingでの分散方法を解説 http://www.atmarkit.co.jp/fjava/rensai4/hadoop_tm01/01.html64 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 66. 東京Node学園 –アジア最大のNode.jsイベント、10/29 at Yahoo! JAPAN –Node.jsの作者などが講演します。 http://nodefest.jp/2011/65 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 67. ご静聴ありがとうございました!66 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止