オープンソースカンファレンス 2010 Tokyo/Fall   Hadoop ~ Yahoo! JAPAN の活用について~ 2010/9/10 ヤフー株式会社  R&D 統括本部 角田直行、吉田一星
自己紹介 角田 直行 ( かくだ なおゆき ) R&D 統括本部 プラットフォーム開発本部検索開発部 開発 3 2005 年 ヤフー株式会社入社 ヤフー地図 ヤフー路線 ヤフー検索 … 2010 年現在、検索プラットフォームを開発中 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
自己紹介 吉田一星 (よしだ いっせい) R&D 統括本部プラットフォーム開発本部検索開発部開発3 R&D 統括本部フロントエンド開発本部アプリケーション開発部開発4(兼) R&D 統括本部プラットフォーム開発本部要素技術開発部開発3(兼) 2008 年に Yahoo! JAPAN に入社 検索プラットフォームや画像処理で Hadoop に関わる開発 地図検索、地域プラットフォームでも Hadoop に関わる開発を経験
Agenda Introduction Hadoop とは 事例紹介 Hadoop 開発の流れ 得られた知見 まとめ Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Introduction Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
有名なネットサービス Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  月間   485 億 3100 万 PV   1 日   5000 万   のつぶやき 商品数   6400 万 月間ユーザ数   5 億 人 各サービスとも日々成長を続けています
莫大なデータ量との闘い 成長を続けていくにはアクセスログ解析やデータマイニングなどが必須 億単位の行  or  テラバイト級のデータを短時間で処理したい Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  毎日処理しなければならない
Yahoo! JAPAN が扱うデータ Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  ログは 1 日分だけでもかなりのサイズになる 行数を数えるだけで数日かかる
解決策としての Hadoop 大規模な処理、大容量のデータを扱うには 1 台のサーバでは不可能 マルチコアによる並行処理アプローチは複雑すぎる 数十~数千台規模で簡単にスケールする環境が不可欠 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  この発表では、 Yahoo! JAPAN が Hadoop をどう活用しているか について事例を交えて解説します
Hadoop とは Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Hadoop とは 大規模分散処理システム Google   MapReduce/GFS を論文を元に実装 処理時間が数分~数時間かかるようなバッチ処理に向いている ->  Web のように、即座に結果が返るような   リアルタイム処理には不向き Java で書かれ、オープンソースとして公開 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Hadoop とは Doug Cutting 氏が生みの親 Lucene など有名 OSS を開発 Yahoo! Inc.  在籍時はフルタイムで開発 現在は Cloudera に在籍 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  ( 出典元 :Wikipedia)
Hadoop とは Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  大きく MapReduce と HDFS ( 分散ファイルシステム ) に分かれる
Hadoop MapReduce Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  長時間かかる巨大な処理を複数台のマシンに分散 ・・・ ・・・
Hadoop HDFS Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  ・巨大なファイルを複数台に分割 ・複数サーバの各 HDD を 1 つの HDD のように扱える
Hadoop 関連プロダクト Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  大規模データ処理用スクリプト言語 Pig Hive Facebook が開発 扱いが一般データベースに似ている A = load 'passwd' using PigStorage(':'); B = foreach A generate $0 as id;  dump B;  CREATE TABLE pokes (foo INT, bar STRING);  SELECT a.foo FROM pokes a;
Hadoop 関連プロダクト Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  Hadoop 上に構築された列指向データベース Google BigTable のクローン HBase 機械学習ライブラリ Hadoop でスケール可 Mahout 複数の MapReduce ジョブなどを 実行制御するワークフロー Oozie
Hadoop の事例紹介 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Hadoop を活用している会社 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  など・・・ 増え続けています!
The New York Times TimeMachine 過去のアーカイブを公開 4TB の TIFF を PDF に Amazon EC2 / S3 100 インスタンス 24 時間 1500 ドル以下 MRToolKit を公開 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
eHarmony アメリカの 4% のカップルが eHarmony を通じて結婚 毎日平均 236 人が結婚している カップルのマッチングの計算に Hadoop を利用 何十年もの研究と臨床実験に基づいたモデル 新しいモデルも日々テストされている モデルの評価は、部屋にゴリラを入れて実験 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
FlightCaster 飛行機の遅れを、航空会社の発表の数時間前に予報するサイト 以下の情報を元に推測 到着便情報 天気予報 FAA( 米国連邦航空局 ) の情報 過去 10 年間の航空便のデータ Hadoop を使って予測の計算処理 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
簡単に使える環境 Amazon Elastic MapReduce Hadoop の MapReduce を簡単に実行できる 従量課金( 100 台を 1 時間で、 1000 円程度) Hadoop の知識は必要だが、セットアップは最小限 Google BigQuery Google の MapReduce 環境を使える SQL ライクな命令( Hive に似ている) REST API で簡単に実行できる Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Yahoo! Inc. での事例紹介 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
サーチアシスト 入力した検索ワードに関連のありそうな単語を自動で補完 さらに検索結果画面に関連コンセプトを表示 データベースの構築に Hadoop を使用 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
スポンサードサーチ 広告の表示位置を計算し、配置 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Contents Optimization Knowledge Engine (COKE) どの記事をどの順番で表示するかを計算 今までは編集者が決めていた 現在は編集者+ COKE Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
その他の事例 WebMap(Web ページのデータベース ) の構築 新しい技術の評判抽出 クロールしたデータの問題検証 データ解析全般 ログ解析 検索インデックスの生成 機械学習 広告最適化 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Yahoo! JAPAN での事例 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
検索ログプラットフォーム 社内の検索サービスのログ解析全般 Hive を独自に拡張して使用している 様々な Yahoo! JAPAN のサービスにデータを提供 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Yahoo! 検索 関連検索ワード キーワード入力補助 ショートカットの表示制御 検索ログプラットフォームのデータが元になっている Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Yahoo! 検索ランキング 検索ランキング、急上昇ワードランキングなど 都道府県別、性年代別のランキング( Yahoo! ラボ) 検索ログプラットフォームが提供したデータをさらに加工している Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
レコメンデーションプラットフォーム レコメンデーションサービスの計算処理に利用 ビヘイビアデータのクラスタリング計算 クラスタとコンテンツデータのマッチング計算 Yahoo! オークションなど Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
モバイル検索 検索データを溜め込むストレージ 検索ランキング計算 アンカーテキスト抽出 ログ解析、クリックログの検索ランキング反映 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
地図検索 地図検索インデックス生成 クリックログ集計・検索ランキング反映 店舗やビルの一意性処理 ログ解析 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
開いているお店検索 クロールデータから定休日や営業時間を抽出 クロール  /  営業時間、定休日抽出  /  検索インデックス作成 Yahoo! ラボや iPhone 版 Safari の地図検索で公開 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
その他の事例 広告プラットフォーム 検索サービス構築プラットフォーム( ABYSS ) 地域 API プラットフォーム( YOLP ) Yahoo! JAPAN 研究所 Etc… Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Hadoop 開発の流れ Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Hadoop 開発の流れ Yahoo! JAPAN で、どのように Hadoop 開発を行っているか? サービスによって開発の方法は若干違うが、 ABYSS の例を紹介 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
ABYSS とは? 社内の検索サービスをホスティングするプラットフォーム 主に検索データのストレージとして Hadoop を利用 検索データの解析処理などに MapReduce を使用 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Hadoop Client Hadoop を Client と Server に分けて、運用を行っている 他のサーバにある Hadoop クラスタのファイルの読み書きや、 Job の実行を簡単に行える Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  $ hadoop fs –put localfile  hdfs://nn.example.com:9000/hadoop/hadoopfile $ hadoop fs –get  hdfs://nn.example.com/user/hadoop/file  localfile
Hadoop Client core-site.xml や mapred-site.xml に外部の Hadoop Server を指定し、 Hadoop Client としてパッケージ化 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  <property> <name>fs.default.name</name> <value> hdfs://nn.example.com:9000 </value> </property> -  core-site.xml <property> <name>mapred.job.tracker</name> <value> nn.example.com:9000 </value> </property> -  mapred-site.xml
Hadoop Server 開発用クラスタと、検証用クラスタ、本番用クラスタがある 本番用クラスタは、 DRBD で Namenode を冗長化 別サーバから Hadoop Client で Job の実行や、ファイルの転送を行っている Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  Hadoop Client Hadoop Client Hadoop Client 開発用クラスタ 検証用クラスタ 本番用クラスタ
ファイルの転送 基本的には、 Hadoop Client で転送 HTTP 経由で転送する場合もあり Datanode の HTTP Server から転送 デフォルトでは GET しかできないが、パッチをあてて PUT/POST/DELETE もできるようにしている Thrift や FUSE 経由で転送しているサービスもある Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Hadoop の開発 Eclipse で開発 Mockito+JUnit や MRUnit で単体テスト ただし、 DistributedCache などがテストできない Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Eclipse Plugin Eclipse Plugin を使えば、 Hadoop Client が入った状態になる 直接、開発用クラスタに Job を投げて実行 VMWare 上に Hadoop クラスタを立ち上げる場合もあり Yahoo や Cloudera で、セットアップがほとんど必要ない VMWare のイメージファイルが公開されている Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
セキュリティ Hadoop Server のアカウントを持っていなくても、 Hadoop Client で、どこからでも Job を実行したり、ファイルの読み書きができる 権限管理の仕組みはあるが、セキュリティの観点ではほとんど意味をなさない 複数人でクラスタを共用する場合は問題 解決法 ネットワークを遮断して、ポートをアクセス制限 誓約書を書かせる Hadoop with Security を後ほど紹介 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Hadoop の user/group なんとなく、シェルのログイン user/group が適用されているが・・・ Hadoop Client 側で、” whoami ” 、” bash –c groups ”  コマンドを実行して取得しているだけ ちなみに Windows では取得できない Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止    public final static String USER_NAME_COMMAND = &quot; whoami &quot;;   public static String[] getGROUPS_COMMAND() { return new String[]{&quot; bash &quot;, &quot; -c &quot;, &quot; groups &quot;}; } static String getUnixUserName() throws IOException { String[] result = executeShellCommand( new String[]{Shell.USER_NAME_COMMAND}); return result[0]; } UnixUserGroupInformation.java Shell.java
任意の user/group を指定 Hadoop Client の core-site.xml で、 hadoop.job.ugi を指定する MapReduce の Job ごとに動的に指定することも可能 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  <property> <name> hadoop.job.ugi </name> <value> user,group </value> </property> JobConf conf = new JobConf(Test.class); conf.set(UnixUserGroupInformation.UGI_PROPERTY_NAME,” user,group ”); -  core-site.xml -  MapReduce
Hadoop with security いままでの Hadoop のセキュリティには問題がある Yahoo! Distribution Of Hadoop With Security Kerberos 認証ベース まだベータバージョン Hadoop 0.22 で正式サポート Hadoop 0.21 にも一応追加されているが、まだうまく動かない模様 C l oudera Distribution Of Hadoop の次のバージョンにも追加 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
Hadoop を運用してきた中で 得られた知見 ~ Yahoo! JAPAN の場合~ Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
クラスタ構築 データ保存用途が計算用途より速いスピートで増大する CPU 、メモリともに余り気味 -> ディスク I/O がネックになっているのも原因の一つ CPU 数は抑えめに、ディスク数は多めにした方がよい -> かといって安いマシンで構築してはならない    ( コモディティ のミスリーディング ) Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
パラメータチューニング mapred.tasktracker.map.tasks.maximum /  mapred.tasktracker.reduce.tasks.maximum TaskTracker で同時に走る最大タスク数 Core の数 -1 ぐらいで最適なパフォーマンスが得られる mapred.child.java.opts 子プロセスの JVM オプション MapReduce から動的に設定でき、ある特定の Job で最大ヒープサイズを増やしたいときなどに指定する JVM オプション Namenode 、 Jobtracker など個別に設定可能 Xmx と Xms を同じにする、 GC などのチューニング Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
圧縮 gzip 、 bzip2 、 LZO 、 ZIP などの形式をサポート 巨大な入力データは、 bzip2 で圧縮する場合が多い Bzip2 は、分割可能 gzip などは、分割できず、1ファイルにつき 1MapTask が立ち上がってしまう Map の出力は LZO で圧縮 解凍、圧縮の速度が早い 帯域が問題になる場合が多いため、圧縮した方がよい Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
ソートのチューニング ソート実装 (map.sort.class) の変更 デフォルトは QuickSort ログのソートは HeapSort の方が高速 ソートに使うメモリサイズ (io.sort.mb) の変更 デフォルトは 100MB 増やし過ぎると逆効果になることも Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
アプリケーション開発 早めに 本番データ を使って 本番環境 でテストすべき テストデータでは起こらない事象が次々に起こる 大量の Gzip ファイル処理で Mapper 数増大 改行コードの混在 (LF 、 CR 、 CRLF) マイナーバージョンアップの変更から起きる不具合 各ノード間の設定差異による不具合 … Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
まとめ Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
まとめ Hadoop は大規模なデータを複数のマシンに分散して 処理できるプラットフォーム Hadoop を使う企業は増え続けていて、不可欠な技術に なりつつある Hadoop の利用例 検索関係、ログ解析、機械学習など 大規模データを扱う処理や、大量の計算が必要な バッチ処理に向いている Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止
TechBlog Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  http://techblog.yahoo.co.jp/
Hadoop Hack Night Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止  2010 年 3 月、 8 月に開催
ご静聴ありがとうございました! Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved.  無断引用・転載禁止

