リアルタイムなHadoop? 「Real-Time MapReduce」を実現するS4、オープンソースとしてYahoo!が公開
米Yahoo!は、大規模データの分散処理を実現するMapReduceをリアルタイムに行うソフトウェア「S4」を、オープンソースとして公開しました。
MapReduceを実行するソフトウェアとして、オープンソースの「Hadoop」がありますが、Hadoopはあらかじめジョブを定義して投入するバッチ処理を前提としていました。
S4は、データをキーとバリューのペアで構成されるストリームデータとして非同期に受け取ることができ、処理結果もキーバリューのペアで構成されたストリームデータとして出力するようになっているとのこと。
この非同期なストリームデータによる入出力が、リアルタイムなMapReduceを実現するフレームワークとしてのS4の特徴といえます。
リアルタイムなMapReduceで何ができる?
リアルタイムなMapReduceにはどのような用途が考えられるのでしょうか? S4の公開を表明したYahoo! Labsの記事「Project: Real-Time MapReduce」では、検索エンジンでの例が2つ紹介されています。
1つは、検索広告のパーソナライゼーション。入力履歴から利用者の意図を推測し、それに合った広告を選択して表示することで、無駄なインプレッションを減らし、クリックレートを劇的に向上できたとのこと。
もう1つは、有名人が死亡するなどの突発的な事件で特定の検索内容が急上昇した場合、それをすぐに察知し、検索結果を見合ったものにする、といったことが挙げられています。
大量のデータをリアルタイムに処理するアプリケーションとしては、自動車や気象センサーといったセンサーからの大量の情報を分析してリアルタイムに渋滞を予測したり、天気予報に応用するといった例や、小売店のPOSデータをリアルタイムに分析して配送計画を動的に立てたり、フラッシュマーケティングに用いる、といったことも考えられそうです。
コア部分はHadoop同様にJavaで開発
S4のプロジェクトページでは、S4を次のように紹介しています。
S4 is a general-purpose, distributed, scalable, partially fault-tolerant, pluggable platform that allows programmers to easily develop applications for processing continuous unbounded streams of data.
S4は多目的、分散処理、スケーラブル、フォールトトレラントでプラグイン対応のプラットフォームです。開発者は、連続的で区切りのないストリームデータ処理のアプリケーションを容易に構築できます。
コア部分はHadoop同様にJavaで作られており、データの入出力部分はレガシーシステムを含むさまざまなアプリケーションと連係可能。すでにYahoo!ではS4を運用しており、十分実績があると説明されています。
あわせて読みたい
グーグル、分散処理のためにデザインされた言語「Sawzall」をオープンソースで公開
≪前の記事
「Silverlightの戦略がシフトした、とはネガティブな意味ではない」マイクロソフトが真意を説明