2009年5月26日火曜日

ストリーム処理が必要なアプリケーションとは?

前回、グリッドとストリーム処理の違いについて述べたが、今回は分散アプリケーションの分類を行い、ストリームコンピューティングのパラダイムが必要なアプリケーションを明確にする。

(1) 疎結合型
 一つ一つのジョブの粒度が大きい、または、通信と計算をオーバーラップできるぐらいの粒度のジョブを伴うアプリケーショ ン。典型的な例としては、保険や金融分野おけるリスク計算(Black Sholes 方程式など)などに使われているモンテカルロシミュレーション、タンパク質の立体構造解析(グラフの同型性問題に落ちる)などが挙げられる。この種のアプリケーションは、 Latency が数百 msec にわたる広域の WAN 上に散在する計算機を束ねるグリッドなどでも動作可能である。また、昨今、Google や Yahoo などで使われている MapReduce や Hadoop などで動作するログ解析、クラスタ分析もこの範疇に入る。

(2) 密結合型

計算機同士が密に結合し、頻繁に通信を行う必要があるアプリケーション。たとえば、分子動力学法 (Molecular Dynamics) など、生体分子間の相互作用を加味し、化学反応を計算機上でシミュレーションするようなアプリケーションでは、計算機が頻繁に通信を行う必要がある。この種のアプリケーションは、低レイテンシの通信環境が求められ、各ノードが密に結合している必要がある。

(3) ストリーム型
(1), (2) は、本質的に長時間の計算量が必要なアプリケーションを並列度を上げることによって高速化するタイプのアプリケーションである。一方、ストリーム型は、全く別のタイプのアプリケーションであり、特徴としては、(a) 複数のセンサーから恒常的にデータが到着する (b) 到着データレートが変化し、Bursty な状況もある (c) (a), (b) のデータから即座にレスポンスを返す, の3つが挙げられる。(a), (b) のレスポンスを高速化するためには、前処理が必要であり、そのような前処理には (1) や (2) のようなアプリケーションが実行される場合もある。また、(1), (2) 同様にノード数を増やすことによって、レスポンスタイムやスケーラビリティを向上できるアプリケーションも多い。例としては、msec の反応が求められるアルゴリズムトレーディング、製造工程や医療分野におけるリアルタイム異常検知、サイバーセキュリティなどが挙げられる。

0 件のコメント:

コメントを投稿