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