リアルタイム分析

BIGデータについて調べてみました。

ちまたでは、

大量データを貯めこんで高速検索では、既に古い情報

今注目されているのは、

リアルタイム分析

googleで検索してみると、下記のような製品がヒットしました。

  • 【PFI】Sedue for BigData ~ Jubatus派生 ~
  • 【富士通】FUJITSU Software Interstage Terracotta BigMemory Max V4.0 ~ Teracotta派生 ~
  • 【OSS】Jubatus(ユバタス)
  • 【SoftwareAG】Software AG Presto Real-Time Analytics Add-On With Terracotta BigMemory ~ Teracotta連携 ~
  • 【IBM】IBM InfoSphere Streams
  • 【HP】Vertica Analytics Platform

 

ひととおり見てみて、リアルタイム分析システムの特徴は以下のようになる。(と言い切っていいのだろうか)

  1. ため込むのではなく、中継しながら分析する方式である。
  2. 並行分散可能なソフトウェアである。
  3. 大量データを扱う為、大量のメモリを消費する。

 

分析機能としては、

  1. 大量データは試行錯誤したり、見方を変えながら分析をする事ができる。
  2. 1.のような分析をリアルタイムでする必要はない。
  3. どのように事象が変化していくのかを分析する。
  4. 大量データの分析とリアルタイム分析は、異なるものととらえるべき

 

もう少し踏み込む前にリアルタイム分析製品は、 Jubatus、Terracottaあたりが、主流のように見える。Jubatusはオープンソースという事もあり、ドキュメントが公開されている。

http://jubat.us/ja/index.html

上記サイトから

Jubatusの特徴

  • 深い分析

Jubatusは、分類、回帰、統計、推薦、グラフマイニングなど多くの深い分析を実現しています。またバッチ型機械学習と同程度の学習精度を実現しています。

  • スケーラビリティ

Jubatusは、廉価なコモディティサーバを多数並べた分散処理(スケールアウト)が可能です。理論的には100台程度までスケールアウトが可能です。Jubatusでは、コモディティサーバで10万qpsを超えるスケーラブルな機械学習を実現しています。

  • リアルタイム

Jubatusは、データをためることなく瞬時に学習を行います。

 

Hadoopとの比較

Hadoop/MahoutとJubatusの間には多くの共通点があります。これらはスケーラブルで、コモディティサーバ上で動作します。

ストック型データに対する一括高速分析(バッチ処理)を得意とするHadoopは、機械学習がMapReduceパラダイムにあまり適合していないこともあり、洗練された機械学習機能を備えていません。Apache Mahout も Hadoop-based な機械学習プラットフォームですが、オンライン処理はスコープ外です。
Jubatusは、データ分析に特化しています。 Jubatusは、すべてのデータをメモリ上で処理し、オンラインで処理し、高いスループットと低いレイテンシを実現します。 この機能を実現するために、Jubatusは分散環境におけるゆるいモデルの共有と同期というアーキテクチャを採用しているのです。

 

最後に

JubatusではHadoopでもおなじみのZookeeperを使用して分散化をしている。この辺の特徴から、Hadoop(BIGデータ分析)、Jubatas(リアルタイム分析)の棲み分けも面白いが、サーバは別々に用意する必要がある為、ハードウェアというよりシステム管理面で共有する事になる。(OSS+java)

Jubatusを提案するには、オンライン連携(中継)の方式、オンラインデータのフォーマット機能、分析機能とメンテナンス方式を理解し、構成を提示する事になるだろう。他の製品を進めるにも、このあたりの知識をメーカー、顧客と調整する必要がありそうだ。