たなかこういちの資料室

システム開発に携わる筆者があれこれ試したことや学んだことについてのまとめ

「Jubatus」とは?

「Jubatus」とは、ビッグデータの分野において、大量のデータを統計解析したり傾向予測したりするためのソフトウエア製品です。開発元によると「オンライン機械学習向け分散処理フレームワーク」であると説明されています。
 
※「機械学習」とは何か?についてはWikipediaの記事を参照するとよいと思います。
 
Jubatusは、日本製のOSSで、LGPL 2.1のもとで配布されています。
 
<開発元>
- 株式会社プリファードインフラストラクチャーhttp://preferred.jp/
- NTT情報流通プラットフォーム研究所(http://www2.pflab.ecl.ntt.co.jp/
 
※上記2社の共同開発です。
 
Jubatusの特徴
 
開発元では、Jubatusの“ウリ”について、次のような趣旨の説明をしています。
 
大量データを(Scalable)、リアルタイムに(Real-Time)、深い解析(Deep-Analysis)することができる、この全てを同時実現しているのはJubatusが世界初
 
私はJubatusを下記のように理解しました。
 
・大量データ処理のために分散並列処理をサポートしています。(※スタンドアロンモードもサポートしていますので、入りやすいです。)
 
・大量データを発生時系列のデータストリームとして扱うこととしていて、それにより解析・分析の「リアルタイム処理」が実現されています。
 
・データの解析、分析、予測のための各種アルゴリズムを実装しています。利用者はアルゴリズムの詳細を理解せずとも利用できます。
 
Hadoopとの違い
 
ビッグデータ処理」というと直にHadoopを想起するが、Hadoopとの違いは以下のように理解できます。
 
1. Hadoopは並列処理の汎用フレームワークであり、データ解析・分析専用ではありません。Jubatusはデータ解析・分析専用です。
 
Hadoop上のデータ解析・分析ソフトウエア製品(※例えば「Apache Mahout」)が存在します。
 
2. Hadoop上にデータ解析・分析システムを構築すると、Map-Reduceアーキテークチャーの特性上、解析・分析対象データを事前に全て用意しておく必要があります。対してJubatusでは、解析・分析対象データを逐次追加しつつ逐次解析・分析の実行が可能です。(=解析・分析対象データを発生時系列でストリームとして扱うことで、リアルタイム処理が可能となっています。)
 
例えば、1ヶ月分の購買履歴データを解析・分析しようというとき、Hadoopベースのシステムでは、対象の1ヶ月が過ぎて、1ヶ月分のデータが全て蓄積された後に初めてその1ヶ月の解析・分析の実行が可能です。このような処理モードを「バッチ分析」と称しています。対してJubatusでは、その1ヶ月間日々、というよりトランザクション発生の都度、その時点までのデータについての解析・分析がその場で(=リアルタイムで)逐次行われます。発生差分データでの処理ができる、というイメージです。あるいは開発元は、ストリーム処理する、と言っています。この処理モードを「オンライン分析」と称しています。
 
※「オンライン分析」というと「OLAP」のことかと思われますが、ここでは、後からまとめて処理する「バッチ」に対して、その場で随時処理が行われるという意味で「オンライン」と称しているようです。「OLAP」とは多少ニュアンスが異なっている気がします。
 
HadoopのMap-Reduceに対して、Jubatusの「Update-Mix-Analyze」というアーキテクチャーがこれを実現している、としています。
 
参考
- 開発元の本家Webサイト:http://jubat.us/ja/
- プリファード社の紹介ページ:http://preferred.jp/product/jubatus/abstract/
- Jubatusの“立ち位置”の解説:http://bizex.goo.ne.jp/column/ip_16/84/66/index.html
- 開発元による概要プレゼン資料:http://www.ngs-forum.jp/event/seminar/report/w12040401/w11002.pdf
- 開発者Blog:http://blog.jubat.us/
 
◆以上
 

関連記事