0
S42011/1/27 第19回あしたの研塩谷沢生(インフォサイエンス株式会社)
S4とは• Simple・Scalable・Streaming・System• Yahoo!の検索広告最適化チームが開発した システムがベース• 数年間の開発期間を経て、2010年10月にオープンソースとし  公開• MapReduceに”イン...
おさらい・MapReduceの処理• 入力と出力が一つずつ• Map/Reduceの組で一つの処理を実現• 全体の処理はマスターノードがコーディネイトする         Map1                key1= v1, v2... ...
MapReduceの制約• 入力と出力が一つずつでは不便  o バッチ処理にせざるを得ない  o 複数のクライアントからのデータをまとめる仕組が必須• 投入スケジューリングが難しい o  データをリアルタイムに処理したい o  でも効率化のため...
S4のしくみ• データが次々に「イベント」として飛んでくる• イベントは「PE」が処理する  o Processing Elementの略• イベントを処理したPEは、またイベントを投げる  o あるいはDBなどの外部のシステムに出力する• い...
Event                               値                      date     2011-01-27                      Name     Taro         ...
PE: Processing Element• イベントを処理する基本単位• ストリームを介してイベントを受入・送出する  o ストリームは複数本あっても良い• イベントを受け取る度に、何らかの処理をする  o 処理結果は、新しいイベントとして...
PEとキー属性: 単語カウント• 例:単語の出現頻度をカウントするアプリを考える o アプリケーションは、単語を1つずつ抽出して   イベントとして送る o S4は、WordCount PEというPEで単語イベントを受け取り   出現回数を算える
PEはキー属性ごと• S4では、属性の値ごとにPEを生成する o   この例では、単語の種類ごとにPEが用意される• PEが注目する属性を、キー属性と呼ぶ o   DBで言う主キーのようなもの• PEを実装する側も、複数の値が来る心配をしなくて...
PEの生成と削除• 新しい単語が登場する度に、新しいPEが生成される o   PEの生成はコピーによる o   コピー元のことを、PEプロトタイプという• PEには有効期限(TTL)がある o   一定期間使われていないPEは不活状態に o  ...
キー属性によるJoin• 複数のタイプのイベントを受け取るPEでは、そのタイプご  とにキー属性を指定する o   上の例でID matching PEは、以下をキーとしている       UserActionイベントのaccount属性  ...
PN: ProcessNode• PEの生成削除、イベントの配信を一手に管理する  o 処理可能なイベントの管理  o 外部との通信・ノード間通信  o フェイルオーバー• S4のランタイムの基本単位
ProcessNode間での処理分散• S4は非常に特徴的な分散ロジックを採用している   o PEはキー属性値ごとに生成される   o そのPEがどのProcessNodeに置かれるかは、     キー属性値のハッシュで決まる• つまり同じキ...
S4アーキテクチャのメリット• 同じキーのイベントは必ず同じノードが処理する• メモリ上で処理を完結させられる  o データを分散FSなどで共有しなくて良い• 次にどこにイベントを渡すかを、自律的に判断できる  o タスク割り当てを集中管理しな...
キーレスイベント: 外部からのデータ入力• 外部のシステムから最初に送るイベントは、キー属性がない o   キーレスイベントと呼ぶ• 送り先のProcessNodeはラウンドロビンなどで適当に選ぶ o   クライアントライブラリがやってくれる(...
外部システムへの出力• PEにはイベントを受けとった時以外に、出力処理を行  えるタイミングがある o   N個のデータを処理する度に出力 o   N秒経過したら出力
フェイルオーバー• PEが落ちた時 o   ProcessNodeがイベントを再投入する o   PEの処理状態は失われてしまう       しかたない• ProcessNodeが落ちた時 o   予備のProcessNodeをスタンドバイさ...
Yahoo!チームのS4利用例(1)• 広告システム  o  検索時に埋め込んだURLと、あとで実際にクリックされたURL     の突き合わせ       これを効率的にやるのは意外と難しい   o スパムやボットの検出       広告...
広告検知システムのパフォーマンス    Events per Second   Relative Error in CTR   Data Rate    2000                0.0%                    2...
Yahoo!チームのS4利用例(2)• システムパラメータのチューニングに活用 o   パラメータを変えながらシステムを稼動 o   出力結果を分析して、より有効なパラメータにシステムを自動     調整 o   収益を0.25%、ユーザのクリ...
S4でのプログラミング• 開発者の仕事 = イベントとPEのプログラム + 構成• イベントのプログラミング o   単純なJavaBeansで良い o   TutorialなどではScalaを使用• PEのプログラミング o   実装する処理...
MapReduceとの比較(1/3)• データにキー値があり、これで分散処理するのは同じ o MapReduce:     Mapがキーを付け、Reduceが同じキーのデータを処理する o S4:     イベントにはキーがあり、キーごとの...
MapReduceとの比較(2/3)• 処理の単位  o MapReduce      Map-Reduceの組で一つの処理      Map-Reduceが全部終わるまで結果は分からない  o S4      処理ごとにPEがあり、PE...
MapReduceとの比較(3/3)• データの扱い  o MapReduce       HDFSなどの分散ファイルシステム上に置く       障害時はそこから再投入  o S4       基本的にオンメモリ       障害時は...
S4の用途• 大量のデータをリアルタイムに処理できるのが特徴 o   急激なデータ量の変化に追随 o   ある程度の不正確さを許容する寛容さが必要• 向いている用途 o   傾向分析・ランキング o   パラメータチューニング o   機械学習...
Upcoming SlideShare
Loading in...5
×

S4

5,307

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,307
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
72
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "S4"

  1. 1. S42011/1/27 第19回あしたの研塩谷沢生(インフォサイエンス株式会社)
  2. 2. S4とは• Simple・Scalable・Streaming・System• Yahoo!の検索広告最適化チームが開発した システムがベース• 数年間の開発期間を経て、2010年10月にオープンソースとし 公開• MapReduceに”インスパイアされた”、 しかし全く別の考え方によるデータ処理フレームワーク
  3. 3. おさらい・MapReduceの処理• 入力と出力が一つずつ• Map/Reduceの組で一つの処理を実現• 全体の処理はマスターノードがコーディネイトする Map1 key1= v1, v2... Reduce Output Input Map2 key2= v1, v2 ... Reduce Map3
  4. 4. MapReduceの制約• 入力と出力が一つずつでは不便 o バッチ処理にせざるを得ない o 複数のクライアントからのデータをまとめる仕組が必須• 投入スケジューリングが難しい o データをリアルタイムに処理したい o でも効率化のためにはまとめて投入したい• データを渡す時、いちいち(Hadoopの場合)HDFSに 書くのでは遅い• MapReduceは投入したデータを全部処理しようとする o 高負荷の時は、レスポンスが遅れてしまう
  5. 5. S4のしくみ• データが次々に「イベント」として飛んでくる• イベントは「PE」が処理する o Processing Elementの略• イベントを処理したPEは、またイベントを投げる o あるいはDBなどの外部のシステムに出力する• いわゆる「アクターモデル」
  6. 6. Event 値 date 2011-01-27 Name Taro Action Login 例: ユーザの行動を表すイベント• イベントは、属性-値の対のリスト o プログラム上では、ただのJavaBeanオブジェクト• イベントには、タイプがある o PEは自分の対応するタイプのイベントだけを処理する
  7. 7. PE: Processing Element• イベントを処理する基本単位• ストリームを介してイベントを受入・送出する o ストリームは複数本あっても良い• イベントを受け取る度に、何らかの処理をする o 処理結果は、新しいイベントとして送出 o または、ファイルやDBに出力する o 基本的な処理(集計や名寄せ等)は予め用意されている
  8. 8. PEとキー属性: 単語カウント• 例:単語の出現頻度をカウントするアプリを考える o アプリケーションは、単語を1つずつ抽出して イベントとして送る o S4は、WordCount PEというPEで単語イベントを受け取り 出現回数を算える
  9. 9. PEはキー属性ごと• S4では、属性の値ごとにPEを生成する o この例では、単語の種類ごとにPEが用意される• PEが注目する属性を、キー属性と呼ぶ o DBで言う主キーのようなもの• PEを実装する側も、複数の値が来る心配をしなくて良い o この例では、イベントの到着回数 = 単語の出現頻度
  10. 10. PEの生成と削除• 新しい単語が登場する度に、新しいPEが生成される o PEの生成はコピーによる o コピー元のことを、PEプロトタイプという• PEには有効期限(TTL)がある o 一定期間使われていないPEは不活状態に o 不活状態のPEは、リソース不足の時に削除される
  11. 11. キー属性によるJoin• 複数のタイプのイベントを受け取るPEでは、そのタイプご とにキー属性を指定する o 上の例でID matching PEは、以下をキーとしている  UserActionイベントのaccount属性  AuthResultのuserId属性• つまり、同じキーを持つイベント同士が同じPEに集まる
  12. 12. PN: ProcessNode• PEの生成削除、イベントの配信を一手に管理する o 処理可能なイベントの管理 o 外部との通信・ノード間通信 o フェイルオーバー• S4のランタイムの基本単位
  13. 13. ProcessNode間での処理分散• S4は非常に特徴的な分散ロジックを採用している o PEはキー属性値ごとに生成される o そのPEがどのProcessNodeに置かれるかは、 キー属性値のハッシュで決まる• つまり同じキーのイベントは必ず同じノードが処理する
  14. 14. S4アーキテクチャのメリット• 同じキーのイベントは必ず同じノードが処理する• メモリ上で処理を完結させられる o データを分散FSなどで共有しなくて良い• 次にどこにイベントを渡すかを、自律的に判断できる o タスク割り当てを集中管理しなくて良い
  15. 15. キーレスイベント: 外部からのデータ入力• 外部のシステムから最初に送るイベントは、キー属性がない o キーレスイベントと呼ぶ• 送り先のProcessNodeはラウンドロビンなどで適当に選ぶ o クライアントライブラリがやってくれる(ようです)
  16. 16. 外部システムへの出力• PEにはイベントを受けとった時以外に、出力処理を行 えるタイミングがある o N個のデータを処理する度に出力 o N秒経過したら出力
  17. 17. フェイルオーバー• PEが落ちた時 o ProcessNodeがイベントを再投入する o PEの処理状態は失われてしまう  しかたない• ProcessNodeが落ちた時 o 予備のProcessNodeをスタンドバイさせておく o スタンドバイノードは、負荷分散にも使用する(らしい)• S4全体はZooKeeperクラスタで管理 o 物理ノード数は固定
  18. 18. Yahoo!チームのS4利用例(1)• 広告システム o 検索時に埋め込んだURLと、あとで実際にクリックされたURL の突き合わせ  これを効率的にやるのは意外と難しい o スパムやボットの検出  広告の意味がないクリックを上手くフィルタリング o 検索結果に合わせて、システムを最適化• …といった機能をS4で実装→ クリックスルー率(CTR)を3%向上
  19. 19. 広告検知システムのパフォーマンス Events per Second Relative Error in CTR Data Rate 2000 0.0% 2.6Mbps 3644 0.0% 4.9Mbps 7268 0.2% 9.7Mbps 10480 0.4% 14.0Mbps 12432 0.7% 16.6Mbps 14900 1.5% 19.9Mbps 16000 1.7% 21.4Mbps 20000 4.2% 26.7Mbps• { 64bitCPU x 4, 16GBMemory } x 8台• 1台で2個ずつ、計16個のProcessNodeを起動• 実データを別環境で再投入して測定
  20. 20. Yahoo!チームのS4利用例(2)• システムパラメータのチューニングに活用 o パラメータを変えながらシステムを稼動 o 出力結果を分析して、より有効なパラメータにシステムを自動 調整 o 収益を0.25%、ユーザのクリック数を1.4%アップ
  21. 21. S4でのプログラミング• 開発者の仕事 = イベントとPEのプログラム + 構成• イベントのプログラミング o 単純なJavaBeansで良い o TutorialなどではScalaを使用• PEのプログラミング o 実装する処理は基本的に二つ  processEvent():イベント取得時の処理  output() : 出力の処理(N回ごと、またはN秒ごとの処理)• 全体の構成は設定ファイルで記述 o つまり、PEという部品を用意しておいて S4で全体を繋ぎ合わせるイメージ o 部品(PE)の使い回しが非常に柔軟にできる
  22. 22. MapReduceとの比較(1/3)• データにキー値があり、これで分散処理するのは同じ o MapReduce:  Mapがキーを付け、Reduceが同じキーのデータを処理する o S4:  イベントにはキーがあり、キーごとのPEが処理する• データの投入の仕方 o MapReduce  単一のファイルを、各ノードが参照  入力は一つ、出力も一つ o S4: キー値に基づいて、直接ノードに送る  入力も出力も各PEが任意に行う
  23. 23. MapReduceとの比較(2/3)• 処理の単位 o MapReduce  Map-Reduceの組で一つの処理  Map-Reduceが全部終わるまで結果は分からない o S4  処理ごとにPEがあり、PE同士がストリームで連携  PEは定期的に出力を出せる
  24. 24. MapReduceとの比較(3/3)• データの扱い o MapReduce  HDFSなどの分散ファイルシステム上に置く  障害時はそこから再投入 o S4  基本的にオンメモリ  障害時は諦める• 色々な意味で、MapReduceとは対照的な性質のフレームワーク• 他に似たモデルを採用しているフレームワークとして、 Microsoftの"Dryad"がある o 色々高機能(Simpleではない)
  25. 25. S4の用途• 大量のデータをリアルタイムに処理できるのが特徴 o 急激なデータ量の変化に追随 o ある程度の不正確さを許容する寛容さが必要• 向いている用途 o 傾向分析・ランキング o パラメータチューニング o 機械学習• 不向きな用途 o 厳密な集計 o 監視システムなど
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×