Your SlideShare is downloading. ×
Hadoop Conference Japan 2009 #2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Hadoop Conference Japan 2009 #2

4,165

Published on

楽天のHadoop利用事例(後半) …

楽天のHadoop利用事例(後半)
2009年11月13日に行われました、Hadoop Conference Japan 2009の発表資料です。

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,165
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 楽天の Hadoop 利用事例 ~技術研究所でも~ 楽天株式会社 楽天技術研究所 西岡 悠平| 2009 年 11 月 13 日
  • 2. 楽天技術研究所について 
    • 自然言語
    • マルチメディア
    • データマイニング
    • 大規模・分散
    研究テーマ More Than Web - 来るべき豊かなリアリティを - コンセプト 楽天タワー 楽天技術研究所 Rakuten Institute of Technology
  • 3. 自己紹介
    • 西岡 悠平
    • データマイニング、自然言語 担当
    • [email_address]
    • @nishiokamegane
  • 4. 目次 1 Hadoop で集合知プログラミング 2 POJO Hadoop 3 fairy by 楽天技術研究所
  • 5. 目次 1 Hadoop で集合知プログラミング 2 POJO Hadoop 3 fairy by 楽天技術研究所
  • 6. 集合知プログラミング (1)‏
      • ( 最も簡単な例 ) ランキング
      • ( その他の例 ) レコメンデーション…
      • 利用者のデータを利用して計算を行い
      • ユーザがもっと便利に、もっと楽しく
    集合知プログラミングとは? 楽天でも 売っているらしい
  • 7. 集合知プログラミング (2)‏
      • 機械学習
      • データマイニング
      • 統計処理
    具体的な手法は? Hadoop で動くの?? k-means ( クラスタリング ) について見ていきましょう
  • 8. k-means 初期状態
  • 9. k-means 赤クラスタと青クラスタの中心をランダムに
  • 10. k-means クラスタへ割り当て ( 距離計算 )‏
  • 11. k-means クラスタへ割り当て
  • 12. k-means 中心の移動
  • 13. k-means 中心の移動
  • 14. k-means クラスタへ割り当て [2 回目 ] ( 距離計算 )‏
  • 15. k-means クラスタへ割り当て [2 回目 ]
  • 16. k-means 中心の移動 [2 回目 ]
  • 17. k-means 中心の移動 [2 回目 ]
  • 18. k-means 収束すれば終了
  • 19. 楽天の商品を k-means で
    • まともにやったら、終わりそうにない・・・
    • 楽天の商品 2,000 万件を k-means でクラスタリングする
    課題 アルゴリズムを工夫 それでも一週間ぐらいかかりそう・・・ Hadoop は?? ( 当時は ver.0.16.x)‏
  • 20. k-means は Hadoop 上で動くの?  (1)‏
    • Apache Mahout
    • 現在 (2009/11/18 時点 ) で ver 0.1
    • Apache Lucene のサブプロジェクト
    • 目的
      • 様々な機械学習のアルゴリズムを Hadoop 上に構築しよう!
      • 分類 ( Naïve Bayes …. )
      • 遺伝的プログラミング
      • クラスタリング (k-means)‏
    http://lucene.apache.org/mahout/
  • 21. k-means は Hadoop 上で動くのか? (2)‏ 開始 収束? 開始 (Map 処理 )‏ クラスタへ割り当て (Reduce 処理 )‏ 中心を移動 それぞれの点で 中心との距離を計算 ⇒ 完全に並列 クラスタに属する点を 集めて中心の再計算 ⇒ 集約が必要
  • 22. 楽天の商品を k-means ( Hadoop バージョン )‏
    • Apache Mahout のソースコードを参考
    • 1 日 (17 時間 ) で終了した
    どうなった?
  • 23. 目次 1 Hadoop で集合知プログラミング 2 POJO Hadoop 3 fairy by 楽天技術研究所
  • 24. Hadoop で Java プログラミング面倒では??
    • MapReduce プログラムを書くのは面倒
      • Mapper  インターフェースなどを実装しなければ
      • org.apache.hadoop.io.IntWritable から int へ変換しなければ
      • Reporter クラスを使わないときでも、引数で渡さなければ
    • Pig や Hive でも問題が
      • データ形式をそろえたり、使うための準備が大変
      • 専用言語を覚えるのが大変
      • 内部でどのタイミングで MapReduce が行われるのか不明瞭
        • オーバーヘッドが大きそう
  • 25. そこで、
    • 薄い皮のフレームワーク
    • Pig や Hive みたいに別の計算モデルを導入なし
      • MapReduce プログラマーは新しいことを覚えることが少ない
    • この図のイメージで、簡単にプログラムを書けるように
    POJO Hadoop というフレームワークを開発 コンセプト EJB Plain Old Java Object ( POJO)
  • 26. POJO Hadoop の機能
    • 1. リフレクション機能
      • 任意のクラスを MapReduce に変更可能
    • 2. コンバート機能
      • Writable クラスを Java の通常クラスに、自動変換
    • 3. インジェクション機能
      • OutputCollector や Reporter は自動的にインジェクション
  • 27. WordCount のサンプル
    • public class WordCount {
    • public Output output; public void map(long key, String value) {
    • output.collect(value, 1);
    • }
    • public void reduce(String key, Iterator<Integer> values) {
    • int sum = 0;
    • while (values.hasNext()) { sum += values.next(); }
    • output.collect(key, sum);
    • }
    • public static void main(String[] args) throws Exception {
    • RitJobConf conf = new RitJobConf(WordCount.class);
    • conf.input(TextInputFormat.class, “input&quot;);
    • conf.setDriverClass(WordCount.class, Integer.class); conf.output(TextOutputFormat.class, “output&quot;); JobClient.runJob(conf);
    • }
    • }
  • 28. 目次 1 Hadoop で集合知プログラミング 2 POJO Hadoop 3 fairy by 楽天技術研究所
  • 29. 楽天では独自に分散フレームワーク開発
    • 特徴
    • Ruby
    • MapReduce にアイデアを得ながらも より汎用的・生産的なフレーワーク
    • 最近のトピック
    • ROMA( 分散 KVS) と連携
    • 現状
    • 主要な API は実装済み
    • バッチ処理の並列化に試験導入
    先月 オープンソース化
  • 30. まとめ
    • 集合知プログラミングも Hadoop で
      • 参考になるオープンソースもある
    • 簡易フレームワークでわずらわしい処理から解放
      • 少しの工夫で生産性向上
    • 独自の分散フレームワーク開発
      • 頑張っていきます

×