さくペラ

さくっとぺらいちというサイトのつづき

SBM研究会vol2(午後の部 その3)

午後の部もその3です。
まずはIIJの方です

IIJ藤田さん 「Kikker(筑波大の神林さん制作)を改良⇒KikkerMR」

Kikkerというレコメンドエンジンの欠点

  • 処理が重いという欠点

■はじめた理由

  • Map/Reduceを仕事ではじめたので

※-MapとReduceという二つの関数を書くだけで分散処理ができる。Googleサーチエンジンは分散並列処理を行っている。googleは論文しか出してないので内容は不明。

  • Kikkerのようなアプリに向いた処理なので実装してみよう!

■KikkerMR

  • Map/Reduce版Kikker
  • 大量のクローリングと解析ならMap/Reduceが最適化
  • ただ、プログラムの構造を変えないといけないので、ガッツリ書き直さないといけない…
  • hadoop0.8.2ベース

■仕組み

  • Mapにはてぶの新着ページのクロールと解析
  • Reduceにエントリされているページのクロールと解析

kikkerはhtmlparserを実装しているので…

  • 新はてぶになったので大前提が変わってしまった!!!
  • やっぱり動かなくなってしまった!
  • classの属性が全部変わってた⇒作り直し!

■ロジック

  • エントリの1番目はタイトルとリンク
  • エントリの3番目はプロパティ的な情報を参照
  • クロールはhttpclient
  • HTMLからデータの抽出はhtmlparser
  • 形態素解析はSen(JavaMeCab
  • GetResponseBodyを使うと警告が出る⇒無視!
  • 推薦リストの生成は基本的にはページのベクトルとユーザーのベクトルとを比較する。
  • ユーザが参照したページのベクトルをユーザーベクトルに足しこむ

■結果

  • 一台で動かした場合と、クラスタで動かした場合で、まったく結果が変わった。エントリー数を増やしていくと一台で動かしたものはリニアにあがっていくが。クラスタではまったく処理時間が変化なかった。

⇒テストで80万件クロール!まさにDDoS?w
⇒伊藤さん「RSSFeedなら構造も変わらないし、ユーザーにも迷惑がかからないのでRSSでお願いしますw」

  • KikkerMRはGPLライセンスでリリース予定
  • クラスタのテストは要申請
  • webUIの開発はこれからで、クリスマスまでにサービスリリースするとか。