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.のような分析をリアルタイムでする必要はない。
- どのように事象が変化していくのかを分析する。
- 大量データの分析とリアルタイム分析は、異なるものととらえるべき
もう少し踏み込む前にリアルタイム分析製品は、 Jubatus、Terracottaあたりが、主流のように見える。Jubatusはオープンソースという事もあり、ドキュメントが公開されている。
上記サイトから
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を提案するには、オンライン連携(中継)の方式、オンラインデータのフォーマット機能、分析機能とメンテナンス方式を理解し、構成を提示する事になるだろう。他の製品を進めるにも、このあたりの知識をメーカー、顧客と調整する必要がありそうだ。