• Save
Hadoop ~Yahoo! JAPANの活用について~
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 11,465 views

 

Statistics

Views

Total Views
11,465
Views on SlideShare
10,095
Embed Views
1,370

Actions

Likes
22
Downloads
0
Comments
0

6 Embeds 1,370

http://techblog.yahoo.co.jp 1256
http://153.127.245.33 105
http://server1.sunrise683.info 4
http://webcache.googleusercontent.com 2
https://twitter.com 2
http://j2k.naver.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 実際のサービスでないものもある、まだ開発中のものもある

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

  • オープンソースカンファレンス 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. 無断引用・転載禁止