Hadoop ~Yahoo! JAPANの活用について~

  • 1.
    オープンソースカンファレンス 2010 Tokyo/Fall Hadoop ~ Yahoo! JAPAN の活用について~ 2010/9/10 ヤフー株式会社 R&D 統括本部 角田直行、吉田一星
  • 2.
    自己紹介 角田 直行 (かくだ なおゆき ) R&D 統括本部 プラットフォーム開発本部検索開発部 開発 3 2005 年 ヤフー株式会社入社 ヤフー地図 ヤフー路線 ヤフー検索 … 2010 年現在、検索プラットフォームを開発中 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 3.
    自己紹介 吉田一星 (よしだ いっせい)R&D 統括本部プラットフォーム開発本部検索開発部開発3 R&D 統括本部フロントエンド開発本部アプリケーション開発部開発4(兼) R&D 統括本部プラットフォーム開発本部要素技術開発部開発3(兼) 2008 年に Yahoo! JAPAN に入社 検索プラットフォームや画像処理で Hadoop に関わる開発 地図検索、地域プラットフォームでも Hadoop に関わる開発を経験
  • 4.
    Agenda Introduction Hadoopとは 事例紹介 Hadoop 開発の流れ 得られた知見 まとめ Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 5.
    Introduction Copyright ©2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 6.
    有名なネットサービス Copyright ©2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 月間 485 億 3100 万 PV 1 日 5000 万 のつぶやき 商品数 6400 万 月間ユーザ数 5 億 人 各サービスとも日々成長を続けています
  • 7.
    莫大なデータ量との闘い 成長を続けていくにはアクセスログ解析やデータマイニングなどが必須 億単位の行 or テラバイト級のデータを短時間で処理したい Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 毎日処理しなければならない
  • 8.
    Yahoo! JAPAN が扱うデータCopyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ログは 1 日分だけでもかなりのサイズになる 行数を数えるだけで数日かかる
  • 9.
    解決策としての Hadoop 大規模な処理、大容量のデータを扱うには1 台のサーバでは不可能 マルチコアによる並行処理アプローチは複雑すぎる 数十~数千台規模で簡単にスケールする環境が不可欠 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 この発表では、 Yahoo! JAPAN が Hadoop をどう活用しているか について事例を交えて解説します
  • 10.
    Hadoop とは Copyright© 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 11.
    Hadoop とは 大規模分散処理システムGoogle   MapReduce/GFS を論文を元に実装 処理時間が数分~数時間かかるようなバッチ処理に向いている -> Web のように、即座に結果が返るような   リアルタイム処理には不向き Java で書かれ、オープンソースとして公開 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 12.
    Hadoop とは DougCutting 氏が生みの親 Lucene など有名 OSS を開発 Yahoo! Inc. 在籍時はフルタイムで開発 現在は Cloudera に在籍 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ( 出典元 :Wikipedia)
  • 13.
    Hadoop とは Copyright© 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 大きく MapReduce と HDFS ( 分散ファイルシステム ) に分かれる
  • 14.
    Hadoop MapReduce Copyright© 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 長時間かかる巨大な処理を複数台のマシンに分散 ・・・ ・・・
  • 15.
    Hadoop HDFS Copyright© 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ・巨大なファイルを複数台に分割 ・複数サーバの各 HDD を 1 つの HDD のように扱える
  • 16.
    Hadoop 関連プロダクト Copyright© 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 大規模データ処理用スクリプト言語 Pig Hive Facebook が開発 扱いが一般データベースに似ている A = load 'passwd' using PigStorage(':'); B = foreach A generate $0 as id; dump B; CREATE TABLE pokes (foo INT, bar STRING); SELECT a.foo FROM pokes a;
  • 17.
    Hadoop 関連プロダクト Copyright© 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Hadoop 上に構築された列指向データベース Google BigTable のクローン HBase 機械学習ライブラリ Hadoop でスケール可 Mahout 複数の MapReduce ジョブなどを 実行制御するワークフロー Oozie
  • 18.
    Hadoop の事例紹介 Copyright© 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 19.
    Hadoop を活用している会社 Copyright© 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 など・・・ 増え続けています!
  • 20.
    The New YorkTimes TimeMachine 過去のアーカイブを公開 4TB の TIFF を PDF に Amazon EC2 / S3 100 インスタンス 24 時間 1500 ドル以下 MRToolKit を公開 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 21.
    eHarmony アメリカの 4%のカップルが eHarmony を通じて結婚 毎日平均 236 人が結婚している カップルのマッチングの計算に Hadoop を利用 何十年もの研究と臨床実験に基づいたモデル 新しいモデルも日々テストされている モデルの評価は、部屋にゴリラを入れて実験 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 22.
    FlightCaster 飛行機の遅れを、航空会社の発表の数時間前に予報するサイト 以下の情報を元に推測到着便情報 天気予報 FAA( 米国連邦航空局 ) の情報 過去 10 年間の航空便のデータ Hadoop を使って予測の計算処理 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 23.
    簡単に使える環境 Amazon ElasticMapReduce Hadoop の MapReduce を簡単に実行できる 従量課金( 100 台を 1 時間で、 1000 円程度) Hadoop の知識は必要だが、セットアップは最小限 Google BigQuery Google の MapReduce 環境を使える SQL ライクな命令( Hive に似ている) REST API で簡単に実行できる Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 24.
    Yahoo! Inc. での事例紹介Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 25.
    サーチアシスト 入力した検索ワードに関連のありそうな単語を自動で補完 さらに検索結果画面に関連コンセプトを表示データベースの構築に Hadoop を使用 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 26.
    スポンサードサーチ 広告の表示位置を計算し、配置 Copyright© 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 27.
    Contents Optimization KnowledgeEngine (COKE) どの記事をどの順番で表示するかを計算 今までは編集者が決めていた 現在は編集者+ COKE Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 28.
    その他の事例 WebMap(Web ページのデータベース) の構築 新しい技術の評判抽出 クロールしたデータの問題検証 データ解析全般 ログ解析 検索インデックスの生成 機械学習 広告最適化 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 29.
    Yahoo! JAPAN での事例Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 30.
    検索ログプラットフォーム 社内の検索サービスのログ解析全般 Hiveを独自に拡張して使用している 様々な Yahoo! JAPAN のサービスにデータを提供 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 31.
    Yahoo! 検索 関連検索ワードキーワード入力補助 ショートカットの表示制御 検索ログプラットフォームのデータが元になっている Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 32.
    Yahoo! 検索ランキング 検索ランキング、急上昇ワードランキングなど都道府県別、性年代別のランキング( Yahoo! ラボ) 検索ログプラットフォームが提供したデータをさらに加工している Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 33.
    レコメンデーションプラットフォーム レコメンデーションサービスの計算処理に利用 ビヘイビアデータのクラスタリング計算クラスタとコンテンツデータのマッチング計算 Yahoo! オークションなど Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 34.
    モバイル検索 検索データを溜め込むストレージ 検索ランキング計算アンカーテキスト抽出 ログ解析、クリックログの検索ランキング反映 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 35.
    地図検索 地図検索インデックス生成 クリックログ集計・検索ランキング反映店舗やビルの一意性処理 ログ解析 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 36.
    開いているお店検索 クロールデータから定休日や営業時間を抽出 クロール / 営業時間、定休日抽出 / 検索インデックス作成 Yahoo! ラボや iPhone 版 Safari の地図検索で公開 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 37.
    その他の事例 広告プラットフォーム 検索サービス構築プラットフォーム(ABYSS ) 地域 API プラットフォーム( YOLP ) Yahoo! JAPAN 研究所 Etc… Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 38.
    Hadoop 開発の流れ Copyright© 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 39.
    Hadoop 開発の流れ Yahoo!JAPAN で、どのように Hadoop 開発を行っているか? サービスによって開発の方法は若干違うが、 ABYSS の例を紹介 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 40.
    ABYSS とは? 社内の検索サービスをホスティングするプラットフォーム主に検索データのストレージとして Hadoop を利用 検索データの解析処理などに MapReduce を使用 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 41.
    Hadoop Client Hadoopを Client と Server に分けて、運用を行っている 他のサーバにある Hadoop クラスタのファイルの読み書きや、 Job の実行を簡単に行える Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 $ hadoop fs –put localfile hdfs://nn.example.com:9000/hadoop/hadoopfile $ hadoop fs –get hdfs://nn.example.com/user/hadoop/file localfile
  • 42.
    Hadoop Client core-site.xmlや mapred-site.xml に外部の Hadoop Server を指定し、 Hadoop Client としてパッケージ化 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 <property> <name>fs.default.name</name> <value> hdfs://nn.example.com:9000 </value> </property> - core-site.xml <property> <name>mapred.job.tracker</name> <value> nn.example.com:9000 </value> </property> - mapred-site.xml
  • 43.
    Hadoop Server 開発用クラスタと、検証用クラスタ、本番用クラスタがある本番用クラスタは、 DRBD で Namenode を冗長化 別サーバから Hadoop Client で Job の実行や、ファイルの転送を行っている Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Hadoop Client Hadoop Client Hadoop Client 開発用クラスタ 検証用クラスタ 本番用クラスタ
  • 44.
    ファイルの転送 基本的には、 HadoopClient で転送 HTTP 経由で転送する場合もあり Datanode の HTTP Server から転送 デフォルトでは GET しかできないが、パッチをあてて PUT/POST/DELETE もできるようにしている Thrift や FUSE 経由で転送しているサービスもある Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 45.
    Hadoop の開発 Eclipseで開発 Mockito+JUnit や MRUnit で単体テスト ただし、 DistributedCache などがテストできない Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 46.
    Eclipse Plugin EclipsePlugin を使えば、 Hadoop Client が入った状態になる 直接、開発用クラスタに Job を投げて実行 VMWare 上に Hadoop クラスタを立ち上げる場合もあり Yahoo や Cloudera で、セットアップがほとんど必要ない VMWare のイメージファイルが公開されている Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 47.
    セキュリティ Hadoop Serverのアカウントを持っていなくても、 Hadoop Client で、どこからでも Job を実行したり、ファイルの読み書きができる 権限管理の仕組みはあるが、セキュリティの観点ではほとんど意味をなさない 複数人でクラスタを共用する場合は問題 解決法 ネットワークを遮断して、ポートをアクセス制限 誓約書を書かせる Hadoop with Security を後ほど紹介 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 48.
    Hadoop の user/groupなんとなく、シェルのログイン user/group が適用されているが・・・ Hadoop Client 側で、” whoami ” 、” bash –c groups ” コマンドを実行して取得しているだけ ちなみに Windows では取得できない Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止   public final static String USER_NAME_COMMAND = &quot; whoami &quot;;   public static String[] getGROUPS_COMMAND() { return new String[]{&quot; bash &quot;, &quot; -c &quot;, &quot; groups &quot;}; } static String getUnixUserName() throws IOException { String[] result = executeShellCommand( new String[]{Shell.USER_NAME_COMMAND}); return result[0]; } UnixUserGroupInformation.java Shell.java
  • 49.
    任意の user/group を指定Hadoop Client の core-site.xml で、 hadoop.job.ugi を指定する MapReduce の Job ごとに動的に指定することも可能 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 <property> <name> hadoop.job.ugi </name> <value> user,group </value> </property> JobConf conf = new JobConf(Test.class); conf.set(UnixUserGroupInformation.UGI_PROPERTY_NAME,” user,group ”); - core-site.xml - MapReduce
  • 50.
    Hadoop with securityいままでの Hadoop のセキュリティには問題がある Yahoo! Distribution Of Hadoop With Security Kerberos 認証ベース まだベータバージョン Hadoop 0.22 で正式サポート Hadoop 0.21 にも一応追加されているが、まだうまく動かない模様 C l oudera Distribution Of Hadoop の次のバージョンにも追加 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 51.
    Hadoop を運用してきた中で 得られた知見~ Yahoo! JAPAN の場合~ Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 52.
    クラスタ構築 データ保存用途が計算用途より速いスピートで増大する CPU、メモリともに余り気味 -> ディスク I/O がネックになっているのも原因の一つ CPU 数は抑えめに、ディスク数は多めにした方がよい -> かといって安いマシンで構築してはならない    ( コモディティ のミスリーディング ) Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 53.
    パラメータチューニング mapred.tasktracker.map.tasks.maximum / mapred.tasktracker.reduce.tasks.maximum TaskTracker で同時に走る最大タスク数 Core の数 -1 ぐらいで最適なパフォーマンスが得られる mapred.child.java.opts 子プロセスの JVM オプション MapReduce から動的に設定でき、ある特定の Job で最大ヒープサイズを増やしたいときなどに指定する JVM オプション Namenode 、 Jobtracker など個別に設定可能 Xmx と Xms を同じにする、 GC などのチューニング Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 54.
    圧縮 gzip 、bzip2 、 LZO 、 ZIP などの形式をサポート 巨大な入力データは、 bzip2 で圧縮する場合が多い Bzip2 は、分割可能 gzip などは、分割できず、1ファイルにつき 1MapTask が立ち上がってしまう Map の出力は LZO で圧縮 解凍、圧縮の速度が早い 帯域が問題になる場合が多いため、圧縮した方がよい Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 55.
    ソートのチューニング ソート実装 (map.sort.class)の変更 デフォルトは QuickSort ログのソートは HeapSort の方が高速 ソートに使うメモリサイズ (io.sort.mb) の変更 デフォルトは 100MB 増やし過ぎると逆効果になることも Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 56.
    アプリケーション開発 早めに 本番データを使って 本番環境 でテストすべき テストデータでは起こらない事象が次々に起こる 大量の Gzip ファイル処理で Mapper 数増大 改行コードの混在 (LF 、 CR 、 CRLF) マイナーバージョンアップの変更から起きる不具合 各ノード間の設定差異による不具合 … Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 57.
    まとめ Copyright ©2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 58.
    まとめ Hadoop は大規模なデータを複数のマシンに分散して処理できるプラットフォーム Hadoop を使う企業は増え続けていて、不可欠な技術に なりつつある Hadoop の利用例 検索関係、ログ解析、機械学習など 大規模データを扱う処理や、大量の計算が必要な バッチ処理に向いている Copyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
  • 59.
    TechBlog Copyright ©2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 http://techblog.yahoo.co.jp/
  • 60.
    Hadoop Hack NightCopyright © 2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 2010 年 3 月、 8 月に開催
  • 61.
    ご静聴ありがとうございました! Copyright ©2010 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

Editor's Notes

  • #6 実際のサービスでないものもある、まだ開発中のものもある