以下、実施形態を説明する。以下の説明では、「xxxテーブル」又は「xxxリスト」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」又は「xxxリスト」を「xxx情報」と呼ぶことができる。
また、以下の説明では、「xxx部」を主語として処理を説明する場合があるが、「xxx部」は、コンピュータプログラム(「プログラム」という)の一種であってもよい。プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及びネットワークインターフェイスデバイスの内の少なくとも1つを用いながら行うため、処理の主語が、プロセッサ、そのプロセッサを有する装置とされてもよい。プロセッサが行う処理の一部又は全部が、ハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)など)で行われてもよい。プログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。また、プロセッサ及びメモリをまとめてコントローラと呼んでもよい。
また、以下の説明では、同種の要素を区別して説明する場合には、「ノード111a」、「ノード111b」のように、参照符号を使用し、同種の要素を区別しないで説明する場合には、「ノード111」のように参照符号の内の共通番号のみを使用することがある。
図1は、本実施形態に係る分散システム1の動作概要を示す。
ノード111a、111b、111c、111dは、ネットワーク110を通じて、相互にデータを送受信できる。ノード111a、111b、111c、111d及びネットワーク110によって構成されるシステムを、分散システム1という。ノード111は、電子計算機の一種である物理マシンである。なお、以下の説明において、処理の主語が「分散システム1」の場合は、1つのノード111が、又は、2以上のノード111が協調して、その処理を行うとしてもよい。
電子計算機の一種であるクライアント50は、分散システム1に対して、分析対象であるデータの分析処理を依頼する。分散システム1は、分析ソフトウェア910a、910bを実行して分析処理を行う。そして、分散システム1は、BI(Business Intelligence)ソフトウェア930を実行して、分析ソフトウェア910a、910bの分析結果を参照及び利用する。すなわち、第1段階(前段)の処理である分析ソフトウェア910a、910bの出力データ(分析結果)が、第2段階(後段)の処理であるBIソフトウェア930の入力データとなる。このように、分析対象のデータを複数の段階に分けて処理することを、多段処理という。
多段処理は、多段になった複数の処理で構成される。多段処理では、第1処理(前段処理)とその第1処理によって出力されたファイルを入力とする第2処理(後段処理)とで構成された処理セットを少なくとも1つ有する。多段処理において、始点処理(始点としての処理)が、第1処理であり、終点処理(終点としての処理)が、第2処理であり、始点処理と終点処理の間にある処理が、第1処理でもあり第2処理でもある。多段処理は、カスケード状(ツリー状)の複数の処理でもよいし、再帰的な処理(或る処理の結果が所定の条件を満たした場合に終了する処理)でもよい。
次に、図1について説明する。分析ソフトウェア910aは、ファイルf1(データブロックb11及びb12)と、ファイルf3(データブロックb31及びb32)とを入力データとし、その分析結果としてファイルf5(データブロックb51)を出力する機能を有する。
分析ソフトウェア910bは、ファイルf2(データブロックb21及びb22)と、ファイルf4(データブロックb41及びb42)とを入力データとし、その分析結果としてファイルf6(データブロックb61)を出力する機能を有する。
BIソフトウェア930は、分析ソフトウェア910aの分析結果であるf5(データブロックb51)と、分析ソフトウェア910bの分析結果であるファイルf6(データブロックb61)とを入力データとし、その分析結果としてファイルf7(データブロックb71)を出力する機能を有する。
クライアント50は、分散システム1(の或るノード111)に対して、ファイルf1、f2、f3、f4に含まれる情報の分析処理を依頼する。
分散システム1(の或るノード111。以下同じ)は、クライアント50から依頼されたファイルf1〜f4の各々を、1又は2以上のデータブロックに分割する。すなわち、分散システムは、ファイルf1をデータブロックb11及びb12に、ファイルf2をデータブロックb21及びb22に、ファイルf3をデータブロックb31及びb32に、ファイルf4をデータブロックb41及びb42に分割する。
ここで、これらの分割したデータブロックb11、b12、b21、…のそれぞれを何れのノード111(の記憶装置700。以下同じ)に格納するか、及び、これらのソフトウェア910a、01b、930のそれぞれを何れのノード111で実行するか、が重要である。その理由は次の通りである。
ノードは、自ノードで実行されるソフトウェアの入力ファイルを、複数のデータブロックから再構成する必要がある。このとき、他のノード(つまり、リモートのノード)に格納されているデータブロックについては、自ノードは、ネットワーク110を通じて取得する必要がある。しかし、上述の通り、ネットワーク110を通じてリモートのノードからデータブロックを取得することは、自ノード(つまり、ローカルのノード)からデータブロックを取得することと比較して、時間を要する上、ネットワーク帯域に対する負荷を高める。
そこで、分散システム1は、ソフトウェアの入力ファイルを構成する複数のデータブロックと、そのソフトウェアとが、できるだけ1つのノードに存在するようにする。すなわち、分散システム1は、入力ファイルを構成する複数のデータブロックを、各ノードにランダムに格納するのではなく、できるだけ多く、1つのノードに格納する。また、分散システム1は、その多くのデータブロックが格納されたノードで、その入力ファイルに係るソフトウェアが実行されるようにする。例えば、ハイパーバイザ202上に構築された仮想マシン121においてそのソフトウェアが実行される構成の場合、分散システム1は、その仮想マシン121を、その多くのデータブロックが格納されたノード111に配置する。
ここで、ソフトウェアに入力される複数のデータブロックの内、そのソフトウェアが実行されているローカルのノードに格納されているデータブロックの割合に関する値を、「ローカルアクセス値」という。
分析ソフトウェア910aのローカルアクセス値を50%以上とする、という条件が設定されている場合、分散システム1は、クライアント50から入力されたファイルf1(データブロックb11及びb12)、f3(データブロックb31及びb32)を、分析ソフトウェア910aのローカルアクセス値が50%以上となるように、各ノードに格納してもよい。分散システム1は、データブロックb11及びb12を、分析ソフトウェア910aが実行されるノード111gに格納してもよい。
BIソフトウェア930のローカルアクセス値を90%以上とする、という条件が設定されている場合、分散システム1は、分析ソフトウェア910a及び910bから出力されたファイルf5(データブロックb51)及びf6(データブロックb61)を、BIソフトウェア930のローカルアクセス値が90%以上となるように、各ノードに格納してもよい。
分散システム1は、BIソフトウェア930に入力されるデータブロックb51及びb61の90%以上が1つのノードに格納されるように、分散ファイルシステム200を制御してもよい。そして、分散システム1は、そのデータブロックb51及びb61の90%以上が格納されるノードに、BIソフトウェア930(仮想マシン121c)を配置してもよい。
分散システム1は、BIソフトウェア930(仮想マシン121c)の配置先を先に決定してもよい。そして、分散システム1は、BIソフトウェア930に入力されるデータブロックb51及びb61の90%以上が、BIソフトウェア930の実行されるローカルのノードに格納されるように、分散ファイルシステム200を制御してもよい。
分散システム1は、多段処理を構成する各処理の入出力に係るデータセット(ファイル群)に関する設定情報を含む「データセット情報」を管理してよい。分散システム1は、1つのデータ処理情報に1つのデータセット情報を対応付けてもよい。データセット情報は、データセットの格納に関する条件(例えば、ローカルアクセス値など)を含んでよい。
分散システム1は、多段処理を構成する各処理の順番及びその処理内容、並びに各処理の入出力データに関する設定情報を含む「データ処理情報」を管理してよい。分散システム1は、1つのデータ処理情報に、1つのソフトウェアを対応付けてもよい。データ処理情報は、多段処理における当該処理の順番と、当該処理を実行するソフトウェアと、そのソフトウェアの実行に必要とされる仮想マシンのスペックと、当該処理の入出力に係るデータセット情報とを含んでよい。
分散システム1は、データ処理情報に含まれるソフトウェアを、そのデータ処理情報に対応するデータセット情報に基づくノード群で実行してよい。分散システム1は、ローカルアクセス値がより高くなるように、データブロックを格納するノードを選択してよい。
分散システム1は、1つのファイルから分割された複数のデータブロックが、できるだけ1つのノードに格納されるようにしてもよい。例えば、図1において、分散システム1は、ファイルf1から分割されたデータブロックb11及びb12をノード111a(記憶装置700a)に、ファイルf2から分割されたデータブロックb21及びb22をノード111c(記憶装置700c)に格納している。
分散システム1は、第1段階の処理で出力された複数のデータブロックが、できるだけ1つのノードに格納されるようにしてもよい。例えば、図1において、分散システム1は、分析ソフトウェア910a及び910bから出力されたデータブロックb51及びb61を、1つのノード111a(記憶装置700a)に格納している。
本実施形態に係る分散システム1は、事前に設定されたデータ処理情報及びデータセット情報に基づいて、分析対象の複数のデータブロックを適切なノードに格納し、分析処理に関するソフトウェアを実行する仮想マシンを、適切なノードにプロビジョニングすることができる。
図2は、分散システムの変形例を示す。
分散システムは、図1の構成に限らず、ネットワークが多段に構成されてもよい。例えば、図2に示すように、ノード111e及び111fがネットワーク110aに接続され、ノード111g及び111hがネットワーク110bに接続される。同じネットワーク110a(又は110b)に接続されているノード111e及び110f(又は、110g及び110h)を、ノードグループ11a(又は11b)と呼ぶ。ネットワーク110a及び110bは、上流のネットワーク110cに接続される。ノード110e〜110hは、ネットワーク110a、110b及び110cを通じて相互にデータを送受信できる。
分散システムには、当該分散システムを管理するための管理マシン51が含まれてもよい。管理マシン51は、一以上の計算機で構成されてよい。具体的には、例えば、管理計算機が情報を表示する場合(具体的には、管理計算機が自分の表示デバイスに情報を表示する、或いは、管理計算機が表示用情報を遠隔の表示用計算機に送信する場合)、管理計算機が管理マシン51である。また、例えば、複数の計算機で管理計算機と同等の機能が実現されている場合は、当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機を含んでよい)が、管理マシン51である。
分散システムには、当該分散システムを利用するクライアント50が含まれてもよい。管理マシン51又はクライアント50は、分散システムにおける或るノード111又は或る仮想マシン121であってもよい。
図2では、複数のノードが1つのノードグループを構成しているが、ノードグループはこのような構成に限られない。例えば、複数のノードグループが、さらに1つのノードグループを構成してもよい。このように、ノードグループを多段に構成することにより、管理者は、分散システムをノードグループの単位で柔軟に管理することができる。
図3は、ノード111の構成例を示す。なお、図3に示す構成は一例であり、例えば、ある構成要素(例えばxxx部又はxxxテーブル)は複数の構成要素に分割されていてもよく、複数の構成要素が1つの構成要素に統合されていてもよい。
ノード111は、CPU400と、メモリ500と、ネットワークI/F600と、記憶装置700とを備え、これらの要素は、双方向にデータ送受信が可能なバス800で接続されている。バス800の一例としては、PCIe(PCI express)などがある。記憶装置700は、ノード111の内部又は外部の何れに備えられてもよい。
記憶装置700には、データブロックが格納される。記憶装置700は、所定のコマンドに基づき、データブロックのライト、リード、コピー、移動及び削除などを行う。記憶装置700の一例としては、HDD(Hard Disk Drive)、SSD(Solid State Drive)及びフラッシュメモリなどがある。
ネットワークI/F(Interface)600は、ノード111をネットワーク110に接続させるためのI/Fである。ネットワークI/F600の一例としては、ファイバチャネルアダプタ及びNIC(Network Interface Card)などがある。
CPU400は、メモリ500に記憶されているコンピュータプログラムを実行し、本実施形態で述べる様々な機能を実現する。
メモリ500は、CPU400、ネットワークI/F600及び記憶装置700などからアクセスされるコンピュータプログラム及びデータなどを記憶する。メモリ500の一例としては、DRAM(Dynamite Random Access Memory)、MRAM(Magnetic Random Access Memory)及びFeRAM(Ferroelectric Random Access Memory)などがある。
メモリ500には、コンピュータプログラムの一種として、ファイルシステム制御部510と、分散ファイルシステム制御部520と、ハイパーバイザ制御部530と、リソース割当制御部540と、ジョブ制御部550と、データセット制御部560と、オーケストレーション制御部570とが格納されている。さらに、メモリ500には、情報の一種として、データセット情報テーブル1000と、データ処理情報テーブル1200と、物理リソース情報テーブル1300と、仮想マシン情報テーブル1400と、データブロック格納情報テーブル1500と、ジョブスケジュール情報テーブル1600とが格納される。これらテーブルの詳細については後述する。
ファイルシステム制御部510は、ローカルのノード111の記憶装置700に関するファイルシステムを制御する。すなわち、ファイルシステム制御部510は、ファイルシステムを通じて、記憶装置700に格納されているデータへアクセスできるようにする。ファイルシステムの一例としては、FAT、NTFS及びext3などがある。
分散ファイルシステム制御部520は、分散システム1に関する分散ファイルシステム200(図1参照)を制御する。すなわち、分散ファイルシステム制御部520は、分散ファイルシステム200を通じて、ローカル又はリモートを問わず、分散システム1を構成する何れかのノード111の記憶装置700に格納されているデータへ、シームレスにアクセスできるようにする。分散ファイルシステム制御部520は、リモートのノードのファイルシステム制御部510と連携して、分散ファイルシステム200を実現する。これにより、仮想マシン121及びソフトウェアなどは、分散ファイルシステム200を通じて、アクセス対象のデータが何れのノード111に格納されているかを意識することなく、そのデータにアクセスすることができる。また、分散システム1に分散ファイルシステム200を適用することにより、分散システム1は、ノードの追加及び削除を柔軟に行うことができる。分散ファイルシステム200の一例としては、HDFSなどがある。
分散ファイルシステム制御部520は、必要に応じて、データブロックを複製したレプリカデータを生成し、他のノードに格納してもよい。データブロックを冗長化し、分散システム1の可用性を高めるためである。
ハイパーバイザ制御部530は、ノード111の有するハイパーバイザ202(図1参照)を制御する。ハイパーバイザ202は、仮想マシン121の実行環境を提供する。また、ハイパーバイザ202は、ノード111(物理マシン)の有する物理リソースと、仮想マシン121に割り当てられる仮想リソースとの間を、適宜調整する。ハイパーバイザ202の一例としては、KVM(Kernel−based Virtual Machine)などがある。
ハイパーバイザ制御部530は、ハイパーバイザ202の制御を通じて、ノード111における仮想マシン121を制御する。ハイパーバイザ制御部530は、仮想マシン121の起動、停止、再起動及びノード間の移動などを行ってもよい。
リソース割当制御部540は、ノード11の有する物理リソースを仮想マシン121に割り当てる。例えば、ハイパーバイザ制御部530は、ノード111の有する物理リソース(演算リソース、メモリリソース及びネットワークリソースなど)を、どの仮想マシン121にどのくらい割り当てるか(確保するか)、などを制御する。例えば、リソース割当制御部540は、仮想マシン121に割り当てられる物理リソースを、予め確保する。或る仮想マシンに割り当てられた物理リソースが、他の仮想マシンから勝手に横取りされないようにするためである。
ジョブ制御部550は、ノード111で実行されるジョブを制御する。ジョブ制御部550は、スケジュールに基づいてジョブを制御してよい。ジョブ内容の一例としては、分散ファイルシステム200に係るデータのバックアップ及びマイグレーション、ハイパーバイザ202に係る仮想マシンの作成、再起動、削除及び移動、仮想マシンで実行される各種ソフトウェアの開始及び停止、定期的に実行されるバッチ型処理の開始及び停止、適宜実行される対話型処理の開始及び停止などがある。
データセット制御部560は、データセット情報テーブル1000を制御する。データセット情報は、複数のデータブロックを1つのデータセットとしてグループ化するための設定情報(定義情報)を有する。データセット情報は、データセットの格納場所及び格納方法などの設定情報(定義情報)を有してもよい。「データセット」と「処理」を対応付けることにより、そのデータセットに含まれる複数のデータブロックをまとめて1つのノードに格納し易くなる。複数のデータブロックをまとめて1つのノードに格納することにより、ファイルの再構成の際に発生し得る、リモートのノード111からデータブロックを取得する処理が低減され得る。つまり、ノード間のネットワーク帯域に対する負荷が低減され得る。
オーケストレーション制御部570は、分散システム1で実行される多段処理及び分散処理を制御する。
オーケストレーション制御部570は、ノード111で実行される処理が、できるだけ所定の条件を満たす形でデータブロックにアクセスできるようにする。例えば、オーケストレーション制御部570は、ノード111で実行される処理が、ローカルアクセス値以上の割合で、ローカルのデータブロックにアクセスできるように、その処理を実行する仮想マシン121及び/又はその処理で使用されるデータブロックの配置を制御する。オーケストレーション制御部570は、各テーブル1000、1200、1300、1400、1500、1600の情報を用いて、各制御部510、520、530、540、550、560と連携しながら、この制御を行ってよい。
1又は2以上の第1処理によって出力される1又は2以上のファイル(「出力ファイル」という)が、1又は2以上の第2処理の入力に用いられるような多段処理において、オーケストレーション制御部570は、以下の機能を有してよい。
オーケストレーション制御部570は、第1処理と第2処理との関係性に基づいて、第1処理を実行する第1仮想マシンの配置先のノードと、出力ファイルを構成する1以上のデータブロックの格納先とする1以上のノード111(の記憶装置700。以下同じ)と、第2処理を実行する第2仮想マシンの配置先のノード111とを、決定してよい。
上記の第1処理と第2処理の関係性とは、第2処理が要求するローカルアクセス値を満たすことであってよい。ここで、ローカルアクセス値とは、第2処理に入力される出力ファイルを構成する複数のデータブロックの内、第2仮想マシンの配置先のノード111に格納されるデータブロックの割合に関する値であってよい。これにより、第2処理は、ローカルアクセス値以上の割合で、ローカルのノード111のデータブロックにアクセスできる。つまり、ノード間のネットワーク帯域に対する負荷を低減することができると共に、第2処理の実行速度を向上させることができる。ローカルアクセス値の詳細については後述する。
オーケストレーション制御部570は、第2処理が要求するローカルアクセス値を満たすように、第1仮想マシン及び第2仮想マシンの配置先、並びに、第1処理の出力ファイルを構成する各データブロックの格納先を決定できない場合、出力ファイルを構成する一部のデータブロックのレプリカであるレプリカデータを、第2仮想マシンの配置先のノードに格納してよい。このとき、レプリカデータを所定数以上作成しなければ、第2処理が要求するローカルアクセス値を満たすことができない場合、オーケストレーション制御部570は、その旨のエラーを出力してもよい。必要以上にレプリカデータが作成されると、記憶装置700の容量が大量に消費されてしまうからである。
オーケストレーション制御部570は、第2仮想マシン(又は、第2仮想マシンで実行される処理)が要求するリソースを提供可能なノード111の中から、その第2仮想マシンを配置するノード111を決定してよい。
オーケストレーション制御部570は、1つのファイルを構成する複数のデータブロックの内の所定数以上のデータブロックを、1つのノード111に格納してもよい。これにより、複数のデータブロックから1つのファイルを再構成するにあたり、リモートのノード111からデータブロックを取得する処理が低減する。よって、ノード間のネットワーク帯域に対する負荷が低減される。
オーケストレーション制御部570は、第2処理が要求するローカルアクセス値が、第1処理が要求するローカルアクセス値よりも大きくなるように、自動的に設定してもよい。なぜなら、大規模データを幾つかの段階に分けて処理を行う多段処理の場合、後段の処理ほど、データに対するアクセス頻度が高くなることが多いためである。
なお、第1処理はバッチ型の処理であり、第2処理は対話型の処理であってもよい。なぜなら、多段処理の一例として、第1処理として、日次バッチ的に原データのフィルタリング処理及びラベリング処理、及び、毎時バッチ的に第1処理の結果の集計及び集約処理などを行い、第2処理として、第1処理の結果を用いて対話的に日々の分析業務を行うような処理がある。このように、前段の処理で大規模データに対して低頻度にバッチ型の処理を行い、後段の処理で高頻度に対話型の処理を行う場合、後段の対話型の処理は、前段のバッチ型の処理と比べて、データに対するアクセス頻度が高いからである。
図4は、データセット情報テーブル1000の構成例を示す。
データセット情報テーブル1000は、データセット情報1001をレコードとして管理する。データセット情報1001は、多段処理を構成する各処理の入出力に係るデータセット(ファイル群)に関する設定情報である。
データセット情報1001は、フィールド値として、データセットID1010と、データソースID1020と、ルートディレクトリ1030と、プライマリデータ格納ノード1040と、プライマリデータ格納方法1050と、セカンダリデータ格納ノード1060と、セカンダリデータ格納方法1070とを含んでよい。
データセットID1010は、分散システム1において、データセットを一意に識別するための情報である。データセットID1010は、数字若しくは文字列、又はこれらの組み合わせであってよい。一意性を保証するために、分散システム1の全体で同期をとってから、新たなデータセットに、新たなデータセットID1010を付与してもよい。又は、重複しない複数のIDを各ノードに配布しておき、各ノードは、その配布された複数のIDの内の未使用の1つを、新たなデータセットのデータセットID1010に付与してもよい。
データソースID1020は、データセットID1010のデータセットの提供元(データソース)を識別するための情報である。データソースID1020は、データセットの提供元のマシンの識別情報、又は、図5に示すデータ処理情報の識別情報などであってよい。
マシンの識別情報の一例としては、IPアドレス(10.20.1.1)又はマシン名(Client−PC)などがある。データ処理情報の識別情報の一例としては、データ処理情報の処理グループID1210とシーケンス番号1230の組合せ(PG1−1)などがある。
ルートディレクトリ1030は、分散ファイルシステム200において、データセットID1010のデータセットが格納されるルートディレクトリを示す。ルートディレクトリ1030は、フルパス名又はURLなどで表現されてよい。
ルートディレクトリ1030は、分散ファイルシステム200上のディレクトリに限らず、任意のノードにおけるローカルファイルシステム上のディレクトリであってもよい。例えば、ルートディレクトリ1030は、ノードIDと、そのノードIDのノードにおけるファイルシステム上のディレクトリのフルパス名又はURLと、の組み合わせであってもよい。
プライマリデータ格納ノード1040は、データセットID1010のデータセットの内のプライマリデータが格納されているノードを表す。プライマリデータとは、分析処理に関するソフトウェアが優先的にアクセスするデータである。プライマリデータ格納ノード1040のノードにおいて実行されるソフトウェアは、当該ノードに格納されているデータ(つまり、プライマリデータ)に優先的にアクセスする。したがって、データセットID101のデータセットを分析するソフトウェアが実行される仮想マシン121は、プライマリデータ格納ノード1040のノードに配置又は構築されることが望ましい。
プライマリデータ格納方法1050は、プライマリデータ格納ノード1040のノードに、データを格納する方法を示す。プライマリデータ格納方法1050には、プライマリデータ格納ノード1040のノードで実行されるソフトウェアに対するローカルアクセス値(例えば「ローカルアクセス値≧50%」など)が設定されてよい。
1つのファイルから分割された複数のデータブロックを、できるだけ1つのノードに格納したい場合(つまり、ノード間のネットワーク帯域に対する負荷を低減したい場合)、プライマリデータ格納ノード1040には、「集約格納」が設定されてよい。
1つのファイルから分割された複数のデータブロックを、できるだけ異なるノードに格納したい場合(つまり、複数のノードにストライピング配置したい場合)、プライマリデータ格納ノード1040には、「拡散格納」が設定されてよい。
複数のデータブロックがどのノードに格納されてもよい場合、プライマリデータ格納ノード1040には、「分散格納」が設定されてよい。
セカンダリデータ格納ノード1060は、データセットID1010のデータセットの内のセカンダリデータが格納されているノードを表す。セカンダリデータとは、データセットを構成するデータ群の中から、プライマリデータを除いた部分のデータである。セカンダリデータ格納ノード1060には、格納先を示す情報として、1又は2以上のノードが直接的に設定される他、「全ノード」又は「プライマリデータ格納ノード以外」などが設定されてもよい。
セカンダリデータ格納方法1070は、セカンダリデータ格納ノード1060のノードに、データを格納する方法を示す。セカンダリデータ格納方法1070の設定は、プライマリデータ格納方法1050の設定と同様であってよい。
図5は、データ処理情報テーブル1200の構成例を示す。
データ処理情報テーブル1200は、分散システム1における、1又は2以上のデータ処理情報1201をレコードとして管理する。データ処理情報1201は、分析対象のデータの処理に関する情報である。
データ処理情報1201は、フィールド値として、処理グループID1210と、優先度1220と、シーケンス番号1230と、プログラム1240と、実行契機1250と、要求リソース情報とを含んでよい。
要求リソース情報は、データ処理情報に係る処理に要する物理リソースに関する情報である。要求リソース情報は、フィールド値として、仮想マシン数1260と、CPU数1261と、メモリ容量1262と、ディスクタイプ1263と、ディスク容量1264と、ネットワーク帯域1265と、INPUTデータセットID1270と、INPUTデータ絞込条件1271と、INPUTローカルアクセス値1272と、OUTPUTデータセットID1280と、OUTPUTローカルアクセス値1281とを含む。
処理グループID1210は、分散システム1において、処理グループを一意に識別するための情報である。処理グループとは、所定の分析を行うための一連の処理(多段処理)をグループ化したものである。処理グループID1210は、数字若しくは文字列、又はこれらの組み合わせであってよい。処理グループID1210は、上記のデータセットID1010の場合と同様に、一意性が保証されてもよい。
優先度1220は、当該優先度1220に係るデータ処理情報の優先度の高さを示す値である。本実施形態では、優先度1220の値が大きいほど、優先度が高いとする。分散システム1の有する物理リソースは有限である。したがって、優先度1220の高いデータ処理情報1201に係る処理(例えば、プログラム1240)に対して、分散システム1の有する物理リソースが優先的に割り当てられたり、又は、優先的に実行されたりしてもよい。したがって、優先度1220の低いデータ処理情報1201に係る処理は、そのデータ処理情報1201の示す通りに(例えば、要求リソース情報の通りに)物理リソースが割り当てられること、又は、実行契機1250の示す通りにプログラム1240が実行されることが、必ずしも保証されない。
シーケンス番号1230は、処理グループID1210の処理グループに属するそれぞれのデータ処理情報1201を識別するための値である。よって、1つの処理グループID1210に、1又は2以上のシーケンス番号1230が対応付けられてよい。同じ処理グループに属するデータ処理情報1201に係る処理は、シーケンス番号1210の順番に実行されてよい。つまり、シーケンス番号1230は、多段処理を構成する各処理の順序(前段後段の関係)を示しているといってもよい。
プログラム1240は、データ処理情報1201に係る処理において実行されるプログラムを識別するための値である。例えば、プログラム1240には、プログラムの格納されているパス名又はプログラム名などが設定される。プログラム1240には、複数のプログラムのIDが設定されてもよい。この場合、データ処理情報1201に係る処理において、これらの複数のプログラムが実行されてよい。プログラム1240には、複数のプログラムの実行順序が記述されたスクリプトのIDが設定されてもよい。この場合、データ処理情報1201に係る処理において、このスクリプトに記述された順番で、これら複数のプログラムが実行されてよい。
実行契機1250は、データ処理情報1201に係る処理が実行される契機を表す値である。例えば、実行契機1250に「5AM,everyday」が設定されている場合、プログラム1240のプログラムが、毎日午前5時に(定期的に)実行される。例えば、実行契機1250に「ALL」が設定されている場合、プログラム1240のプログラムが常に実行される。
次に、要求リソース情報について説明する。要求リソース情報は、データ処理情報1201に係る処理に要する物理リソースに関する情報である。
要求リソース情報は、フィールド値として、仮想マシン数1260と、CPU数1261と、メモリ容量1262と、ディスクタイプ1263と、ディスク容量1264と、ネットワーク帯域1265と、INPUTデータセットID1270と、INPUTデータ絞込条件1271と、INPUTローカルアクセス値1272と、OUTPUTデータセットID1280と、OUTPUTローカルアクセス値1281とを含んでよい。
仮想マシン数1260は、データ処理情報1201に係る処理を実行するために要する仮想マシンの数を示す値である。CPU数1261は、1つの仮想マシンに要求されるCPUの数(又はコアの数)を示す値である。メモリ容量1262は、1つの仮想マシンに要求されるメインメモリの容量を示す値である。
ディスクタイプ1263は、1つの仮想マシンに要求されるディスクのタイプを示す値である。ディスクタイプ1263の一例としては、HDD及びSSDなどがある。ディスク容量1264は、1つの仮想マシンに要求されるディスクの容量を示す値である。
ネットワーク帯域1265は、1つの仮想マシンに要求されるネットワークの帯域を示す値である。CPU数1261、メモリ容量1262、ディスクタイプ1263、ディスク容量1264及びネットワーク帯域1265は、仮想マシンの構成情報といってもよい。
ノード111に仮想マシン121を構築する際、分散システム1は、そのノード111の利用可能な物理リソースから、構成情報の要求するリソースを確保できるか否か判定する。当該判定が肯定的な場合(確保可能な場合)、そのノード111は、仮想マシン121を構築し、構成情報の要求するリソースを、その仮想マシンに割り当てる。
INPUTデータセットID1270は、INPUTデータセットを識別するための値である。INPUTデータセットは、データ処理情報1201に含まれるプログラム1240のプログラムに入力され得るデータセットである。
INPUTデータ絞込条件1271は、INPUTデータセットID1270のINPUTデータセットの中から、入力の対象とするINPUTデータを絞り込む条件を示す値である。
例えば、INPUTデータ絞込条件1271に「ALL」が設定されている場合、INPUTデータセットの全てが入力の対象となる。例えば、INPUTデータ絞込条件1271に、クエリ条件式が設定されている場合、そのクエリ条件式に適合するINPUTデータセットが入力の対象となる。例えば、ファイルの属性情報である最終更新日時が所定の日時以降である旨のクエリ条件式が設定されている場合、最終更新日時が所定の日時以降に更新されたINPUTデータが入力の対象となる。このときのクエリ条件式は、例えば、「最終更新日時が2010/01/01 12:00以降のファイル」のように表現されてよい。また、特定のキーワードで絞り込むクエリ条件式は、例えば「ファイル内の文字列に『テスト』という文字列を含むファイル」のように表現されてよい。
INPUTローカルアクセス値1272は、データ処理情報1201に係る処理に対するINPUTデータセットの内、当該処理が、ローカルのノード111の記憶装置700からアクセス可能なINPUTデータセットの割合を示す値である。INPUTローカルアクセス値1272は、厳守すべき値ではなく、いわゆる目標値であってよい。
例えば、INPUTローカルアクセス値1272「100%」は、データ処理情報1201に係る処理に対する全てのINPUTデータセットが、当該処理の実行されるローカルのノード111に格納されるべきことを示す。例えば、INPUTローカルアクセス値1272「10%」は、データ処理情報1201に係る処理に対する全てのINPUTデータセットの内、10%以上のINPUTデータセットが、当該処理の実行されるローカルのノード111に格納されるべきことを示す。
OUTPUTデータセットID1280は、OUTPUTデータセットを識別するための値である。OUTPUTデータセットは、データ処理情報1201に含まれるプログラム1240のプログラムから出力され得るデータセットである。
OUTPUTローカルアクセス値1281は、データ処理情報に係る処理によるOUTPUTデータセットの内、当該処理が、ローカルのノード111の記憶装置700に格納するOUTPUTデータセットの割合を示す値である。OUTPUTローカルアクセス値1281も、厳守すべき値ではなく、いわゆる目標値であってよい。
例えば、OUTPUTローカルアクセス値「100%」は、データ処理情報1201に係る処理によるOUTPUTデータセットは、全てローカルのノード111に格納されるべきことを示す。例えば、OUTPUTローカルアクセス値「Free」は、データ処理情報1201に係る処理によるOUTPUTデータセットは、任意のノード111に格納されて格納されてよいことを示す。
図5において、データ処理情報1201aは、処理グループID1210「PG1」の処理グループに属しており、その処理グループにおけるシーケンス番号1230が「1」であることを表す。
そして、データ処理情報1201aは、実行契機1250「毎日午前5時」に、プログラム1240「Hadoop2」及び「Spark/Shark」が、優先度1220「10」で実行されることを表す。
そして、データ処理情報1201aに係る処理は、2つの仮想マシン(1260)で実行されることを表す。そして、1つの仮想マシンを構築するには、4つのCPU(1261)と、8GBのメモリ容量(1263)と、1TBのHDD(1263、1264)と、1Gbpsのネットワーク帯域(1265)と、が必要であることを表す。
そして、データ処理情報1201aは、INPUTデータセットID1270「101」の全てのデータセット(1271)を、プログラム1240「Hadoop2」及び「Spark/Shark」に入力すると、OUTPUTデータセットID1280「102」のデータセットが出力されることを表す。そして、このデータセットの入出力において、INPUTデータセットの50%以上がローカルアクセスであるべきであり(1270)、OUTPUTデータセットの出力先は問わない(1261)ことを表す。
図6は、物理リソース情報テーブル1300の構成例を示す。
物理リソース情報テーブル1300は、分散システム1における、各ノード111の物理リソース情報1301をレコードとして管理する。物理リソース情報1301は、ノード111の有する物理リソースの諸元(性能)及び利用に関する情報である。
物理リソース情報1301は、フィールド値として、ノードグループID1310と、ノードID1320と、CPUリソース1330と、メモリリソース1340と、ディスクリソース1350と、ネットワークリソース1360とを含んでよい。これらのフィールド値は、必要に応じて変更されてよい。
ノードグループID1310は、分散システム1において、1又は2以上のノード111から構成されるノードグループを一意に識別するための値である。ノードグループID1310は、数字若しくは文字列、又はこれらの組み合わせであってよい。ノードグループID1310は、上記のデータセットID1010と同様の方法により、一意性が保証されてもよい。
ノードID1320は、分散システム1において、ノード111を一意に識別するための値である。よって、1つのノードグループID1310に、1又は2以上のノードID1320が対応付けられてよい。ノードID1320の一例としては、IPアドレス、URL及びノード名などがある。ノードID1320は、上記のデータセットID101と同様の方法により、一意性が保証されてもよい。
CPUリソース1330は、ノードID1320のノード111の有するCPUのリソースに関する情報である。CPUリソース1330は、サブフィールド値として、CPUの性能などを示すスペック1331と、CPU又はコアの数を示す総数1332と、総数1332に対する割り当て済み(使用中)のCPU又はコアの割合を示す割当率1333とを含んでよい。
メモリリソース1340は、ノードID1320のノード111の有するメモリのリソースに関する情報である。メモリリソース1340は、サブフィールド値として、メモリ容量を示す総量1341と、総量1341に対する割り当て済み(確保済み)の容量の割合を示す割当率1342とを含んでよい。
ディスクリソース1350は、ノードID1320のノード111の有するディスクのリソースに関する情報である。ディスクリソース1350は、サブフィールド値として、ディスクの種類などを示すスペック1351と、ディスクの容量を示す総量1352と、総量1352に対する割り当て済み(確保済み)の容量の割合を示す割当率1353とを含んでよい。
1つのノードID1320に、複数のディスクリソース1350が対応付けられてもよい。例えば、1つのノードID1320のノード111に、SSD及びSATA(Serial ATA)のディスクが搭載されている場合、そのノードID1320に、それぞれSSD及びSATAのスペック1351を有するディスクリソース1350が対応付けられてよい。
ネットワークリソース1360は、ノードID1320のノード111の有するネットワークのリソースに関する情報である。ネットワーク1360は、サブフィールド値として、ネットワークの種類などを示すスペック1361と、ネットワークの帯域を示す総量1362と、総量1362に対する割り当て済み(確保済み)の帯域の割合を示す割当率1363とを含んでよい。
1つのノードID1320に、複数のネットワークリソース1360が対応付けられてもよい。例えば、1つのノードID1320のノード111が、Ethernet(登録商標)及びFibre Channelに対応している場合、そのノードID1320に、それぞれEthernet及びFibre Channelのスペック1361を有するネットワークリソース1360が対応付けられてよい。
図7は、仮想マシン情報テーブル1400の構成例を示す。
仮想マシン情報テーブル1400は、分散システム1における、各ノード111の仮想マシン情報1401をレコードとして管理する。仮想マシン情報1401は、ノード111の有する仮想マシンの諸元(性能)及び利用に関する情報である。
仮想マシン情報111は、フィールド値として、仮想マシンID1410と、ノードID1420と、CPU数1430と、メモリ容量1440と、ディスク容量1450と、ネットワーク帯域1460と、利用状況1470とを含んでよい。これらのフィールド値は、必要に応じて変更されてよい。
仮想マシンID1410は、分散システム1において、仮想マシン121を一意に識別するための値である。仮想マシンID1410は、上記のデータセットID1010と同様の方法により、一意性が保証されてもよい。
ノードID1420は、仮想マシンID1410の仮想マシン121が格納されているノード111を一意に識別するための値である。ノードID1420と図6のノードID1320は、同じ体系のIDを使用してよい。
CPU数1430は、仮想マシンID1410の仮想マシン121の有する(割り当てられた)仮想的なCPU又はコアの数を示す値である。
メモリ容量1440は、仮想マシンID1410の仮想マシン121の有する(割り当てられた)仮想的なメモリの容量を示す値である。
ディスク容量1450は、仮想マシンID1410の仮想マシン121の有する(割り当てられた)仮想的なディスクの容量を示す値である。
ネットワーク帯域1460は、仮想マシンID1410の仮想マシンの有する(割り当てられた)仮想的なネットワークの帯域を表す値である。
利用状況1470は、仮想マシンID1410の仮想マシン121で実行される処理を示す値である。この処理を示す値は、処理グループID1210及び/又はシーケンス番号1220であってよい。
例えば、図7の仮想マシン情報1401aは、仮想マシンID1410「VM1」の仮想マシン121が、ノードID1420「Node1」のノード111に構築されていることを表す。そして、仮想マシン情報1401aは、仮想マシンID1410「VM1」の仮想マシン121が、「4つ」の仮想CPUと(1430)、「8GB」の仮想メモリと(1440)、「1TB」の仮想ディスクと(1450)、「1Gbps」の仮想ネットワーク帯域と(1460)を有していることを表す。そして、仮想マシン情報1401aは、仮想マシンID1410「VM1」の仮想マシン121で、処理グループID「PG1」(1470)に係る処理が実行されることを示す。
図8は、データブロック格納情報テーブル1500の構成例を示す。
データブロック格納情報テーブル1500は、分散システム1における、データブロック格納情報1501を、レコードとして管理する。データブロック格納情報1501は、ファイルから分割されたデータブロックの格納場所に関する情報である。
データブロック格納情報テーブル1500は、各ノード111の分散ファイルシステム制御部520において管理され、必要に応じて、分散システム1内の各ノード111間で同期されてよい。
データブロック格納情報1501は、フィールド値として、データブロックID1510と、ファイルID1520と、ファイルオフセット1530と、データセットID1540と、格納数1550と、格納場所1560とを含んでよい。
データブロックID1510は、分散システム1において、ファイルから分割された各データブロックを一意に識別するための値である。データブロックID1510は、上記のデータセットID1010と同様の方法により、一意性が保証されてもよい。
ファイルID1520は、分散システム1において、ファイルを一意に識別するための値である。ファイルID1520は、上記のデータセットID1010と同様の方法により、一意性が保証されてもよい。
ファイルオフセット1530は、ファイルID1520のファイルにおける、データブロックID1510のデータブロックのオフセットの位置を示す値である。
データセットID1540は、ファイルID1520のファイルが属するデータセットのデータセットIDを示す値である。データセットID1540と図4のデータセットID1010は、同じ体系のIDを使用してよい。
格納数1550は、データブロックID1510のデータブロックが冗長して(複製されて)格納されている数を示す値である。冗長して格納される数は、分散システム1のデフォルト値として設定されてもよいし、データブロック毎に設定されてもよい。冗長して格納されたデータブロックを、レプリカデータという。格納数1550は、オリジナルのデータブロックとレプリカデータの合計であってもよいし、レプリカデータのみの数であってもよい。
格納場所1560は、データブロックID1510のデータブロックが格納されている、ノード111及びパス名を示す値である。データブロックID1510のレプリカデータが複数存在する場合、格納情報1560には、その複数のレプリカデータの各々の格納場所が含まれてよい。
図9は、データ処理設定画面2000の構成例を示す。
データ処理設定画面2000は、GUI(Graphical User Interface)の一種として構成され、管理者がデータ処理情報テーブル1200に情報を登録するために使用されてよい。
例えば、管理者が、クライアントマシン50を介して分散システム1の或るノード111(又は管理マシン51)にアクセスすると、クライアントマシン50の所定のディスプレイにデータ処理設定画面2000が表示される。データ処理設定画面2000には、データ処理情報テーブル1200に設定されている値が表示されてもよい。未設定の場合、データ処理設定画面2000には、デフォルト値が表示されてもよい。
データ処理設定画面2000は、データ処理情報1201のフィールド値を設定するための入力領域を有する。
処理グループID領域2110に値が入力されると、データ処理情報テーブル1200において、その入力された値を処理グループID1210とする1又は2以上のデータ処理情報1201が特定される。ここで、この特定された1又は2以上のデータ処理情報1201を、「データ処理情報グループ」という。すなわち、データ処理情報グループには、設定の対象となる1又は2以上のデータ処理情報が含まれる。
管理者が、処理グループID領域2110に値を入力して、「New」ボタン2111を押下すると、処理グループID領域2110に入力された値を処理グループID1210に有する、新規のデータ処理情報1201が生成される。
管理者が、処理グループID領域2110に値を入力して、「Show」ボタン2112を押下すると、処理グループID領域2110に入力された値を処理グループID1210に有する、既存のデータ処理情報1201が抽出され、その抽出されたデータ処理情報1201に設定済みの値が、後述する各入力領域に表示される。
優先度領域2120に入力された値は、データ処理情報1201の優先度1220として設定される。
初期データセット情報の項目において、データソースID領域2130に入力された値は、新規のデータセット情報1001のデータソースID1020として設定される。この新規のデータセット情報1001は、データセット情報テーブル1000に新規登録される。
データ処理設定画面2000は、この入力されたデータソースIDが妥当であるか否か(指定された情報をもとに当該データソースにアクセス可能であるか否か)を判定するための「Check」ボタン2131を有してもよい。例えば、管理者が、データソースID領域2130に値を入力した後に「Check」ボタン2131を押下すると、そのチェック結果がデータ処理設定画面2000に表示されてもよい。
初期データセット情報の項目において、ルートディレクトリ領域2140に入力された値は、上記の新規のデータセット情報1001のルートディレクトリ1030に設定される。
データ処理設定画面2000は、データ処理情報グループに含まれる複数のデータ処理情報1201の各々について、シーケンス番号1230に対応するデータ処理情報を設定するためのGUIを有する。例えば、データ処理設定画面2000は、シーケンス番号毎にデータ処理情報を設定するためのタブ領域2200を有する。各タブ2201、2202、2203には、シーケンス番号が表示されてよい。
例えば、図9において、タブ2201はシーケンス番号「1」の、タブ2202はシーケンス番号「2」の、タブ2203はシーケンス番号「3」のデータ処理情報を設定するためのタブ領域2200を示す。そして、図9は、シーケンス番号「1」のデータ処理情報を設定するためのタブ領域2200が選択されていることを表す。ここで、対象データ処理情報の内、選択されているタブのシーケンス番号に対応するデータ処理情報を、「対象データ処理情報」という。
タブ(シーケンス番号)は、任意に追加及び削除できてよい。例えば、図9において、「+」ボタン2204が押下されると、新規タブ(シーケンス番号)が追加され、「−」ボタン2205が押下されると、最後のタブ(シーケンス番号)(又はアクティブなタブ)が削除されてよい。
プログラム領域2210に入力された値は、対象データ処理情報におけるプログラム1240に設定される。例えば、管理者は、プログラム領域2210に、プログラムの格納されているパス名又はプログラム名などを入力する。
「Ref」ボタン2211が押下されると、ファイルシステムから、プログラム領域2210に入力されたプログラムの格納されているパス名が探索され、その結果が表示されてもよい。
実行契機領域2220に入力された値は、対象データ処理情報における実行契機1250に設定される。「+」ボタン2221が押下されると、実行契機領域2220が追加され、複数の処理実行契機が入力できるようになってよい。「−」ボタン2222が押下されると、複数の処理実行契機の中の1つが削除されてよい。
仮想マシン数領域2230に入力された値は、対象データ処理情報における仮想マシン数1260に設定される。
各仮想マシンに割り当てる物理リソースは、次のように入力される。CPU領域2240に入力された値は、対象データ処理情報におけるCPU数1261に設定される。メモリ領域2241に入力された値は、対象データ処理情報におけるメモリ容量1262に設定される。
ディスクタイプ領域2242に入力された値は、対象データ処理情報におけるディスクタイプ1263に設定される。ディスク容量領域2243に入力された値は、対象データ処理情報におけるディスク容量1264に設定される。「+」ボタン2245が押下されると、ディスクタイプ領域2242及びディスク容量領域2243が追加され、複数のディスクタイプ及びディスク容量が入力できるようになってよい。「−」ボタン2246が押下されると、複数のディスクタイプ及びディスク容量の中の1つが削除されてよい。
ネットワーク領域2244に入力された値は、対象データ処理情報におけるネットワーク1265に設定される。
INPUTデータセットに係る情報は、次のように入力される。INPUTデータ絞込条件領域2250に入力された値は、対象データ処理情報におけるINPUTデータ絞込条件1271に設定される。
INPUTローカルアクセス値領域2251に入力された値は、対象データ処理情報におけるINPUTローカルアクセス値1272に設定される。OUTPUTローカルアクセス値領域2260に入力された値は、対象データ処理情報におけるOUTPUTローカルアクセス値1281に設定される。
INPUTローカルアクセス値1272及び/又はOUTPUTローカルアクセス値1281には、自動的に推奨値が設定されてもよい。INPUTローカルアクセス値1272の推奨値は、シーケンス番号が小さいほど小さくなり、シーケンス番号が大きいほど大きくなるとしてもよい。例えば、2段階から構成される処理を設定する場合、1段目(シーケンス番号「1」)のINPUTローカルアクセス値の推奨値を50%とし、1段目の出力結果を利用して処理を行う2段目(シーケンス番号「2」)のINPUTローカルアクセス値の推奨値を100%としてもよい。
INPUTローカルアクセス値1272をこのように設定することで、後段の処理ほどデータアクセス範囲が狭く、且つ、高頻度にアクセスするケースにおいて、ローカルアクセスの頻度を高めることができる。それにより、多段処理の全体における処理のオーバーヘッドを低減することができる。
また、INPUTローカルアクセス値1272の推奨値をシステムが自動的に設定(提示)することにより、管理者の負担が軽減される。すなわち、管理者は、多段処理における処理シーケンスの段数などを考慮した上で、各処理におけるローカルアクセス値を設定するという負担から解放される。
「Create」ボタン2001が押下されると、上記において入力された値の設定された対象データ処理情報が、データ処理情報テーブル1200に新規登録される。このとき、同じ処理グループIDを有するデータ処理情報が既にデータ処理情報テーブル1200に登録されている場合、新規登録エラーが表示されてもよい。
「Update」ボタン2002が押下されると、上記において入力された値の設定された対象データ処理情報が、データ処理情報テーブル1200に更新登録される。このとき、同じ処理グループIDを有するデータ処理情報がデータ処理情報テーブル1200に登録されていない場合、更新登録エラーが表示されてもよい。
また、上記の新規登録及び更新登録時に、対象データ処理情報に入力された値の検証が行われてもよい。そして、値が不整合な場合又は現在の物理リソースで対応が困難な場合には、その旨のエラーが表示されてもよい。
また、処理グループID領域2110に値が入力され、「Delete」ボタン2003が押下されると、その入力された処理グループID1210の値を有するデータ処理情報が、データ処理情報テーブル1200から削除されてもよい。
なお、データ処理設定画面2000から入力可能な値は、所定の設定ファイルとして分散システム1にインポートされてもよい。例えば、図9の設定ファイルインポート領域2510に設定ファイル名が入力され、「Import」ボタン2512が押下されると、この設定ファイルの内容が対象データ処理情報として、データ処理情報テーブル1200に登録されてもよい。また、「Ref」ボタン2511が押下されると、ファイルシステムから、設定ファイルインポート領域2510に入力された設定データの格納されているパス名が検索され、その結果が表示されてもよい。
図10は、ジョブ設定画面4000の構成例を示す。
ジョブ設定画面4000は、GUIの一種として構成され、管理者がジョブスケジュール情報テーブル1600にジョブスケジュール情報1601を登録するために使用されてよい。例えば、管理者が、クライアント50を介して分散システム1の或るノード111(又は管理マシン51)にアクセスすると、クライアント50の所定のディスプレイにジョブ設定画面4000が表示される。ジョブ設定画面4000には、ジョブスケジュール情報テーブル1600に設定されている値が表示されてもよい。未設定の場合、ジョブ設定画面4000には、デフォルト値が表示されてもよい。
ジョブ設定画面4000は、ジョブスケジュール情報1601のフィールド値を設定するための入力領域を有する。
ジョブID領域4110に値が入力されると、ジョブスケジュール情報テーブル1600において、ジョブID1610にその入力された値を有するジョブスケジュール情報1601が特定される。この特定されたジョブスケジュール情報1601を、「対象ジョブスケジュール情報」という。すなわち、対象ジョブスケジュール情報とは、設定の対象となるジョブスケジュール情報である。
ジョブID領域4110に値を入力して、「New」ボタン4111を押下すると、そのジョブID領域4110に入力された値をジョブID1610に有する、新規のジョブスケジュール情報が生成されてもよい。ジョブID領域4110に値を入力して、「Show」ボタン4112を押下すると、そのジョブID領域4110に入力された値をジョブID1610に有する、既存のジョブスケジュール情報が抽出され、その抽出されたジョブスケジュール情報に設定済みの値が、後述する各入力領域に表示されてもよい。
処理グループID領域4120に入力された値は、対象ジョブスケジュール情報の処理グループID1620として設定される。
シーケンス番号領域4130に入力された値は、対象ジョブスケジュール情報のシーケンス番号1630として設定される。
実行形態領域4140に入力された値は、対象ジョブスケジュール情報の実行形態1650として設定される。
実行契機領域4150に入力された値は、対象ジョブスケジュール情報の実行日時1640に設定される。「+」ボタン4113及び「−」ボタン4114が押下された場合の動作は、図9における、実行契機領域2220の「+」ボタン2221及び「−」ボタン2222と同様であってよい。
優先度領域4160に入力された値は、対象ジョブスケジュール情報の優先度1670に設定される。
プログラム領域4170に値が入力されると、ジョブID4110のジョブが実行されるとき、処理グループID領域4120に入力された処理グループIDについて設定されたプログラム2210に代えて、このプログラム領域4170に入力された値のプログラムが実行されてよい。
「Ref」ボタン4115が押下されると、ファイルシステムから、プログラム領域4175に入力されたプログラムの格納されているパス名が検索され、その結果が表示される。
「Create」ボタン4001が押下されると、上記において入力された値を有する対象ジョブスケジュール情報が、ジョブスケジュール情報テーブル1600に新規登録される。このとき、同じジョブIDを有するジョブスケジュール情報が既にジョブスケジュール情報テーブル1600に登録されている場合、新規登録エラーが表示されてもよい。
「Update」ボタン4002が押下されると、上記において入力された値を有する対象ジョブスケジュール情報が、ジョブスケジュール情報テーブル1600に更新登録される。このとき、同じジョブIDを有するジョブスケジュール情報がジョブスケジュール情報テーブル1200に登録されていない場合、更新登録エラーが表示されてもよい。
ジョブID領域4110に値が入力され、「Delete」ボタン4003が押下されると、その入力されたジョブID1610の値を有するジョブスケジュール情報1601が、ジョブスケジュール情報テーブル1600から削除されてもよい。
上述では、値の入力、更新及び表示の手段としてGUIの例を説明したが、他の手段であってもよい。他の手段の一例としては、CLI(Command Line Interface)又はAPI(Application Programming Interface)などがある。
図11は、データ処理情報の登録に関する処理例を示すフローチャートである。
オーケストレーション制御部570は、データ処理設定画面2000に入力されたデータ処理情報を含む登録処理グループを受信する(S101)
オーケストレーション制御部570は、物理リソース情報テーブル1300を参照し(S102)、登録処理グループの要求する物理リソースを確保できるか否かを判定する(S103)。当該判定処理の詳細については、後述する(図12参照)。
登録処理グループの要求する物理リソースを確保できる場合(S103:Yes)、オーケストレーション制御部570は、後述するS107の処理に進む。
登録処理グループの要求する物理リソースを確保できない場合(S103:No)、オーケストレーション制御部570は、次のS104の処理に進む。
オーケストレーション制御部570は、登録処理グループの優先度よりも優先度の低いデータ処理情報よって確保されている物理リソースを解放すれば、登録処理グループの要求する物理リソースを確保できるか否か判定する(S104)。例えば、次のように判定する。
まず、分散システム1の有する全ての物理リソースを対象にして、登録処理グループの要求する物理リソースを確保できるか否か判定する。この判定を第1判定とする。この第1判定は、後述の図12に相当する。第1判定において物理リソースを確保できないと判定した場合、オーケストレーション制御部570は、本処理をエラーとして終了する(S104:No)。
第1判定において物理リソースを確保できると判定した場合、次にオーケストレーション制御部570は、データ処理情報テーブル1200の中から、登録処理グループの優先度よりも低い優先度のデータ処理情報1201を抽出する。このようなデータ処理情報を抽出できない場合、オーケストレーション制御部570は、本処理をエラーとして終了する(S104:No)。
このようなデータ処理情報を抽出できる場合、次にオーケストレーション制御部570は、この抽出した低い優先度のデータ処理情報1201に係る仮想マシンを別のノード111に移動すれば、登録処理グループの要求する物理リソースを確保できるか否か判定する。この判定を第2判定とする。
第2判定において物理リソースを確保できると判定した場合、オーケストレーション制御部570は、この移動対象の仮想マシンに割り当てられている物理リソースを特定する。また、オーケストレーション制御部570は、この移動対象の仮想マシンの移動先候補となるノードを抽出する。そして、オーケストレーション制御部570は、S105の処理に進む(S104:Yes)。
第2判定において物理リソースを確保できないと判定した場合、次にオーケストレーション制御部570は、この抽出した低い優先度のデータ処理情報に係る仮想マシンに割り当てられている物理リソースを解放(つまり、この仮想マシンを停止)すれば、登録処理グループの要求する物理リソースを確保できるか否か判定する。この判定を第3判定とする。
第3判定において物理リソースを確保できると判定した場合、オーケストレーション制御部570は、この解放対象の仮想マシンに割り当てられている物理リソースを特定する。そして、オーケストレーション制御部570は、S105の処理に進む(S104:Yes)。
第3判定において物理リソース群を確保できないと判定した場合、オーケストレーション制御部570は、本処理をエラーとして終了する(S104:No)。
S105において、オーケストレーション制御部570は、仮想マシンの移動又は停止に伴う物理リソースの解放を、物理リソース情報テーブル1300に反映する(S105)。
オーケストレーション制御部570は、ジョブ制御部550に対して、リプロビジョニング処理を依頼する(S106)。リプロビジョニング処理は、物理リソースの割り当てを変更するための処理である。リプロビジョニング処理の詳細については、後述する(図15参照)。
オーケストレーション制御部570は、登録処理グループに関する物理リソースの確保を、物理リソース情報テーブル1300に反映する(S107)。
オーケストレーション制御部570は、ジョブ制御部550に対して、プロビジョニング処理を依頼する(S108)。プロビジョニング処理の依頼を受信したリソース割当制御部540は、ノードから要求された(確保された)物理リソースの割り当てられた仮想マシンを生成し、この仮想マシンに分析処理のソフトウェアをインストールする。これらの処理はリソース制御部540から依頼を受けた、ハイパーバイザ制御部530が実行してもよい。
オーケストレーション制御部570は、登録処理グループに含まれるデータ処理情報を、データ処理情報テーブル1200に登録する(S109)。
オーケストレーション制御部570は、S108のプロビジョニング処理の完了を待つ(S110:No)。プロビジョニング処理が完了すると(S110:Yes)、オーケストレーション制御部570は、次のS111の処理に進む。
S111において、オーケストレーション制御部570は、S108のプロビジョニング処理及びS106のリプロビジョニング処理の結果を、仮想マシン情報テーブル1400に反映する(S111)。
オーケストレーション制御部570は、分散ファイルシステム200上に、データ格納場所(ルートディレクトリ)を作成する(S112)。初期データセットに対するルートディレクトリは、データ処理設定画面2000のルートディレクトリ領域2140に入力された値であってよい。それ以外のデータセットに対するルートディレクトリは、分散システム1によって自動的に決定されてもよい。
オーケストレーション制御部570は、データセット情報テーブル1000を更新し(S113)、本処理を終了する。
以上の処理により、データ処理設定画面2000を通じて入力された登録処理グループに係る処理を実行するための環境が、分散システム1に構築される。
図12は、物理リソースの確保の判定に関する処理例を示すフローチャートである。本処理は、図11のS103又はS104の判定処理に相当する。
オーケストレーション制御部570は、物理リソースの確保の判定を、ボトムアップ方式又はトップダウン方式の何れで行うかを選択する(S121)。この選択は、管理者に選択させてもよいし、設定に基づいて、分散システム1が自動的に選択してもよい。
ボトムアップ方式とは、同じ処理グループに属する複数の対象データ処理情報の内、シーケンス番号の小さい対象データ処理情報から順に、その対象データ処理情報に係る処理に必要な物理リソースを確保できるか否かを評価する方法である。ボトムアップ方式は、多段処理の前段に係る対象データ処理情報を先に評価するため、多段処理の前段に係る処理が、概して、特定の物理ノード群に集約される。
トップダウン方式とは、同じ処理グループに属する複数の対象データ処理情報群の内、シーケンス番号の大きい対象データ処理情報から順に、その対象データ処理情報に係る処理に必要なリソースを確保できるか否かを評価する方法である。トップダウン方式は、多段処理の後段に係る対象データ処理情報を先に評価するため、多段処理の後段に係る処理が、概して、特定の物理ノード群に集約される。
ボトムアップ方式を選択する場合(S121:Yes)、オーケストレーション制御部570は、ボトムアップ処理(S122)を実行する。当該ボトムアップ処理の詳細については、後述する(図13参照)。
トップダウン方式を選択する場合(S121:No)、オーケストレーション制御部570は、トップダウン処理(S123)を実行する。当該トップダウン処理の詳細については、後述する(図14参照)。
その後、オーケストレーション制御部570は、ボトムアップ処理(S122)又はトップダウン処理(S123)が正常終了であるか否かを判定する(S124)。エラー終了の場合(S124:No)、オーケストレーション制御部570は、物理リソースの確保が不可能であると判定し(S129)、図11に示す処理に戻る。
正常終了の場合(S124:Yes)、オーケストレーション制御部570は、登録処理グループ内の全てのデータ処理情報について、S125〜S127の処理を完了したか否か判定する(S125)。
登録処理グループ内の全てのデータ処理情報について処理を完了した場合(S125:Yes)、オーケストレーション制御部570は、物理リソースの確保が可能であると判定し(S128)、その判定結果を図11に示す処理に渡すと共に、図11の処理に戻る。このとき、オーケストレーション制御部570は、図11に示す処理に戻った後に行われる物理リソース情報テーブル1300の更新処理おいて更新に要する情報も、図11に示す処理に渡す。すなわち、オーケストレーション制御部570は、S128の判定結果と確保対象となる物理リソースの情報とを一緒に、図11に示す処理に渡す。ここで図11に示す処理に渡す物理リソースの情報の一例としては、当該データ処理内容に関する各処理シーケンスにおいて作成する仮想マシンの割り当て物理ノード識別情報と、作成する仮想マシン数と、その仮想マシンが利用する計算機資源(CPU、メモリ、ディスク、ネットワークなど)の情報などがある。
登録処理グループ内に未処理のデータ処理情報が残っている場合(S125:No)、オーケストレーション制御部570は、未処理のデータ処理情報の1つの選択する(S126)。つまり、登録処理グループ内の未処理のシーケンス番号の1つを選択する。
次に、オーケストレーション制御部570は、その選択したデータ処理情報に係る仮想マシン121が配置されるノード数を算出する。すなわち、オーケストレーション制御部570は、その選択したデータ処理情報のシーケンス番号に係る処理に使用されるノード数を知る。仮想マシンが配置されるノード数は、ノードリストに含まれる情報に基づいて算出されてよい。ノードリストは、S122のボトムアップ処理又はS123のトップダウン処理において生成される。詳細については後述するが、ノードリストには、ノードIDと、シーケンス番号と、そのノードにおいて確保された物理リソースの値とが、対応付けて登録されている。
そして、オーケストレーション制御部570は、仮想マシンが配置されるノード数が、閾値以下であるか否か判定する(S127)。ここで、仮想マシン121の配置されるノード毎にレプリカデータが配置される場合、オーケストレーション制御部570は、レプリカデータ数が閾値以下であるか否かを判定してもよい。レプリカデータが大量に生成され、ディスクリソースが大量に消費されることを防ぐためである。この閾値は、デフォルト値として設定されていてもよいし、管理者によって個別に設定されてもよい。
仮想マシンが配置されるノード数が閾値以下である場合(S127:Yes)、オーケストレーション制御部570は、S125の処理に戻る。仮想マシンが配置されるノード数が閾値よりも多い場合(S127:No)、オーケストレーション制御部570は、物理リソースの確保が不可能である旨の判定を行い(S129)、図11に示す処理に戻る。
以上の処理により、登録処理グループに関する処理に対して、物理リソースの確保が可能か否か判定される。
図13は、ボトムアップ処理の例を示すフローチャートである。本処理は、図12のS122に相当する。
オーケストレーション制御部570は、登録処理グループ内の全てのデータ処理情報について、S141〜S151の処理を完了している場合(S141:Yes)、処理を終了する。
未処理のデータ処理情報が残っている場合(S141:No)、オーケストレーション制御部570は、未処理の中でシーケンス番号が最小のデータ処理情報を選択する(S142)。つまり、多段処理における前段のデータ処理情報から順に、以下の処理を実行する。
次に、オーケストレーション制御部570は、選択したデータ処理情報のシーケンス番号が「1」であるか否か判定する(S143)。シーケンス番号は多段処理の段数を示す。
シーケンス番号が「1」である場合(S143:Yes)、オーケストレーション制御部570は、変数PN1に分散システム1を構成するノードの数(最大ノード数)を代入する。ここで、変数PN1は、本処理において、シーケンス番号がNの場合(S144ではN=1)における仮想マシン向け物理リソース確保処理において、計算機システムに属するノード群の中から、物理リソース確保対象として選択可能なノードの数を示す。本処理では、後述する通り、所定の条件に適合するノードが適宜選択され、その選択されたノードから必要な物理リソースが確保される。変数PN1は、ノードが選択されたときに減算される。これにより、変数PN1が「0」の場合は、物理リソース確保可能なノードが存在しないと判別することができる。すなわち、変数PN1の値を、本処理の終了条件の一つとして利用することができる。
また、オーケストレーション制御部570は、ノードリストを初期化する(S144)。そして、オーケストレーション制御部570は、S146の処理に進む。ここで、ノードリストは、本処理において、データ処理情報のシーケンス番号ごとに、ノードに作成される仮想マシンの数と、各仮想マシンに割り当てる物理リソースの情報(CPU、メモリ、ディスク、ネットワーク等)とを管理する。ノードリストの初期化とは、ノードリストに登録されている情報を空(NULL)にすることであってよい。ノードリストには、計算機システムに属するノード群の中から仮想マシンの作成対象として選択されたノードの識別情報が、適宜追加される。また、ノードに実際に物理リソースを割り当てて仮想マシンを作成することが決定された場合、ノードリストにおいて、実際に割り当てる物理リソースの情報と、仮想マシンを利用する処理に関連付けられているシーケンス番号(すなわち、多段処理を行う際に、当該処理が何段目に行われるのかを示す情報)と、ノードの識別情報とが、関連付けられて管理される。これにより、オーケストレーション制御部570は、本処理を終了した段階でノードリストを参照することにより、ノードリストに登録されている各ノードについて、どのシーケンス番号の処理向けに何個の仮想マシンを作成する必要があるのか、及び、各仮想マシンを作成するにあたりどれだけの物理リソースを割り当てればよいのかなどを判別することができる。
シーケンス番号が「1」でない場合(S143:No)、オーケストレーション制御部570は、変数PN1に現在利用可能なノードの数を代入し(S145)、S146の処理に進む。
例えば、オーケストレーション制御部570は、
PN1 = min(PNS/ILA1−PNS,最大ノード数−PNS) …(式1)
を算出する。
ここで、「PNS」は、現在のノードリストに追加されているノード数を示す。「ILA1」は、今回のループ処理で選択されたデータ処理情報のINPUTローカルアクセス値を示す。つまり、多段処理における、本段のシーケンス番号の処理に関するINPUTローカルアクセス値を示す。
「min」は、複数の値の内、最小の値を返す関数である。よって、変数PN1は、「PNS/ILA1−PNS」と「最大ノード数−PNS」の内の何れか小さい方の値となる。ここで、「PNS/ILA1−PNS」の式で算出される値が意味するものは、本処理の今回のループ処理で選択されたデータ処理情報のINPUTローカルアクセス値を鑑みた上で今回のループ処理で新たにノードリストに追加するために選択可能なノードの数を示す。例えば、ILA1の値が「100%」の場合、式1の値は「0」になる。この場合、今回のループ処理では、前段のループ処理までに選択されノードリストに追加されたノードの中から仮想マシン向けに必要な物理リソースの割り当てが可能か否かを判断する必要がある。なぜならば、そうしなければINPUTローカルアクセス値「100%」の条件を満たすことができないためである。同様の例として、ILA1の値が「50%」であって、PNSの値が「1」である場合、式1の値は「1」となる。この場合、今回のループ処理では、前段のループ処理までに選択されノードリストに追加された1つのノードに加えて、もう1つのノードを対象に、仮想マシン向けに必要な物理リソースの割り当てが可能か否かを判断する必要がある。
「最大ノード数−PNS」の式で算出される値が意味するものは、計算機システムに属するノードの中で物理リソースが未割り当てのノードの最大値である。式1は、「PNS/ILA1−PNS」の式で算出される値が最大値(つまり、「最大ノード数−PNS」)を超えてしまった場合に、最大値を変数PN1に設定する。これにより、システム上ありえない値が変数PN1に設定されることを防止している。
S146において、オーケストレーション制御部570は、選択したデータ処理情報に含まれる要求リソース情報の各値を、第1変数に代入する(S146)。
例えば、第1変数に含まれる変数V、C、M、DT、DS、Nには、それぞれ以下の値が代入される。
変数Vに、要求リソース情報の仮想マシン数が代入される。
変数Cに、要求リソース情報のCPU数が代入される。
変数Mに、要求リソース情報のメモリ容量が代入される。
変数DTに、要求リソース情報のディスクタイプが代入される。
変数DSに、要求リソース情報のディスク容量が代入される。
変数Nに、要求リソース情報のネットワーク帯域が代入される。
次に、オーケストレーション制御部570は、ノードリスト内に、後述のS148で未選択、且つ、利用可能なノードが存在するか否か判定する(S147)。利用可能なノードとは、例えば、利用可能な物理リソースがまだ残っているノードである。シーケンス番号「1」についての処理であれば、ノードリストは初期化されており、S147はNoと判定される。
シーケンス番号「2」以降の処理であって前段で選択されたノードがノードリストに追加されている場合(S147:Yes)、オーケストレーション制御部570は、その中からノードを1つ選択し、その選択したノードにおいて利用可能な物理リソースを示す各値を、第2変数に代入する(S148)。本ステップにより前段の仮想マシンを設定したノードが優先的に他の仮想マシン設定ノードとして選択される。利用可能な物理リソースを示す各値は、その選択したノードの物理リソース情報に基づいて算出されてよい。
例えば、第2変数に含まれる変数C1、M1、DT1、DS1、M1には、それぞれ以下の値が代入される。
変数C1に、選択したノードにおいて利用可能なCPU数が代入される。
変数M1に、選択したノードにおいて利用可能なメモリ容量が代入される。
変数DT1に、選択したノードにおいて利用可能なディスクタイプが代入される。
変数DS1に、選択したノードにおいて利用可能なディスク容量が代入される。
変数N1に、選択したノードにおいて利用可能なネットワーク帯域が代入される。
オーケストレーション制御部570は、第2変数の示す利用可能な物理リソースから、第1変数の示す要求リソースを確保できるか否か判定する(S149)。すなわち、オーケストレーション制御部570は、S148で選択したノードに、S142で選択したデータ処理情報に係る処理を実行するための仮想マシンを配置できるか否かについて判定しているともいえる。
例えば、オーケストレーション制御部570は、「C<C1」、「M<M1」、「DTとDT1が一致」、「DS<DS1」及び「N<N1」の全ての条件を満たすならば、当該ノードを仮想マシン設定に利用可能としてS149の判定を「Yes」としてS150に進み、何れかの条件を満たさないならば、S147に戻る。
S150において、オーケストレーション制御部570は、第1変数の仮想マシン数から「1」を減算する。また、オーケストレーション制御部570は、ノードリストに、選択したノードのノードIDと、S142で選択したシーケンス番号と、そのノードにおいて確保された物理リソースの値(例えば、第1変数)とを、対応付けて追加する(S150)。すなわち、オーケストレーション制御部570は、当該ノードにおいて実際に物理リソースを割り当てて仮想マシンを作成することを決定したので、実際に割り当てる物理リソースの情報、及び、当該仮想マシンを利用する処理に関連付けられているシーケンス番号(すなわち、多段処理を行う際に、当該処理が何段目に行われるのかを示す情報)を、当該ノードの識別情報と関連付けてノードリストに追加する。また、ノードリストに新たなノードを追加する際、今回のループ処理(同一のシーケンス番号を有するデータ処理情報に関する処理)において、別のノードから物理リソースの割り当てを行う旨がノードリストに既に登録されている場合は、当該シーケンス番号における処理のINPUTローカルアクセス値の条件を満たすために、当該ノード及び別のノードに、INPUTデータの複製を保持させる必要がある。この場合、オーケストレーション制御部570は、ノードリストに、対象となるデータセットの複製が当該ノード及び別のノードに冗長して格納されている旨を示す情報を追加してよい。実際に各ノードに仮想マシンを作成するにあたり、この冗長格納を示す情報がノードリストに登録されている場合は、この冗長格納を示す情報に基づいて、各ノードに必要なINPUTデータを複製する処理が行われる。
さらに、オーケストレーション制御部570は、第2変数の各値から「1」を減算する。例えば、オーケストレーション制御部570は、第2変数の各値から、第1変数の各値を、次のように減算する。
変数C1から、変数Cを減算する。
変数M1から、変数Mを減算する。
変数DS1から、変数DSを減算する。
変数N1から、変数Nを減算する。
次に、オーケストレーション制御部570は、第1変数の仮想マシン数が「0」か否かを判定する(S151)。すなわち、オーケストレーション制御部570は、S142で選択したデータ処理情報が要求する全ての仮想マシンに対して、物理リソースの確保を完了したか否か判定する。
第1変数の仮想マシン数が「0」でない場合(S151:No)、オーケストレーション制御部570は、S149の処理に戻る。第1変数の仮想マシン数が「0」である場合(S151:Yes)、オーケストレーション制御部570は、S141の処理に戻り、別のデータ処理情報を選択する。
上記のS147の判定において、ノードリスト内に、S148で未選択、且つ、利用可能なノードが存在しない場合(S147:No)、オーケストレーション制御部570は、次のS156の処理に進む。
オーケストレーション制御部570は、変数PN1が「0」より大きいか否かを判定する(S156)。すなわち、仮想マシンを配置することができるノードが残っているかどうかを判定する。そのようなノードが存在しない場合(S156:No)、本処理で所定の条件を満たす仮想マシン向けの物理リソースの割り当てが不可能と判定し、本処理をエラー終了とする。そのようなノードが存在する場合(S156:Yes)、次のS152の処理に進む。
オーケストレーション制御部570は、未選択、且つ、(ノードリスト内に限らず)利用可能なノードが存在するか否か判定する(S152)。すなわち、オーケストレーション制御部570は、この選択したデータ処理情報に係る処理を実行するための仮想マシンを配置することができるノードが、計算機システム内に存在するか否か判定する。
そのようなノードが存在する場合(S152:Yes)、オーケストレーション制御部570は、変数PN1から「1」を減算する(S153)。つまり、オーケストレーション制御部570は、利用可能なノード数を減らす。
そして、オーケストレーション制御部570は、その中からノードを1つ選択し、その選択したノードにおいて利用可能な物理リソースを示す各値を、第2変数に代入する(S154)。この処理は、S148の処理と同様である。そして、オーケストレーション制御部570は、S149の処理に進む。
S152において、そのようなノードが存在しない場合(S152:No)、オーケストレーション制御部570は、次の処理を行う。
オーケストレーション制御部570は、選択したデータ処理情報のOUTPUTローカルアクセス値が100%であるか否か判定する(S155)。すなわち、オーケストレーション制御部570は、選択したデータ処理情報に係る処理の出力先が、ローカルのノードに限定されているか否か判定する。
OUTPUTローカルアクセス値が100%である場合(S155:Yes)、オーケストレーション制御部570は、エラーが発生したとして処理を終了とする。なぜなら、S152の判定が「No」であり、且つ、OUTPUTローカルアクセス値を100%とする条件は、満たすことができないからである。
OUTPUTローカルアクセス値が100%ではない場合(S155:No)、オーケストレーション制御部570は、上記のS154の処理に進む。
なお、OUTPUTローカルアクセス値の条件が目標値である場合、オーケストレーション制御部570は、OUTPUTローカルアクセス値が100%であっても(つまり、S155の判定が「Yes」であっても)、S154の処理に進んでもよい。
以上のボトムアップ処理により、登録処理グループに属するデータ処理情報に関し、ノードリストが生成される。これにより、オーケストレーション制御部570は、図12に示す処理において、物理リソースを確保可能か否か判定することができるようになる。
図14は、トップダウン処理の例を示すフローチャートである。本処理は、図12のS123に相当する。
図14に示すS161〜S176の処理は、S162(S142に相当)、S163(S143に相当)及びS165(S145に相当)を除き、図13に示すS141〜S156の処理と同様である。そこで、以下では、S162、S163及びS165の処理のみを説明し、図13と同様の処理については説明を省略する。
S162において、オーケストレーション制御部570は、未処理の中でシーケンス番号が最大のデータ処理情報を選択する(S162)。つまり、多段処理における後段のデータ処理情報から順に処理を実行する。
S163において、オーケストレーション制御部570は、選択したデータ処理情報のシーケンス番号が「最大値」であるか否か判定する(S163)。
シーケンス番号が「最大値」である場合(S163:Yes)、オーケストレーション制御部570は、S164の処理に進む。シーケンス番号が「最大値」でない場合(S163:No)、オーケストレーション制御部570は、S165の処理に進む。
S165において、オーケストレーション制御部570は、変数PN1に現段階で利用可能なノードの数を代入し(S165)、S166の処理に進む。ただし、この変数PN1は、以下のように、図13のS145とは異なる方法で算出されてよい。
例えば、オーケストレーション制御部570は、
PN1 = min(PNS/ILA2−PNS,最大ノード数−PNS) …(式2)
を算出する。
ここで、変数ILA2は、前回のループ処理で選択されたデータ処理情報のINPUTローカルアクセス値を示す。つまり、多段処理における、前段のシーケンス番号の処理に関するINPUTローカルアクセス値を示す。これにより、前段の処理のINPUTローカルアクセス値に基づいて、本段の処理に利用可能なノード数を算出することができる。他の変数については、図13で説明したとおりである。
以上のトップダウン処理により、登録処理グループに属するデータ処理情報に関し、ノードリストが生成される。これにより、オーケストレーション制御部570は、図12に示す処理において、物理リソースを確保可能か否か判定することができるようになる。
ボトムアップ処理及びトップダウン処理の何れによっても、物理リソースを確保可能か否か判断することができるが、選択される処理によって、各データ処理情報に係る仮想マシンが配置されるノード、及びその仮想マシンに提供される物理リソースなどが異なり得る。
以上の処理により、ノードに仮想マシンが生成(配置)されると共に、その仮想マシンに分析処理に係るソフトウェアがインストールされる。
図15は、リプロビジョニング処理の例を示すフローチャートである。本処理は、図11のS106の処理に相当する。
リソース割当制御部540は、リプロビジョニング処理の依頼を受信すると、以下の処理を実行する(S301)。
リソース割当制御部540は、依頼された全てのノードについて、S302〜S306の処理を完了したか否か判定する(S302)。全て完了した場合(S302:Yes)、リソース割当制御部540は、処理を終了する。
未処理のノードが残っている場合(S302:No)、リソース割当制御部540は、未処理のノードの1つを選択する(S303)。
リソース割当制御部540は、その選択したノードに、移動又は削除の対象の仮想マシンが存在するか否か判定する(S304)。
そのような仮想マシンが存在しない場合(S304:No)、リソース割当制御部540は、S302に戻り、残りの未処理のノードについて同様の処理を行う。
そのような仮想マシンが存在する場合(S304:Yes)、リソース割当制御部540は、選択したノードにおける、移動又は削除の対象の仮想マシンを特定する(S305)。
そして、リソース割当制御部540は、特定した仮想マシンの移動又は削除を行う(S306)。リソース割当制御部540は、この処理をハイパーバイザ制御部530に依頼してもよい。この依頼を受信したハイパーバイザ制御部530は、S303で選択されたノードから、特定された仮想マシンを移動又は削除する。つまり、ハイパーバイザ制御部530は、S303で選択されたノードにおいて、その特定された仮想マシンに割り当てられていた物理リソースを解放する。
これらの処理が完了した後、リソース割当制御部540は、S302の処理に戻り、残りの未処理のノードについて同様の処理を行う。
以上の処理により、ノードにおいて仮想マシンに確保されていた物理リソースが解放される。これにより、この物理リソースが解放されたノードに、新たな仮想マシン(例えば、優先度の高い)を生成することができるようになる。
図16は、データ格納処理の例を示すフローチャートである。
分散ファイルシステム制御部520は、データブロックの格納要求を受信すると、以下の処理を実行する(S501)。このデータブロックは、クライアント50から格納要求として送信されたデータセットから分割されたものであってよい。
分散ファイルシステム制御部520は、データセット情報テーブル1000の中に、格納対象のデータブロックに対応するデータセットIDが存在するか否かを判定する(S503)。
適合するデータセットIDが存在しない場合(S503:No)、分散ファイルシステム制御部520は、通常のデータブロックの格納処理を行い(S504)、処理を終了する。つまり、新規のデータブロックの格納処理を行う。
適合するデータセットIDが存在する場合(S503:Yes)、分散ファイルシステム制御部520は、格納対象のデータブロックの格納先のノードを選定する(S505)。例えば、分散ファイルシステム制御部520は、S503において適合したデータセットIDを含むデータセット情報に設定されているノード(例えば、プライマリデータ格納ノード1040に格納されているノード)の中から、条件(例えば、プライマリデータ格納方法1050の条件)に適合するノードを選定する。
次に、分散ファイルシステム制御部520は、格納対象のデータブロックを、その適合したデータセット情報に含まれる格納数1550の分、ノード111に格納し終えたか否か判定する(S506)。すなわち、分散ファイルシステム制御部520は、格納対象のデータブロックとそのレプリカデータの数が、格納数1550に一致したか否かを判定する。
まだデータブロックを格納する必要がある場合(S506:No)、分散ファイルシステム制御部520は、格納対象のデータブロックを、格納先のノードに格納する(S507)。分散ファイルシステム制御部520は、格納先のノードのファイルシステム制御部510に、データブロックの格納処理を依頼してよい。格納処理が完了した後、分散ファイルシステム制御部520は、S506の処理に戻る。
格納数1550の分、データブロックを格納し終えた場合(S506:Yes)、分散ファイルシステム制御部520は、データブロック格納情報テーブル1500を更新し(S508)、処理を終了する。例えば、分散ファイルシステム制御部520は、データブロックの格納先を、格納場所1560に登録する。
以上の処理により、格納対象のデータブロック及びレプリカデータが、各ノードに分散格納される。
本実施形態によれば、多段分析処理に関する各ソフトウェア及びデータを、各ノードに適切に配置することができる。これにより、ノード間のネットワーク帯域に対する負荷を低減することができる。また、処理の実行においてデータアクセス時に発生するオーバーヘッドを低減することができる。
上述した実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
オーケストレーション制御部570は、何れのノードで実行されてもよい。オーケストレーション制御部570を実行するノードは、所定の条件によって決定されてもよい。複数のノードの内の一部のノードだけがオーケストレーション制御部570を有してもよい。
オーケストレーション制御部570は、複数のノードの内の少なくとも1つのノードに接続された管理マシンが有してもよい。この場合は、何れのノードもオーケストレーション制御部570を有さなくてもよい。管理マシンは、複数のノードが接続されている通信ネットワーク又は別の通信ネットワークを介して、複数のノードの内の少なくとも1つのノードに接続される。