実施形態1.
以下、本発明の第1の実施形態について、図面を参照して説明する。図1は、本発明によるデータストリーム処理方法を用いたDSMSの構成例を示すブロック図である。なお、本実施形態において、データストリーム処理システムは、データストリーム処理方法を用いたDSMSによって実現される。
図1に示すように、本実施形態において、DSMSは、データストリーム処理を行う処理装置2100と、ノードを制御する管理装置2200とを含む。また、処理装置2100は、データストリーム処理の最小単位である複数のノード2110−1,2110−2,・・・,2110−nを含む。
なお、以下、各ノード2110−1,2110−2,・・・,2110−nを包括的に表現する場合、または各ノード2110−1,2110−2,・・・,2110−nのいずれかを指す場合に、単にノード2110という。
また、管理装置2200や処理装置2100に含まれる各ノード2110は、具体的には、プログラムに従って動作するワークステーションやパーソナルコンピュータ等の情報処理装置によって実現される。この場合、管理装置2200と処理装置2100とは、1つの情報処理装置を用いて実現されてもよい。また、管理装置2200を1つの情報処理装置を用いて実現するとともに、処理装置2100を他の1つの情報処理装置を用いて実現してもよい。さらに、管理装置2200を1つの情報処理装置を用いて実現するとともに、処理装置2100に含まれる各ノード2110を、それぞれ別々の情報処理装置を用いて実現してもよい。また、管理装置2200と一部のノード2110が1つの情報処理装置を用いて実現され、他のノード2110がそれぞれ別々の情報処理装置を用いて実現される等、DSMSの実現形態は問わない。
また、DSMSによって実現されるデータストリーム処理システムは、例えば、複数のRFIDタグを荷物等に付与し、各RFIDタグからの位置情報をトレースすることによって荷物を管理する物流管理システムの用途に適用できる。また、データストリーム処理システムは、例えば、GPSセンサ等を搭載した複数の車両(プローブカー)からの速度情報や位置情報を収集し解析することによって、渋滞情報案内や経路探索サービスを提供する交通管理システムの用途に適用できる。また、データストリーム処理システムは、例えば、複数のサーバが生成するログ情報を収集して解析するシステム運用管理システムの用途に適用できる。
本実施形態において、データストリームとは、連続的に時々刻々と生成され続ける大量のデータである。例えば、物流管理システムの用途に適用する場合、データストリーム処理システムは、FRIDタグから連続的に時々刻々と読み取った荷物の識別子や位置情報を、データストリームとして処理する。また、例えば、交通管理システムの用途に適用する場合、データストリーム処理システムは、プローブカーから連続的に時々刻々と収集する車両の識別子や位置情報、速度情報、車両状況情報(ワイパーの動作状態等)を、データストリームとして処理する。また、例えば、システム運用管理システムの用途に適用する場合、データストリーム処理システムは、各サーバから収集するログ情報を、データストリームとして処理する。
ノード2110は、それぞれ、DS入力キュー2111と、DS取得部2112と、DS処理切替部2113と、複数のDS処理部2114−1,2114−2,・・・2114−nを含む。なお、以下、各DS処理部2114−1,2114−2,・・・2114−nを包括的に表現する場合、または単に各DS処理部2114−1,2114−2,・・・2114−nのいずれかを指す場合に、単にDS処理部2114という。
DS入力キュー2111は、具体的には、ハードディスク装置やメモリ等の記憶装置によって実現される。DS入力キュー2111は、ノード2110が入力したデータストリームを、キュー形式で一時的に蓄積するバッファである。
DS取得部2112は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。DS取得部2112は、所定条件が成立すると、DS入力キュー2111から所定量のデータストリームを取り出す機能を備える。また、DS取得部2112は、取り出したデータストリームを、DS処理切替部2113を介してDS処理部2114に転送する機能を備える。
DS処理切替部2113は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。DS処理切替部2113は、DS取得部2112が取り出したデータストリームの転送先のDS処理部2114を切り替える機能を備える。
DS処理部2114は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。DS処理部2114は、DS取得部2112からDS処理切替部2113を介して転送されたデータストリームについて、データストリーム処理を行う機能を備える。
また、各DS処理部2114は、同じ処理対象について処理を行い同じ処理結果(ただし、精度が異なる)を出力するのであるが、同じ処理対象を異なるアルゴリズムに従って処理することによって、それぞれ処理精度と処理負荷とが異なる。
具体的には、DS処理部2114の中には、厳密な解を求めるアルゴリズムに従って処理を行い厳密解を求めるものがある。一方、他のDS処理部2114では、近似的な解を求めるアルゴリズムに従って近似解を求めるものがある。
例えば、データストリームのN個のデータ中に含まれる値がAであるデータの数sumを求める場合に、sumの厳密解及び近似解を求めるアルゴリズムの例を説明する。厳密解を求める場合、DS処理部2114は、例えば、データストリームのN個のデータを全てチェックし、値がAであるデータの個数をカウントする。そして、DS処理部2114は、そのカウント値を解sumとして求める。この場合、DS処理部2114の処理負荷(チェック回数)はNとなり、処理精度は100%となる。
また、近似解を求める場合、DS処理部2114は、例えば、データストリームのN個のデータからランダムに選択したX個のデータをチェックし、X個のデータ中に含まれる値がAであるデータの個数をカウントし、カウント値X_sumを求める。そして、DS処理切替部2113は、sum=X_sum×N÷Xを求めることにより、解sumを求める。この場合、DS処理部2114の処理負荷(チェック回数)はXとなり、処理精度はX÷N×100%となる。ただし、ランダム選択の処理やX_sumからsumを求める処理の負荷は、データチェック処理の負荷に比べて十分に小さいものとする。従って、サンプル数Xを小さくすれば、処理精度が低下する代わりに、処理負荷が低下することが分かる。
また、厳密解及び近似解を求めるアルゴリズムの他の例として、例えば、ある線分ABが正方形の矩形領域Sに含まれるか否かをチェックする場合を説明する。まず、厳密解を求める場合を説明する。例えば、矩形領域の四隅の座標がそれぞれ(x1,y1),(x2,y1),(x1,y2),(x2,y2)であるとする。また、線分ABの両端A,Bの座標をそれぞれ(Ax,Ay),(Bx,By)と表し、線分ABを含む直線fをy=αx+βと表すものとする。この場合に、DS処理部2114は、以下の6つの条件に従って(図2(a)参照)、線分ABが矩形領域Sに含まれるか否かを判定する。
(1)まず、DS処理部2114は、直線fが開区間(x1,x2)において直線y=y1と交点をもてば(視覚的には矩形領域Sの底辺と直線fが交われば)、線分ABが矩形領域Sに含まれると判定する。すなわち、DS処理部2114は、y1=αx+βにおいてx1≦x≦x2であれば、線分ABが矩形領域Sに含まれると判定する。
(2)また、DS処理部2114は、直線fが開区間(x1,x2)において直線y=y2と交点をもてば、すなわち、y2=αx+βにおいてx1≦x≦x2であれば、線分ABが矩形領域Sに含まれると判定する。
(3)また、DS処理部2114は、直線fが開区間(y1,y2)において直線x=x1と交点をもてば、すなわち、y=αx1+βにおいてy1≦y≦y2であれば、線分ABが矩形領域Sに含まれると判定する。
(4)また、DS処理部2114は、直線fが開区間(y1,y2)において直線x=x2と交点をもてば、すなわち、y=αx2+βにおいてy1≦y≦y2であれば、線分ABが矩形領域Sに含まれると判定する。
(5)また、DS処理部2114は、線分ABの両端のうち、少なくとも一方が矩形領域Sの中に存在すれば、線分ABが矩形領域Sに含まれると判定する。すなわち、DS処理部2114は、x1≦Ax≦x2且つy1≦Ay≦y2、又はx1≦Bx≦x2且つy1≦By≦y2であれば、線分ABが矩形領域Sに含まれると判定する。
(6)また、DS処理部2114は、上記(1)〜(5)のいずれの条件にも合致しなければ、線分ABが矩形領域Sに含まれないと判定する。
次に、近似解を求める場合の一例を説明する。例えば、矩形領域Sの一辺の長さをIとし、中心点をOとする。また、DS処理部2114は、線分ABと中心点Oとの距離を計算し、求めた距離をLとする(図2(b)参照)。そして、DS処理部2114は、1÷sqrt(2)を求め、1÷sqrt(2)<Lであれば、線分ABが矩形領域Sに含まれないと判定する。また、DS処理部2114は、1÷sqrt(2)<Lでなければ、線分ABが矩形領域Sに含まれると判定する。なお、1÷sqrt(2)<Lでない場合であっても、線分ABが矩形領域Sに含まれない場合も存在するが、確率が低いため無視する。
次に、近似解を求める場合の他の例を説明する。例えば、DS処理部2114は、線分ABの両端のうち、少なくとも一方が矩形領域Sの中に存在すれば、線分ABが矩形領域Sに含まれると判定する(厳密解算出に用いる条件(5)に相当する)。一方、DS処理部2114は、線分ABの両端のいずれも矩形領域Sの中に存在しなければ、線分ABが矩形領域Sに含まれないと判定する。なお、線分ABの両端のいずれも矩形領域Sの中に存在しなくても、線分ABが矩形領域Sに含まれる場合も存在するが、確率が低いため無視する。
さらに、近似解を求めるアルゴリズムの例について説明する。例えば、DS処理部2114は、近似アルゴリズムを用いて、データストリーム処理を実現するようにしてもよい。この場合、DS処理部2114は、厳密な解ではないが、比較的厳密解に近い近似解を求めるアルゴリズムを用いる。例えば、DS処理部2114は、巡回セールスマン問題における山登り法(HC)や焼きなまし法(SA)等の近似アルゴリズムを用いて、データストリームを処理して近似解を求める。
また、例えば、DS処理部2114は、乱択アルゴリズムで処理をを用いて、データストリーム処理を実現するようにしてもよい。この場合、DS処理部2114は、乱数を用いて確率的な近似解を求めるアルゴリズムを用いる。例えば、DS処理部2114は、円の円周率を計算におけるモンテカルロ法等の近似アルゴリズムを用いて、データストリームを処理して近似解を求める。
また、例えば、DS処理部2114は、処理に制限を付与して近似解を求めてもよい。この場合、DS処理部2114は、処理しやすい条件や処理しやすい制限の上でデータストリームの処理を行い、それらの条件や制限を満たさない処理をスキップするようにしてもよい。例えば、DS処理部2114は、多角形包含判定において厳密な判定が必要な境界付近の処理を放棄して、判定処理するようにしてもよい。
また、例えば、DS処理部2114は、処理の計算精度を落とすことによって、近似解を求めてもよい。この場合、DS処理部2114は、計算の桁数を落として処理を実行する。例えば、DS処理部2114は、浮動小数計算を行う場合に、long double 型で行っていた処理を、float 型やint 型に近似して処理するようにしてもよい。
また、例えば、DS処理部2114は、処理対象のサンプリングレートを落とすことによって、近似解を求めてもよい。この場合、DS処理部2114は、データストリーム中の全データを処理するのではなく、データストリーム中のいくつかのデータのみを処理する。例えば、DS処理部2114は、統計処理において全データではなく無作為に抽出したサンプルデータのみを処理するようにしてもよい。
また、例えば、DS処理部2114は、上記に示した近似解を求めるアルゴリズムのいずれか複数を組み合わせて用いて、データストリームを処理して近似解を求めてもよい。
上記に示した近似解を求める方法は、全て負荷が高い処理を用いて厳密な厳密解を得ることを放棄する代わりに、より低い負荷で比較的厳密解に近い(精度の低い)解を求める方法である。なお、複数のDS処理部2114のうちの1つが、厳密解を求めるDS処理部であってもよいし、ノード2110に厳密解を求めるDS処理部2114が含まれていなくてもかまわない。
管理装置2200は、監視部2201と、監視情報記憶部2202と、監視情報記憶部2202と、判断部2203と判断情報記憶部2204と、切替指示部2205とを含む。
監視部2201は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。監視部2201は、処理装置2100に含まれる各ノード2110の状態を監視する機能を備える。
監視情報記憶部2202は、具体的には、ハードディスク装置やメモリ等の記憶装置によって実現される。監視情報記憶部2202は、監視部2201による監視の結果である監視情報を記憶する。
判断部2203は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。判断部2203は、処理装置2100内のどのノード2110にDS処理部2114を切り替えさせるかを判断する機能を備える。
判断情報記憶部2204は、具体的には、ハードディスク装置やメモリ等の記憶装置によって実現される。判断情報記憶部2204は、切り替えさせるノード2100を判断するために必要な情報である判断情報を記憶する。
切替指示部2205は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。切替指示部2205は、判断部2203の判断結果に基づいて、DS処理部2114の切り替えをノード2110に指示する機能を備える。
なお、本実施形態において、データストリーム処理システムを実現する情報処理装置の記憶装置(図示せず)は、データストリームの処理フローを管理するための各種プログラムを記憶している。例えば、データストリーム処理システムを実現する情報処理装置の記憶装置(図示せず)は、コンピュータに、データストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるDS処理切替処理を実行させるためのデータストリーム処理プログラムを記憶している。
次に、動作について説明する。図3は、DSMSにおけるデータストリームの処理フローの管理処理の一例を示すフローチャートである。まず、DSMSに含まれる管理装置2200の動作について説明する。管理装置2200の監視部2201は、各ノード2110それぞれの状態を監視し(ステップS11)、その監視結果を監視情報記憶部2202に格納させる(ステップS12)。
図4は、監視情報記憶部2202が格納する監視情報を記録するテーブル(T3000)の構造の例を示す説明図である。図4に示すように、監視情報記憶部2202は、監視情報として、ノードID(T3001)、監視項目(T3002)、時刻(T3003)及び値(T3004)を対応付けて記憶する。
ノードID(T3001)は、処理装置2100内のノード2110を識別するためのID(識別子)である。監視項目(T3002)は、監視項目を識別するためのラベルである。時刻(T3003)は、監視項目で示される値を監視し、その監視結果を取得した時刻である。値(T3004)は、監視結果として取得した値である。
監視部2201は、監視する項目(監視項目T3002)として、各ノード2110について、DS入力キュー長の長さ、及びDS取得部2112の失敗率を監視する。なお、これらの値に限られず、監視部2201は、他の項目で示される値を監視してもかまわない。
「DS入力キューの長さ」とは、DS入力キュー2111の全体のサイズに対する、データが格納されている部分のサイズの割合である。すなわち、「DS入力キューの長さ」は、ノード2110が処理しきれず、DS入力キュー2111に溜まっているデータの量を示しているのであるから、ノード2110の混み具合を示す指標である。従って、「DS入力キューの長さ」の値が大きい程、ノード2110が混み合っていることを示している。
「DS取得部の失敗率」とは、DS処理部2114が定期的にDS入力キュー2111を監視する回数に対する、所定条件を満たさずにデータストリームを取り出せなかった回数の割合である。すなわち、「DS取得部の失敗率」とは、ノード2110側には処理の余裕があるにもかかわらず、データそのものが来ていないためにDS入力キュー2111にデータが格納されておらず、データの取り出しに失敗してデータ処理できない状態の割合を示している。従って、「DS取得部の失敗率」は、ノード2110の空き具合を示す指標であり、値が大きい程、ノード2110が空いていることを示している。
例えば、処理装置2100と管理装置2200とが1つの情報処理装置を用いて実現される場合、監視部2201は、所定のタイミングで(例えば、所定時間毎に)、各ノード2110のDS入力キュー2111中のデータ格納部分のサイズを求め、「DS入力キューの長さ」を求めてもよい。また、監視部2201は、DS処理部2114によるDS入力キュー2111の監視回数及びデータ取り出し失敗回数を求め、「DS取得部の失敗率」を求めてもよい。
また、例えば、処理装置2100と管理装置2200とが別々の情報処理装置を用いて実現される場合、監視部2201は、「DS入力キューの長さ」や「DS取得部の失敗率」を、ネットワークを介して各ノード2110から受信するようにしてもよい。
図5は、処理装置2100と管理装置2200とが別々の情報処理装置を用いて実現される場合のDSMSの構成例を示すブロック図である。図5に示すように、処理装置2100と管理装置2200とが別々の情報処理装置を用いて実現される場合、ノード2110は、ノード2110の状態を通知する状態通知部2115を備える。なお状態通知部2115は、具体的には、プログラムに従って動作する情報処理装置のCPU及びネットワークインタフェース部によって実現される。
監視部2201は、例えば、各ノード2110に対して、所定のタイミングで(例えば、所定時間毎に)、ノード2110の状態の送信を要求する要求信号を、ネットワークを介して送信する。すると、ノード2110の状態通知部2115は、要求信号を受信したことに応じて、「DS入力キューの長さ」や「DS取得部の失敗率」を求め、ネットワークを介して管理装置2200に送信する。そして、監視部2201は、受信した「DS入力キューの長さ」や「DS取得部の失敗率」を含む監視情報を、監視情報記憶部2202に格納させる。
また、監視部2201から要求するのではなく、各ノード2110の状態通知部2115は、所定のタイミングで(例えば、所定時間毎に)、自発的に「DS入力キューの長さ」や「DS取得部の失敗率」を求め、ネットワークを介して管理装置2200に送信するようにしてもよい。そして、監視部2201は、受信した「DS入力キューの長さ」や「DS取得部の失敗率」を含む監視情報を、監視情報記憶部2202に格納させるようにしてもよい。
なお、監視部2201は、ステップS11,S12の処理を、所定のタイミングで繰り返し実行する。そのようにすることによって、管理装置2200の監視情報記憶部2202に、各ノード2110の状態を監視した監視情報が蓄積される。
また、判断部2203は、所定のタイミングで、監視情報記憶部2202に集められた監視情報を取得(抽出)する。そして、判断部2203は、抽出した監視情報に基づいて、判断情報記憶部2204が記憶する判断情報に従って、DS処理部2114を切り替えさせるノード2110を判断する。また、判断部2203は、DS処理部2114を切り替えさせると判断したノード2110について、どのDS処理部2114に切り替えさせるかを判断する(ステップS13)。
判断部2203は、DS処理部2114の切り替えの判断方式として、様々な方式を用いることができるが、以下、判断部2203による動作の一例を説明する。図6は、判断部2203によるDS処理部2114の切り替え判定処理の一例を示すフローチャートである。また、図7は、判断情報記憶部2204に格納されている判断情報の構造の一例を示す説明図である。なお、判断情報は、例えば、予めシステム管理者によって作成され、判断情報記憶部2204に登録されている。
図7に示すように、判断情報記憶部2204は、判断情報として、選択DS処理部情報(T5100)、選択可能DS処理部情報(T5200)、及び制約情報(T5300)を記憶する。
選択DS処理部情報(T5100)は、各ノード2110が現在選択しているDS処理部2114を示す情報である。図7(a)に示すように、判断情報記憶部2204は、選択DS処理部情報(T5100)として、ノードID(T5101)及び選択処理部(T5102)を対応付けて記憶する。ノードID(T5101)は、処理装置2100内のノード2110を識別するためのID(識別子)である。選択処理部(T5102)は、現在ノード2110が選択しているDS処理部2114を識別するためのID(識別子)である。
選択可能DS処理部情報(T5200)は、各ノード2110が備え、選択可能なDS処理部2114を示す情報である。図7(b)に示すように、判断情報記憶部2204は、選択可能DS処理部情報(T5200)として、ノードID(T5201)、処理部(T5202)、レベル(T5203)、精度(T5204)及び負荷(T5205)を対応付けて記憶する。
ノードID(T5201)は、処理装置2100内のノード2110を識別するためのID(識別子)である。処理部(T5202)は、ノード2110が備えるDS処理部2114を識別するためのID(識別子)である。レベル(T5203)は、ノード2110が備えるDS処理部2114を、処理精度と処理負荷とを基準に順位付けした順序を示す情報である。すなわち、処理精度と処理負荷との両方が高い程、レベル(T5203)の値が高くなる。
精度(T5204)は、そのDS処理部2114の処理の精度を示す情報である。すなわち、精度(T5204)の値が高い程、より厳密解に近い処理結果を出力するDS処理部2114であることを示す。負荷(T5205)は、そのDS処理部2114の処理の負荷を示す情報である。すなわち、負荷(T5205)の値が高い程、DS処理部2114が処理の実行に多くのシステムリソースを消費することを示す。
制約情報(T5300)は、ノードが満たさなくてはならない制約を示す情報、又はノード同士がが満たさなくてはならない制約を示す情報である。図7(c)に示すように、判断情報記憶部2204は、制約情報(T5300)として、制約条件(T5301)及び対象ノードID(T5302)を対応付けて聞くする。
制約条件(T5301)は、満たすべき制約条件の種類を示すラベルである。なお、制約条件には、以下のような種類の条件が考えられるが、これらに限定するものではない。
(1)同期:複数のノード同士のスループットが同程度であるという制約を示す条件である。例えば、図1に示す例では、処理装置2100において、ノード2110−2とノード2110−3は並列状態に配置されている。この場合、ノード2110−2,2110−3の後段に接続されているノード2110−nが両方の処理結果を用いて処理を行う場合、ノード2110−2とノード2110−3のうちの一方のノードの処理が早く進んでも、他方のノードの処理が遅ければ、ノード211−nは処理を進められない。そのため、ノードの混雑は解消できない。従って、この場合、2つのノード2110−2,2110−3の負荷が同程度であることが、制約条件として求められる。なお、同程度であるとは、例えば、2つのノード2110−2,2110−3間の処理負荷の差が、10パーセント程度(好ましくは5パーセント程度)であることである。
(2)優先:対象ノードのDS処理部2114のレベルが、他のノードに比べて相対的に優先して高いという制約を示す条件である。例えば、図1に示す例では、処理装置2100において、ノード2110−1はネットワークの先頭に配置されている。この場合、このノード2110−1の処理精度が極端に低い場合、ノード2110−1の後段のノード2110−2〜S110−nの処理精度を上げても、処理の元となるデータの処理精度が低いため、さほど処理精度があがらず効率が悪いという場合がある。従って、この場合、ノード2110−1が他のノードと比べて優先して高いレベル(高い処理精度)の処理を実行することが、制約条件として求められる。
(3)精度:対象ノードのDS処理部2114の処理精度が、絶対的に一定値以上でなければならないという制約を示す条件である。例えば、制約条件「優先」と同様の理由から、又はDSMS自体に求められるサービスレベル(精度)を維持するために、絶対的にこれ以上の処理精度が求められるという制約条件を示している。
(4)負荷:対象ノードのDS処理部2114の負荷が、絶対的に一定値以下でなければならないという制約を示す条件である。例えば、主にDSMS自体に求められるサービスレベル(速度)を維持するために、絶対的にこれ以下の処理負荷が求められるという制約条件を示している。
なお、制約条件(T5301)として設定される精度制約や負荷制約は、ノード単体に対する制約ではなく、複数のノードからなるデータフロー経路に対して課される制約であってもかまわない。例えば、あるデータフロー経路上にあたるノード全ての負荷の平均が一定値以下でなければならないことを示す制約条件等を、予め判断情報記憶部2204に設定していてもよい。
対象ノードIT(5302)は、制約条件の対象となるノードを識別するためのID(識別子)である。
ステップS13において、判断部2203は、まず、ノード2110−1、2110−2,・・・,2110−nから、1つの判断対象のノードを選択する(ステップS4001)。この場合、判断部2203は、例えば、選択方法として、単純ラウンドロビン(全てのノードを順番に選択する)を用いて、ノードを選択するのが最も容易である。なお、判断部2203は、単純ラウンドロビンに限らず、重み付きラウンドロビンやランダム選択等の他の選択方法を用いて、ノードを選択してもかまわない。
次いで、判断部2203は、選択したノードに関する過去一定期間の監視情報を監視情報記憶部2202から取得(抽出)する(ステップS4002)。次いで、判断部2203は、取得した監視情報から、選択ノードのDS入力キュー2111の過去一定期間の平均キュー長を計算する。そして、判断部2203は、求めた平均キュー長が所定値以上か否かを判定する(ステップS4003)。
過去一定期間の平均キュー長が所定値以上であれば、判断部2203は、選択ノードが混雑している状態であると判断し、選択ノードのDS処理部2114のレベル(例えば、処理精度のレベル)を下げるように切り替え指示すると判定する。この場合、判断部2203は、まず、選択ノードが現在選択しているDS処理部2114の情報を、判断情報記憶部2204が記憶する選択DS処理部情報(T5100)から取得(抽出)する。また、判断部2203は、選択可能なDS処理部2114の情報を、判断情報記憶部2204が記憶する選択可能DS処理部情報(T5200)から取得(抽出)する。そして、判断部2203は、抽出したこれらの情報に基づいて、現在選択しているDS処理部2114よりレベルの低いDS処理部2114を選択ノードが備えているか否かを判定する(ステップS4105)。
選択ノードがよりレベルの低いDS処理部2114を備えていると判定すれば、判断部2203は、次に、その低レベルDS処理部2114を仮に選択した場合に、制約条件を満たすか否かを判定する(ステップS4106)。この場合、判断部2203は、選択ノードが満たすべき制約を示す情報を、判断情報記憶部2204が記憶する制約情報(T5300)から取得(抽出)する。そして、判断部2203は、既に取得している低レベルDS処理部2114の情報等と照らし合わせて、抽出した情報に示される制約条件を満たすか否かを判定する。
低レベルDS処理部2114を選択した場合に制約条件を満たすか否かの判定の結果、選択ノードが満たすべき制約情報を満たしていると判定すれば、判断部2203は、DS処理部2114のレベルを下げるように切り替え指示すると判定する(ステップS4107)。そして、ステップS4008に移行する。
一方、ステップS4003において、求めた過去一定期間の平均キュー長が所定値より小さければ、判断部2203は、選択ノードが混雑している状態ではないと判断する。この場合、判断部2203は、次に、監視情報記憶部2202から取得(抽出)した監視情報から、選択ノードのDS取得部2114の過去一定期間の平均失敗率を計算する。そして、判断部2203は、求めた平均失敗率が所定値以上か否かを判定する(ステップS4004)。
過去一定期間の平均失敗率が所定値以上であれば、判断部2203は、選択ノードが空いている状態であると判断し、選択ノードのDS処理部2114のレベル(例えば、処理精度のレベル)を上げるように切り替え指示すると判定する。の場合、判断部2203は、まず、選択ノードが現在選択しているDS処理部2114の情報を、判断情報記憶部2204が記憶する選択DS処理部情報(T5100)から取得(抽出)する。また、判断部2203は、選択可能なDS処理部2114の情報を、判断情報記憶部2204が記憶する選択可能DS処理部情報(T5200)から取得(抽出)する。そして、判断部2203は、抽出したこれらの情報に基づいて、現在選択しているDS処理部2114よりレベルの高いDS処理部2114を選択ノードが備えているか否かを判定する(ステップS4205)。
選択ノードがよりレベルの高いDS処理部2114を備えていると判定すれば、判断部2203は、次に、その高レベルDS処理部2114を仮に選択した場合に、制約条件を満たすか否かを判定する(ステップS4206)。この場合、判断部2203は、選択ノードが満たすべき制約を示す情報を、判断情報記憶部2204が記憶する制約情報(T5300)から取得(抽出)する。そして、判断部2203は、既に取得している高レベルDS処理部2114の情報等と照らし合わせて、抽出した情報に示される制約条件を満たすか否かを判定する。
高レベルDS処理部2114を選択した場合に制約条件を満たすか否かの判定の結果、選択ノードが満たすべき制約情報を満たしていると判定すれば、判断部2203は、DS処理部2114のレベルを上げるように切り替え指示すると判定する(ステップS4207)。そして、ステップS4008に移行する。
一方、ステップS4004において、求めた過去一定期間の平均失敗率が所定値より小さければ、判断部2203は、DS処理部2114のレベルの切り替え指示を行わないと判定する(ステップS4007)。また、ステップS4105において、DS処理部2114のレベルを下げられない(よりレベルの低いDS処理部2114を選択ノードが備えていない)と判定したときも、判断部2203は、DS処理部2114のレベルの切り替え指示を行わないと判定する(ステップS4007)。また、ステップS4106において制約条件を満たさないと判定したときも、判断部2203は、DS処理部2114のレベルの切り替え指示を行わないと判定する(ステップS4007)。
また、ステップS4205において、DS処理部のレベルを上げられない(よりレベルの高いDS処理部2114を選択ノードが備えていない)と判定したときも、判断部2203は、DS処理部2114のレベルの切り替え指示を行わないと判定する(ステップS4007)。また、ステップS4206において制約条件を満たさないと判定したときも、判断部2203は、DS処理部2114のレベルの切り替え指示を行わないと判定する(ステップS4007)。
最後に、判断部2203は、ステップS4007、ステップS4107、又はステップS4207で判定した判定結果(DS処理部2114の切り替え指示の判定結果)を、切替指示部2205に転送(出力)する(ステップS4008)。
なお、判断部2203は、上記に示したステップS4001〜S4008の処理を、ノード2110−1,2110−2,・・・,2110−nの全てに対して繰り返し実行する。
次いで、切替指示部2205は、判断部2203の判断結果に従い、DS処理部2114の切り替えを指示すると判定した場合には、対象となるノード2110に対して、DS処理切替部2114の切り替えを指示する。すると、後述するように、ノード2110のDS処理切替部2113は、管理装置2200からの切り替え指示に従って、データストリームの処理に用いるDS処理部2114を切り替える。そのようにすることによって、切替指示部2205は、対象となるノード2110に対して、DS処理部2114を切り替えさせる。
なお、ステップS14において、管理装置2200とノード2110とが別々の情報処理装置によって実現される場合には、切替指示部2205は、DS処理部2114の切り替えを指示する指示情報を、ネットワークを介してノード2110に送信する。すると、後述するように、ノード2110のDS処理切替部2113は、管理装置2200から受信した指示情報に示される切り替え指示に従って、データストリームの処理に用いるDS処理部2114を切り替える。
また、切替指示部2205は、同時に、判断情報記憶部2204が記憶する選択DS処理部情報(T5100)のうち、切り替え対象となるノードの選択処理部(T5102)を、切り替えたDS処理部2114のIDに書き換える。
次に、ノード2110の動作について説明する。ノード2110は、データストリームの入力がある毎に、外部又は処理装置内の他のノードからデータストリームを受け取り(入力し)、その入力したデータストリームをキュー形式でDS入力キュー2111に蓄える(格納する)。
また、DS取得部2112は、DS入力キュー2111を監視し、所定条件が成立すれば、DS入力キュー2111から所定量のデータストリームを取り出す。そして、DS取得部2112は、取り出したデータストリームを、DS処理切替部2113に転送(出力)する。
所定条件とは、例えば、所定時間毎(例えば、10分毎)や、データが所定量(例えば、10個)溜まったこと等である。所定量のデータとは、例えば、その時点でDS入力キュー2111に格納されているデータ先頭から所定個(例えば、10個)のデータ等である。
DS処理切替部2113は、DS取得部2112から受け取ったデータを、複数のDS処理部2114のうち、管理装置2200から選択指示されたDS処理部2114に対してのみ、さらにデータを転送(出力)する。
複数のDS処理部2114のうち、DS処理切替部2113からデータを受け取ったDS処理部2114は、受け取ったデータを処理する。そして、DS処理部2114は、データストリーム処理したデータを、外部又は処理装置内の次のノードのDS入力キュー2111に送る(出力する)。
また、ノード2110のDS処理切替部2113は、管理装置2200からDS処理部2114の切り替え指示を受けた場合には、管理装置2200からの切り替え指示に従って、データストリームの処理に用いるDS処理部2114を切り替える(ステップS15)。なお、この場合、管理装置2200とノード2110とが別々の情報処理装置によって実現される場合には、処理切替部2113は、管理装置2200からネットワークを介して受信した指示情報に示される切り替え指示に従って、データストリームの処理に用いるDS処理部2114を切り替える。
そして、その後、ノード2110は、切り替え後のDS処理部2114を用いて、データストリームの処理を行う(ステップS16)。
以上のように処理を実行することで、各ノードの処理精度と処理負荷とを制御し、その制御の結果、各ノードの消費システムリソース量を明示的に変更することなく、スループットを制御することができる。
以上のように、本実施形態によれば、処理装置2100に含まれる各ノード2110は、連続して入力される大量の情報であるデータストリームを逐次処理する複数のDS処理部2114を含む。そして、各ノード2110のデータストリームの処理状態に応じて、データストリームの処理に用いるDS処理部2114を切り替える処理を実行する。そようにすることによって、各ノード2110の処理制度と処理負荷とを制御することができる。また、各ノード2110の処理精度と処理負荷とを制御することで、ノード2110の消費システムリソース量を明示的に変更することなく、スループット制御を行なうことができる。また、各ノード2110の状況の監視結果に応じて、各ノード2110の処理精度と処理負荷とを繰り返し制御することによって、処理装置2100全体のスループットを向上させることができる。
また、本実施形態によれば、上記のような処理を実行することによって、スループットの低いノードの処理精度を下げる代わりに処理負荷を下げることによって、スループットを向上させることができる。
例えば、非特許文献1や非特許文献2に記載されたDSMSを用いた場合、スループットの高いノード2110の後ろにスループットの低いノード2110が接続されると、スループットの遅いノード2110のDS入力キュー2111内のデータの消費速度より、前段のスループットの高いノード2110によるデータの追加速度が上回る状態が発生してしまう。そのため、DS入力キュー2111の消費速度より追加速度が速い場合、DS入力キュー2111内のデータは増え続け、やがてオーバーフローを起こし、DSMSは異常停止してしまうという問題があった。
DSMS全体のスループット律束や、DS入力キュー2111のオーバーフローが、一部のノード2110のスループット格差に基づくものであれば、スループットの高いノード2110に割り当てているシステムリソース(メモリやCPUパワー等)を少なくし、スループットの低いノード2110に多くのシステムリソースを割り当てることにより、スループット格差を是正し、防ぐことが可能な場合もある。しかし、割り当てるシステムリソースを適切に配分するのは困難であるという問題がある。
これに対して、本実施形態によれば、スループットの高いノードのスループットを下げることで、DSMSにおける各ノード2110のスループット格差を是正し、DSMS全体のスループットを向上させることができる。また、各ノード2110のDS入力キュー2111のオーバフローを防ぎ、DSMSの異常停止を防ぐことができる。
また、例えば、非特許文献1や非特許文献2に記載されたDSMSを用いた場合、外部からの入力データストリームが時々刻々と変化するため、時には非常に大量のデータが入力される場合もある。この場合、入力データストリームのデータ量がDSMSの全システムリソースを用いても処理しきれない量の場合には、処理装置2100のどこかで上記したようなDS入力キュー2111のオーバーフローが発生してしまうおそれがある。さらに、システムリソースに余裕がないため、そのオーバーフローを解消できないおそれがある。そのため、DSMSが異常停止してしまうという問題があった。
これに対して、本実施形態によれば、システム全体のノードの処理精度を下げる代わりに処理負荷を下げて、システム全体の消費システムリソースを変更することなく、システム全体のスループットを向上させる。そのため、大量のデータストリームが入力されても、DSMSの異常停止を防ぐことができる。
実施形態2.
次に、本発明の第2の実施形態について図面を参照して説明する。図8は、第2の実施形態におけるデータストリーム処理方法を用いたDSMSの構成例を示すブロック図である。図8に示すように、本実施形態において、DSMSは、データストリーム処理を行う処理装置2100と、ノードを制御する管理装置6200とを含む。なお、本実施形態において、処理装置2100の構成及び機能は、第1の実施形態で示した処理装置2100と同様であるため、説明を省略する。
管理装置6200は、監視部2201と、監視情報記憶部2202と、ルールベース判断部6203と、判断情報記憶部6204と、制御ルール記憶部6206と、切替指示部2205とを含む。図8に示すように、本実施形態では、管理装置6200が、第1の実施形態で示す管理装置2200の構成要素に加えて、制御ルール記憶部6206を含む点で、第1の実施形態と異なる。また、第1の実施形態で示した判断部2203に代えて、ルールベース判断部6203を含む点で、第1の実施形態と異なる。さらに、判断情報記憶部6204が記憶する情報の内容が、第1の実施形態で示した判断情報記憶部2204が記憶する情報の内容と異なる。
監視部2201は、第1の実施形態と同様に、各ノードの状態を監視する機能を備える。監視情報記憶部2202は、第1の実施形態と同様に、監視部2201による監視の結果である監視情報を記憶する。
ルールベース判断部6203は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。ルールベース判断部6203は、処理装置2100内のどのノード2100のDS処理部2114を切り替えさせるかを判断する機能を備える。
判断情報記憶部6204は、切り替えさせるノード2100を判断するために必要な情報である判断情報を記憶する。
制御ルール記憶部6206は、具体的には、ハードディスク装置やメモリ等の記憶装置によって実現される。制御ルール記憶部6206は、ルールベース判断部6203の動作を制御するためのルールである制御ルールを記憶する。
切替指示部2205は、ルールベース判断部6203の判断結果に基づいて、DS処理部2114の切り替えをノード2110に指示する機能を備える。
次に、動作について説明する。まず、DSMSに含まれる管理装置6200の動作について説明する。なお、図8に示す監視部2201と、監視情報記憶部2202と、切替指示部2205とを用いたDSMSの動作(図3に示すステップS11,S12,S14の動作)は、第1の実施形態で示した動作と同様であるため、説明を省略する。
ステップS13において、ルールベース判断部6203は、所定のタイミングで、監視情報記憶部2202に集められた監視情報を取得(抽出)する。そして、ルールベース判断部6203は、抽出した監視情報に基づいて、判断情報記憶部6204が記憶する判断情報に従って、DS処理部2114を切り替えさせるノード2110を判断する。また、ルールベース判断部6203は、DS処理部2114を切り替えさせると判断したノード2110について、どのDS処理部2114に切り替えさせるかを判断する。この場合、本実施形態では、ルールベース判断部6203は、所定のルールベース判断処理を用いて、DS処理部2114の切り替えを判断する。
ルールベース判断部6203は、様々な方式を用いてルールベース判断処理を実現することができる。本実施形態では、図9〜図11を用いて、ルールベース判断部6203の動作の一例として、ユニフィケーション有り優先度付きルールベースエンジンとして動作する場合を説明する。
図9は、ルールベース判断部6203によるDS処理部2114の切り替え判定処理の一例を示すフローチャートである。また、図10は、判断情報記憶部6204に格納されている判断情報の構造の一例を示す説明図である。また、図11は、制御ルール記憶部6206に格納されている制御ルールの情報の構造の一例を示す説明図である。なお、判断情報は、例えば、予めシステム管理者によって作成され、判断情報記憶部6204に登録されている。また、制御ルールの情報は、例えば、予めシステム管理者によって作成され、制御ルール記憶部6206に登録されている。
図10に示すように、判断情報記憶部6204は、判断情報として、選択DS処理部情報(T8100)、及び選択可能DS処理部情報(T8200)を記憶する。図10に示すように、本実施形態では、判断情報記憶部6204は、第1の実施形態で示した判断情報記憶部2204が記憶する情報の内容のうち、制約情報を記憶していない点で、第1の実施形態と異なる。
なお、選択DS処理部情報(T8100)、及び選択可能DS処理部情報(T8200)の情報内容は、第1の実施形態で示した選択DS処理部情報(T5100)、及び選択可能DS処理部情報(T5200)と同様であるため、説明を省略する。
図11に示すように、制御ルール記憶部6206は、制御ルールを示すルール情報(T9000)を記憶する。ルール情報(T9000)は、ルールベース判断部6203の動作を制御するためのルールを示す情報である。図11に示すように、制御ルール記憶部6206は、ルール情報(T9000)として、ルールID(T9001)、ヘッド(T9002)、ボディ(T9003)及び優先度(T9004)を対応付けて記憶する。
ルールID(T9001)は、ルールを識別するためのID(識別子)である。ヘッド(T9002)は、ルールのヘッドを示す情報である。ボディ(T9003)は、ルールのボディを示す情報である。なお、ヘッド(T9002)とボディ(9003)との関係は、「ボディ(T9003)が成立すれば、ヘッド(T9002)が成立する」という論理学の命題の形式に対応している。
優先度(T9004)は、ルールの優先度を示す情報である。従って、ルールベース判断部6203は、処理の結果、複数のルールが成立すると判断した場合、この優先度(T9004)に基づいて、複数のルールから優先度の高い1つのルールを解として選択する。
なお、本実施形態では、第1の実施形態では判断情報記憶部2204に格納されていた制約情報(T5300)が、ルールとして制御ルール記憶部6206に格納されていることになる。従って、本実施形態では、制御ルール記憶部6206が記憶するルール情報(T9000)に含まれるID6〜9のルールが、制約情報(T5300)に相当する。
ステップS13において、ルールベース判断部6203は、まず、ノード2110−1、2110−2,・・・,2110−nから、1つの判断対象のノードを選択する(ステップS7001)。この場合、ルールベース判断部6203は、例えば、選択方法として、単純ラウンドロビン(全てのノードを順番に選択する)を用いて、ノードを選択するのが最も容易である。なお、ルールベース判断部6203は、単純ラウンドロビンに限らず、重み付きラウンドロビンやランダム選択等の他の選択方法を用いて、ノードを選択してもかまわない。
次いで、ルールベース判断部6203は、選択したノードに関する過去一定期間の監視情報を監視情報記憶部2202から取得(抽出)する(ステップS7002)。次いで、ルールベース判断部6203は、選択したノードに関して、現在選択しているDS処理部2114の情報、及び選択可能なDS処理部2114の情報も、判断情報記憶部6204から取得(抽出)する(ステップS7003)。
次いで、ルールベース判断部6203は、取得した情報を条件として、制御ルール記憶部6206に格納されているルール群のボディと照らし合わせて、ユニフィケーションを行いながら成立するルールを検索する(ステップS7004)。
例えば、選択したノードがノードID「ノード1」であり、ルールベース判断部6203は、過去10分間の平均キュー長が70%である内容の監視情報を抽出したものとする。また、ルールベース判断部6203は、判断情報として、現在のDS処理部2114が選択処理部「1」である旨の情報を、判断情報記憶部6204の選択DS処理部情報(T8100)から抽出するものとする(図10(a)参照)。また、ルールベース判断部6203は、選択可能なDS処理部2114が処理部「1」(レベルL2、精度100、負荷100)である旨の情報と、処理部「2」(レベルL1、精度90、負荷50)である旨の情報を、判断情報記憶部6204の選択可能処理部情報(T8200)から抽出するものとする(図10(b)参照)。
ステップS7004において、ルールベース判断部6203は、上記の各情報を制御ルール記憶部6206に格納されているルール群と照らし合わせて、各ルールの成立の有無を以下のように判断する。
ルールベース判断部6203は、ルール1については、単純に成立すると判断する。また、ルールベース判断部6203は、ルール2については、単純に成立しないと判断する。また、ルールベース判断部6203は、ルール3については、選択ノードがノード1であるため、対象とならず成立しないと判断する。
なお、このルール1〜3の成立の有無を判断する処理は、第1の実施形態で示した判断部2203が実行する処理であるステップS4003の処理に相当する。
また、ルールベース判断部6203は、ルール4については、現状選択されている処理部「1」(レベルL2)より低レベルの処理部「2」(レベルL1)が存在するため、成立すると判断する。
また、ルール5のボディに示される条件「低レベル処理部がある」は、ルール4のヘッドに示される条件に相当する。そのため、ルール5のボディは、「NOT(任意ノード&ルール4が成立)」と置換できる。このように、複数のルールを統一化することをユニフィケーションという。図10及び図11に示す例では、ルールベース判断部6203は、ルール4が成立すると判断するため、連鎖的にルール5のボディのNOTの内部が成立すると判断する。従って、ルールベース判断部6203は、NOTの内部が成立すると判断するため、ルール5のルール全体としては成立しないと判断する。
なお、このルール4,5の成立の有無を判断する処理は、第1の実施形態で示した判断部2203が実行する処理であるステップS4105の処理に相当する。
また、ルールベース判断部6203は、ルール6については、選択ノードがノード「1」であるため、成立すると判断する。なお、このルール6の成立の有無を判断する処理は、第1の実施形態で示した判断部2203が実行する処理であるステップS4106の処理に相当する。
また、ルールベース判断部6203は、ルール7〜9については、選択ノードがノード「1」であるため、成立しないと判断する。
よって、図10及び図11に示す例では、ルールベース判断部6203は、ルール1の「処理部レベルを下げる」と、ルール6の「処理部レベルを下げない」というルールが成立すると判断する。なお、ルール4も成立しているが、ルール5の成立の有無の判断処理を行う過程のルール成立であり、ヘッドに示される条件も、処理部レベルの上下を指示するものではないため考慮しない。
次いで、ルールベース判断部6203は、ステップS7004の判断処理の結果、処理部レベルの上下を指示するルールがいくつ成立したかを判定する(ステップS7005)。成立したルールが1つである場合には、ルールベース判断部6203は、その成立したルールを、DS処理部2114の切り替え指示に用いる結果ルールとして決定する。
成立したルールが複数ある場合には、ルールベース判断部6203は、成立したルールの優先度を基準に、DS処理部2114の切り替え指示に用いる結果となるルールを1つに絞り込む(ステップS7006)。図10及び図11に示す例では、成立したルー
ル1とルール6とに関しては、それぞれ優先度が50と70である。よって、ルールベース判断部6203は、優先度が高いルール6が、DS処理部2114の切り替え指示に用いる結果となるルールであると決定する。そして、ルールベース判断部6203は、そのルール6のヘッドである「処理部レベルを下げない」という判定結果を、ノード「1」に対する判定結果として決定する。
なお、例えば、ステップS7002で過去10分間の平均キュー長が90%である内容の監視情報を抽出した場合には、ルールベース判断部6203は、ステップS7004において、ルール2も成立すると判断する。この場合、ルール2の優先度は80であるため、ルール2は、ルール6より優先される。よって、ルールベース判断部6203は、ルール2を、DS処理部2114の切り替え指示に用いる結果ルールであると決定する。そして、ルールベース判断部6203は、そのルール2のヘッドである「処理部レベルを下げる」という判定結果を、ノード「1」に対する判定結果として決定する。
また、例えば、ステップS7003で現在のDS処理部2114が選択処理部「2」である旨の判断情報を抽出した場合には、ルールベース判断部6203は、ステップS7004において、ルール4が成立せず、ユニフィケーションの結果、ルール5が成立すると判断する。この場合、ルール5の優先度は100であるため、全てのルールより優先される。よって、ルールベース判断部6203は、ルール5を、DS処理部2114の切り替え指示に用いる結果ルールであると決定する。そして、ルールベース判断部6203は、そのルール5のヘッドである「処理部レベルを下げない」という判定結果を、ノード「1」に対する判定結果として決定する。
最後に、ルールベース判断部6203は、ステップS7005もしくはステップS7006で決定した結果ルールのヘッドに示される内容を、判定結果(DS処理部2114の切り替え指示の判定結果)として、切替指示部2205に転送(出力)する(ステップS7007)。
なお、ルールベース判断部6203は、上記に示したステップS7001〜S7007の処理を、ノード2110−1,2110−2,・・・,2110−nの全てに対して繰り返し実行する。
また、本実施形態において、各ノード2110の動作も、第1の実施形態で示した動作と同様であるため、説明を省略する。
以上のように処理を実行することで、より柔軟な判断方法を用いて各ノードの処理精度と処理負荷とを制御し、その制御の結果、各ノードの消費システムリソース量を明示的に変更することなく、スループットを制御することができる。
以上のように、本実施形態によれば、第1の実施形態で示した効果に加えて、より柔軟な制御を容易に実現して、DSMS全体のスループットを向上させることができる。
例えば、第1の実施形態に示したデータストリーム処理システムでは、ステップS4200における「過去一定期間の監視情報」やステップS4003における「平均キュー長が一定値以上」等の判定パラメータを固定的に設定している。また、判定方式も「平均キュー長」の判定処理の次に「平均失敗率」の判定処理を行うように固定的に設定している。そのため、よりスループットの判定処理の柔軟に行えるようにすることが望ましい。また、制約条件の解消方法もアドホックになってしまうという点で、改善の余地がある。
これに対して、本実施形態では、処理フローを変えることなく、ルールを追加するだけで、スループット判定に用いる判定パラメータを容易に変更することができ、柔軟性を向上させることができる。例えば、ルール3を追加することにより、後から、ノード4のみ過去30分間の平均キュー長でも判定するという処理を追加することができる。
従って、本実施形態では、第1の実施形態で示した効果に加えて、より柔軟な制御を容易に実現できるという効果を得ることができる。
実施形態3.
次に、本発明の第3の実施形態について図面を参照して説明する。図12は、第3の実施形態におけるデータストリーム処理方法を用いたDSMSの構成例を示すブロック図である。図12に示すように、本実施形態において、DSMSは、データストリーム処理を行う処理装置2100と、ノードを制御する管理装置10200とを含む。なお、本実施形態において、処理装置2100の構成及び機能は、第1の実施形態で示した処理装置2100と同様であるため、説明を省略する。
管理装置10200は、監視部2201と、監視情報記憶部2202と、ルールベース判断部6203と、判断情報記憶部6204と、制御ルール記憶部6206と、切替指示部2205と、検証部10207と、更新部10208とを含む。図12に示すように、本実施形態では、管理装置10200が、第2の実施の形態で示した管理装置6200の構成要素に加えて、検証部10207及び更新部10208を含む点で、第2の実施形態と異なる。
監視部2201は、第1の実施形態及び第2の実施形態と同様に、各ノードの状態を監視する機能を備える。監視情報記憶部2202は、第1の実施形態及び第2の実施形態と同様に、監視部2201による監視の結果である監視情報を記憶する。
ルールベース判断部6203は、第2の実施形態と同様に、処理装置2100内のどのノード2100のDS処理部2114を切り替えさせるかを判断する機能を備える。判断情報記憶部6204は、第2の実施の形態と同様に、切り替えさせるノード2100を判断するために必要な情報である判断情報を記憶する。制御ルール記憶部6206は、第2の実施形態と同様に、ルールベース判断部6203の動作を制御するためのルールである制御ルールを記憶する。
切替指示部2205は、第2の実施形態と同様に、ルールベース判断部6203の判断結果に基づいて、DS処理部2114の切り替えをノード2110に指示する機能を備える。
検証部10207は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。検証部10207は、DS処理部2114切り替え後のノード2110のデータストリームの処理の結果を検証する機能を備える。
更新部10208は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。更新部10208は、検証部10207の検証結果に基づいて、制御ルール記憶部6206が記憶する制御ルールを更新する機能を備える。
次に、動作について説明する。まず、DSMSに含まれる管理装置10200の動作について説明する。なお、図12に示す監視部2201と、監視情報記憶部2202と、ルールベース判断部6203と、切替指示部2205とを用いたDSMSの動作(図3に示すステップS11,S12,S14の動作。図9に示すステップS7001〜S7007の動作)は、第2の実施形態で示した動作と同様であるため、説明を省略する。
検証部10207は、ルールベース判断部6203が判断したDS処理部2114の切替指示を適用した結果、各ノード2110のデータストリーム処理の状況が改善したのか、悪化したのかを判定する。
図13は、検証部10207による検証処理の一例を示すフローチャートである。検証部10207は、ルールベース判断部6203が監視情報2202を取得する場合と同様のタイミングで、監視情報記憶部2202から監視情報を取得(抽出)する。(ステップS11010)。なお、このように検証部10207が検証用に抽出する監視情報を、以下、監視情報(前)という。
次いで、検証部10207は、ルールベース判断部6203が判断を行った後、最終的な結果と判断したルールの情報を、制御ルール記憶部6206から取得(抽出)する(ステップS11020)。
次いで、検証部10207は、一定時間が経過し(例えば、処理装置2100に含まれる全てのノード2110に対する監視情報(前)を抽出したら)、ルールベース判断部6203が判断したDS処理部2114の切替指示が適用されて所定時間が経過すると、再び、監視情報記憶部2202から監視情報を取得(抽出)する(ステップS11030)。なお、このように検証部10207が所定時間経過後に再び検証用に抽出する監視情報を、以下、監視情報(後)という。
次いで、検証部10207は、取得(抽出)した結果ルールのヘッドに示される条件が「処理部レベルを上げる」、「処理部レベルを下げる」又は「処理部レベルを変えない」のいずれであるかを判定する(ステップS11040)。
ヘッドに示される条件が「処理部レベルを上げる」である場合、ルールベース判断部6203による判断を適用した結果、判断対象となったノード2110の平均失敗率が低くなっていることが望ましい。よって、検証部10207は、監視情報(前)と監視情報(後)とを比較し、監視情報(前)より、監視情報(後)の判断対象のノード2110の平均失敗率が高いか低いかを判定する(ステップS11051)。
平均失敗率が一定値以上低くなっていれば、DS処理部2114切り替え後の状態が望ましい状態であり、検証部10207は、ルールベース判断部6203が判断したルールの適用が効果的であったと判断する(ステップS11061)。一方、平均失敗率が一定値以上高くなっていれば、DS処理部2114切り替え後の状態が望ましくない状態であり、検証部10207は、ルールベース判断部6203が判断したルールの適用が逆効果であったと判断する(ステップS11071)。また、どちらでもなければ(平均失敗率が一定値以上低くも高くもなっていなければ)、検証部10207は、ルールベース判断部6203が判断したルールの適用がそれほど効果的でなかったと判断する(ステップS11081)。
また、ヘッドに示される条件が「処理部レベルを下げる」である場合、ルールベース判断部6203による判断を適用した結果、判断対象となったノード2110の平均キュー長が短くなっていることが望ましい。よって、検証部10207は、監視情報(前)と監視情報(後)とを比較し、監視情報(前)より、監視情報(後)の判断対象のノード2110の平均キュー長が長いか短いかを判定する(ステップS11053)。
平均キュー長が一定値以上短くなっていれば、DS処理部2114切り替え後の状態が望ましい状態であり、検証部10207は、ルールベース判断部6203が判断したルールの適用が効果的であったと判断する(ステップS11063)。一方、平均キュー長が一定値以上長くなっていれば、DS処理部2114切り替え後の状態が望ましくない状態であり、検証部10207は、ルールベース判断部6203が判断したルールの適用が逆効果であったと判断する(ステップS11073)。また、どちらでもなければ(平均キュー長が一定値以上短くも長くもなっていなければ)、検証部10207は、ルールベース判断部6203が判断したルールの適用がそれほど効果的でなかったと判断する(ステップS11083)。
また、ヘッドに示される条件が「処理部レベルを変えない」である場合、ルールベース判断部6203による判断を適用した結果、判断対象となったノード2110の状態が、現状のままであることが望ましい。よって、検証部10207は、監視情報(前)と監視情報(後)とを比較し、監視情報(前)と監視情報(後)との判断対象のノード2110の状態(例えば、平均失敗率と平均キュー長との両方)に一定以上の差があるか否かを判定する(ステップS11052)。
ノード2110の状態に一定以上の差がなければ望ましい状態であり、検証部10207は、ルールベース判断部6203が判断したルールの適用が効果的であったと判断する(ステップS11062)。一方、ノード2110の状態に一定以上の差があれば望ましくない状態であり、検証部10207は、ルールベース判断部6203が判断したルールの適用が逆効果であったと判断する(ステップS11072)。また、どちらでもなければ(ノード2110の状態に一定以上の差がない状態であるある状態でもなければ)、ルールベース判断部6203が判断したルールの適用がそれほど効果的でなかったと判断する(ステップS11082)。
最後に、検証部10207は、ルールの適用が効果的であったか否かの判断結果を、更新部10208に転送(出力)する(ステップS11090)。
その後、更新部10208は、検証部10207によって結果ルールが効果的であると判断され、かつ現状のルールの優先度が一定値以下であれば、制御ルール記憶部6206に格納されている結果ルールの優先度を一定値増やすように、制御ルール記憶部6206が記憶する制御ルールを更新する。逆に、更新部10208は、検証部10207によって結果ルールが逆効果である判断され、かつ現状のルールの優先度が一定値以上であれば、制御ルール記憶部6206に格納されている結果ルールの優先度を一定値減らすように、制御ルール記憶部6206が記憶する制御ルールを更新する。また、更新部10208は、どちらでもなければ、結果ルールの優先度を変更せず、制御ルール記憶部6206が記憶する制御ルールを更新しない。
以上のように処理を実行することで、判断した結果を制御ルールにフィードバックすることができる。
以上のように、本実施形態によれば、第2の実施形態で示した効果に加えて、処理結果に応じてルールの優先度が変更されるため、効果的なルールが優先して成立するようになり、より効果的なスループット制御を可能とすることができる。また、制御ルール記憶部6206が記憶する制御ルールを繰り返し学習して更新することができるので、処理装置2100全体のスループット制御の精度を向上させることができる。
なお、データストリーム処理システムの実施形態は、以上に示した各実施形態に限定されず、その他各種の付加変更が可能である。例えば、データストリーム処理フ
ロー管理を用いたDSMSを、その有する機能をハードウェア的に実現することは勿論、コンピュータとプログラムとで実現することができる。また、プログラムは、磁気ディスク装置や半導体メモリ等のコンピュータ可読記録媒体に記録されて提供される。そして、コンピュータの立ち上げ時等にコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータを上記した各実施形態におけるDSMSとして機能させる。
次に、本発明によるデータストリーム処理システムの最小構成について説明する。図14は、データストリーム処理方法を用いたDSMSの最小の構成例を示すブロック図である。図14に示すように、データストリーム処理システムを実現する最小構成のDSMSは、複数のノード2110を含む。また、各ノード2110は、データストリームを逐次処理する複数のDS処理部2114を含む。また、DSMSは、各ノード2110のデータストリームの処理状態に応じて、データストリームの処理に用いるDS処理部2114を切り替えるDS処理切替部2113を備える。
図14に示す最小構成のデータストリーム処理システムによれば、スループットの高いノードのスループットを下げることで、DSMSにおける各ノード2110のスループット格差を是正し、DSMS全体のスループットを向上させることができる。
なお、上記の各実施形態では、以下の(1)〜(9)に示すようなデータストリーム処理システムの特徴的構成が示されている。
(1)データストリーム処理システムは、複数のノード(例えば、ノード2110)を有するデータストリーム処理システム(例えば、DSMS)の処理フローを管理するデータストリーム処理システムであって、複数のノードは、それぞれデータストリームを逐次処理する複数のデータストリーム処理部(例えば、DS処理部2114によって実現される)を含み、複数のノードのそれぞれにおけるデータストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるDS処理切替部(例えば、DS処理切替部2113によって実現される)を備える。
(2)また、データストリーム処理システムは、複数のノードのそれぞれにおけるデータストリームの処理状態を監視する監視部(例えば、監視部2201によって実現される)と、監視部の監視結果に応じて、切替対象のノードと切替対象のデータストリーム処理部とを判断する判断部(例えば、判断部2203によって実現される)とを備え、DS処理切替部は、判断部の判断結果に応じて、処理精度及び処理負荷のいずれかが異なるデータストリーム処理部に切り替えるように構成されていてもよい。
(3)また、データストリーム処理システムは、複数のノードを有する処理装置(例えば、処理装置2100を1つの情報処理装置を用いて実現する場合の処理装置2100によって実現される)と、処理装置を管理する管理装置(例えば、管理装置2200によって実現される)とを備え、処理装置が有する複数のノードは、それぞれ、データストリームを逐次処理する複数のデータストリーム処理部(例えば、DS処理部2114によって実現される)と、データストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるDS処理切替部(例えば、DS処理切替部2113によって実現される)とを含むように構成されていてもよい。
(4)また、データストリーム処理システムにおいて、管理装置は、複数のノードのそれぞれにおけるデータストリームの処理状態を監視する監視部(例えば、監視部2201によって実現される)と、監視部の監視結果に応じて、切替対象のノードと切替対象のデータストリーム処理部とを判断する判断部(例えば、判断部2203によって実現される)とを含み、管理装置によって切替対象と判断されたノードのDS処理切替部は、管理装置の判断結果に応じて、処理精度及び処理負荷のいずれかが異なるデータストリーム処理部に切り替えるように構成されていてもよい。
(5)また、データストリーム処理システムは、複数のノードを有する処理装置(例えば、各ノード2110を別々の情報処理装置を用いて実現する場合の処理装置2100によって実現される)と、処理装置を管理するネットワーク管理装置(例えば、管理装置2200によって実現される)とを備え、複数のノードは、それぞれ、データストリームを逐次処理する複数のデータストリーム処理部(例えば、DS処理部2114によって実現される)と、データストリームの処理状態に応じて、データストリームの処理に用いるデータストリーム処理部を切り替えるDS処理切替部(例えば、DS処理切替部2113によって実現される)とを含むように構成されていてもよい。
(6)また、データストリーム処理システムにおいて、ネットワーク管理装置は、複数のノードのそれぞれにおけるデータストリームの処理状態を監視する監視部(例えば、監視部2201によって実現される)と、監視部の監視結果に応じて、切替対象のノードと切替対象のデータストリーム処理部とを判断する判断部(例えば、判断部2203によって実現される)とを含み、ネットワーク管理装置によって切替対象と判断されたノードのDS処理切替部は、ネットワーク管理装置の判断結果に応じて、処理精度及び処理負荷のいずれかが異なるデータストリーム処理部に切り替えるように構成されていてもよい。
(7)また、データストリーム処理システムは、切替対象のノード及び切替対象のデータストリーム処理部を判断するための条件を示す判断情報を記憶する判断情報記憶部(例えば、判断情報記憶部2204によって実現される)を備え、判断部は、判断情報記憶部が記憶する判断情報に基づいて、切替対象のノードと切替対象のデータストリーム処理部とを判断するように構成されていてもよい。
(8)また、データストリーム処理システムは、切替対象のノード及び切替対象のデータストリーム処理部を判断するためのルールを示すルール情報(例えば、制御ルール)を記憶するルール記憶部(例えば、制御ルール記憶部6206によって実現される)を備え、判断部は、ルール記憶部が記憶するルール情報に基づいて、切替対象のノードと切替対象のデータストリーム処理部とを判断するように構成されていてもよい。
(9)また、データストリーム処理システムは、データストリーム処理部の切り替え後の複数のノードのそれぞれにおけるデータストリームの処理状態を検証する検証部(例えば、検証部10207によって実現される)と、検証部による検証結果に基づいて、ルール記憶部が記憶するルール情報を更新するルール更新部(例えば、更新部10208によって実現される)とを備えるように構成されていてもよい。
また、本発明の第1のデータストリーム処理システムは、好ましくは、データストリーム処理を行う処理装置と、ノードを制御する管理装置とを備え、処理装置は、データストリーム処理の最小単位である複数のノードを有し、複数のノードは、それぞれ、入力されたデータストリームを一時的に蓄積するDS入力キューと、一定条件でDS入力キューから一定のデータストリームを取り出すDS取得部と、取り出したデータストリームの転送先を切り替えるDS処理切替部と、処理対象が同じであるがそれぞれ処理精度と処理負荷とが異なる複数のDS処理部とを含み、管理装置は、複数のノードのそれぞれの状態を監視する監視部と、監視の結果である監視情報を記憶する監視情報記憶部と、どのノードのDS処理部を切り替えるかを判断する判断部と、切り替えるノードを判断するために必要な情報である判断情報を記憶する判断情報記憶部と、DS処理部の切り替えをノードに指示する切替指示部とを含む。
また、本発明の第2のデータストリーム処理システムは、本発明の第1のデータストリーム処理システムと同様の処理装置と、ノードを制御する管理装置とを備え、管理装置は、複数のノードのそれぞれの状態を監視する監視部と、監視の結果である監視情報を記憶する監視情報記憶部と、どのノードのDS処理部を切り替えるかを判断するルールベース判断部と、切り替えるノードを判断するために必要な情報である判断情報を記憶する判断情報記憶部と、ルールベース判断部の動作を制御するためのルールである制御ルールを記憶する制御ルール記憶部と、DS処理部の切り替えをノードに指示する切替指示部とを含む。
また、本発明の第3のデータストリーム処理システムは、本発明の第1のデータストリーム処理システムと同様の処理装置と、ノードを制御する管理装置とを備え、管理装置は、複数のノードのそれぞれの状態を監視する監視部と、監視の結果である監視情報を記憶する監視情報記憶部と、どのノードのDS処理部を切り替えるか判断するルールベース判断部と、切り替えるノードを判断するために必要な情報である判断情報を記憶する判断情報記憶部と、ルールベース判断部の動作を制御するルールである制御ルールを記憶する制御ルール記憶部と、DS処理部の切り替えをノードに指示する切替指示部と、処理の結果を検証する検証部と、制御ルールを更新する更新部とを含む。
以上のように、本発明は、DSMSにおける複数のノードのそれぞれにおける処理状態に応じて、混雑しているノードのDS処理部を切り替えることで、処理精度と処理負荷とを制御することを基本として、DSMSにおける各ノード2110のスループット格差を是正し、DSMS全体のスループットを向上させる。