(57)【特許請求の範囲】
【請求項１】
複数の情報処理装置が分散して処理を実行する分散処理システムにおける前記複数の情報処理装置のいずれかからデータのアクセス要求を受信する受信部と、
前記受信部によって前記データのアクセス要求が受信された場合に、オペレーティングシステムが管理するページキャッシュに前記データを記憶しているか否かの問合せを前記複数の情報処理装置各々に実行する問合せ実行部と、
前記問合せ実行部による問合せに対して、前記オペレーティングシステムが管理するページキャッシュに前記データを記憶すると応答した情報処理装置を特定する情報を、アクセス先として要求元の情報処理装置に応答する応答部と
を有することを特徴とする情報処理装置。
【請求項２】
前記応答部は、前記オペレーティングシステムが管理するページキャッシュに前記データを記憶すると応答した情報処理装置が複数ある場合には、最も速く処理を開始できる情報処理装置を特定する情報を、前記要求元の情報処理装置に応答することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数の情報処理装置各々と、各情報処理装置がディスクに格納するデータを識別する情報とを対応付けて記憶する記憶部を有し、
前記応答部は、前記オペレーティングシステムが管理するページキャッシュに前記データを記憶すると応答した情報処理装置がない場合には、前記データを記憶する情報処理装置を前記記憶部から特定し、特定した情報処理装置を特定する情報を応答することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
複数の情報処理装置が分散して処理を実行する分散処理システムにおいて、
前記複数の情報処理装置のうちの第１の情報処理装置は、
他の情報処理装置からデータのアクセス要求を受信する要求受信部と、
前記要求受信部によって前記アクセス要求が受信された場合に、前記データをオペレーティングシステムが管理するページキャッシュに記憶しているか否かの問合せを前記複数の情報処理装置各々に実行する問合せ実行部と、
前記問合せ実行部による問合せに対して、前記データをオペレーティングシステムが管理するページキャッシュに記憶すると応答した情報処理装置を特定する情報を、アクセス要求元の情報処理装置に応答する要求応答部と、を有し、
前記複数の情報処理装置各々は、
前記第１の情報処理装置から、前記データをオペレーティングシステムが管理するページキャッシュに記憶しているか否かの問合せを受信する問合せ受信部と、
前記問合せ受信部によって前記問合せが受信された場合に、自装置のオペレーティングシステムが管理するページキャッシュを参照して、前記データをオペレーティングシステムが管理するページキャッシュに記憶しているか否かを判定する判定部と、
前記判定部によって判定された結果を、前記第１の情報処理装置に応答する結果応答部と
を有することを特徴とする分散処理システム。
【請求項５】
コンピュータに、
複数のコンピュータが分散して処理を実行する分散処理システムにおける前記複数のコンピュータのいずれかからデータのアクセス要求を受信し、
アクセス要求先のデータをオペレーティングシステムが管理するページキャッシュに記憶しているか否かの問合せを前記複数のコンピュータ各々に実行し、
前記問合せに対して前記データをオペレーティングシステムが管理するページキャッシュに記憶すると応答したコンピュータを特定する情報を、アクセス先として要求元のコンピュータに応答する
処理を実行させることを特徴とするキャッシュ管理プログラム。
【請求項６】
複数の情報処理装置が分散して処理を実行する分散処理システムにおいて、
前記複数の情報処理装置のうちの第１の情報処理装置が、
他の情報処理装置からデータのアクセス要求を受信し、
アクセス要求先のデータをオペレーティングシステムが管理するページキャッシュに記憶しているか否かの問合せを前記複数の情報処理装置各々に実行し、
前記問合せに対して、前記データをオペレーティングシステムが管理するページキャッシュに記憶すると応答した情報処理装置を特定する情報を、前記参照要求元の情報処理装置に応答する処理を実行し、
前記複数の情報処理装置各々が、
前記第１の情報処理装置から、前記データをオペレーティングシステムが管理するページキャッシュに記憶しているか否かの問合せを受信し、
自装置のオペレーティングシステムが管理するページキャッシュを参照して、前記データをオペレーティングシステムが管理するページキャッシュに記憶しているか否かを判定し、
判定された結果を、前記第１の情報処理装置に応答する
処理を実行することを特徴とする分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、分散処理システム、キャッシュ管理プログラムおよび分散処理方法に関する。
【背景技術】
【０００２】
従来、大量のデータを高速に処理する分散処理技術として、複数のノードを利用したＨａｄｏｏｐなどの分散処理フレームワークが知られている。Ｈａｄｏｏｐは、ファイルを複数のノードに分割して格納し、分割されたファイルを管理している各ノードに処理命令を並列に実行することで分散処理を実行する。
【０００３】
Ｈａｄｏｏｐのデータ基盤となるのがＨＤＦＳ（Hadoop  Distributed  File  System）である。ＨＤＦＳは、複数ノード間で統一された名前空間を提供するが、実際のデータ管理は各ノード上のローカルファイルシステムを利用した、二重構造のファイルシステムである。すなわち、名前空間を管理するユーザ層のアプリケーションと、物理的なファイルの入出力を管理するオペレーティングシステムとの二重構造である。
【０００４】
図９は、従来の分散処理システムの全体構成例を示す図である。図９に示す分散処理システムは、ノードＡとノードＢとノードＣの３台のノードを有する。各ノードでは、分散処理フレームワークを使用したアプリケーションが実行される。また、ノードＡは、ローカルディスクＡと接続され、ノードＢは、ローカルディスクＢと接続され、ノードＣは、ローカルディスクＣと接続される。このうち、ノードＣは、どのローカルディスクにどのファイルが格納されているかを管理する名前管理を実行するマスターノードである。
【０００５】
このような分散処理システムでは、ファイルそのもの以外にも当該ファイルの複製を生成し、ファイルそのものと複製したファイルとを記憶する。例えば、分散処理システムでは、ノードＣにファイルＣが格納されている場合には、ノードＢまたはノードＡにもファイルＣを複製した複製ファイルＣを格納する。このようにして、分散処理システムは、ファイルの冗長化を実現する。
【０００６】
このような状態において、分散処理のうち参照処理を例にして具体的な処理例を説明する。ここでは、ノードＡで実行されたアプリケーションＡが、ファイルＡの参照依頼をノードＣに対して実行したとする。この場合、ノードＣは、名前管理によって、ファイルＡがローカルディスクＢとローカルディスクＣとに格納されていることを特定する。そして、ノードＣは、要求元のノードＡにより近いローカルディスクＢを、ファイルＡの格納先としてアプリケーションＡに応答する。応答を受信したアプリケーションＡは、ローカルディスクＢと接続されるノードＢに対してファイルＡの読み出しを依頼し、ローカルディスクＢから読み出したファイルＡを参照する。
【０００７】
また、分散処理システムでは、各ノードがアプリケーションで確保したメモリ領域でファイルを管理し、アプリケーションからファイルの参照依頼が実行された場合に、メモリから該当のファイルを読み出すことで、処理時間を短縮することも知られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−２３４９１９号公報
【特許文献２】特開平１１−１５７１８号公報
【特許文献３】特開平７−１８２２２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来の分散処理システムでは、ＯＳカーネルが管理するページキャッシュを有効に利用できず、ローカルディスクの入出力が発生するので、処理性能が向上しないという問題がある。
【００１０】
例えば、図９に示す分散処理システムで分散処理が発生した場合に、ノードＣが、該当ファイルを記憶するローカルディスクのうち要求元のノードから最も近くのローカルディスクに記憶されるファイルを処理対象と決定する。このため、該当ファイルをＯＳカーネルが管理するページキャッシュに記憶しているノードではなく、ＯＳカーネルが管理するページキャッシュに記憶していないノードに処理が依頼される場合がある。
【００１１】
この場合、処理を依頼されたノードは、ＯＳカーネルが管理するページキャッシュより低速なローカルディスクから該当ファイルを読み出す。つまり、分散処理システム全体で見ればＯＳカーネルが管理するページキャッシュに記憶されているファイルであっても、低速なディスクの入出力処理を実行して読み出す場合がある。
【００１２】
また、低速なディスクの入出力処理を実行したノードは、ローカルディスクから読み出した該当ファイルをＯＳカーネルが管理するページキャッシュに記憶する。この際、当該ノードは、他のファイルをＯＳカーネルが管理するページキャッシュから破棄した後に、読み出したファイルをキャッシュするので、他のファイルのキャッシュヒット率の低下を招く。
【００１３】
これらのことから、従来の分散処理システムは、ページキャッシュの利用率が悪く、処理性能の向上を図るのが難しい。また、アプリケーションで確保したメモリ領域にデータを格納してスループットの向上を図る手法は、大量のファイルをメモリに格納することになるので、現実的な手法とは言い難い。
【００１４】
１つの側面では、処理性能を向上させることができる情報処理装置、分散処理システム、キャッシュ管理プログラムおよび分散処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
第１の案では、情報処理装置は、複数の情報処理装置が分散して処理を実行する分散処理システムにおける前記複数の情報処理装置のいずれかからデータのアクセス要求を受信する受信部を有する。情報処理装置は、前記受信部によって前記データのアクセス要求が受信された場合に、オペレーティングシステムが管理するページキャッシュに前記データを記憶しているか否かの問合せを前記複数の情報処理装置各々に実行する問合せ実行部を有する。情報処理装置は、前記問合せ実行部による問合せに対して、前記オペレーティングシステムが管理するページキャッシュに前記データを記憶すると応答した情報処理装置を特定する情報を、アクセス先として要求元の情報処理装置に応答する応答部を有する。
【発明の効果】
【００１６】
処理性能を向上させることができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例１に係る分散処理システムの全体構成例を示す図である。
【図２】図２は、実施例１に係る分散処理システムにおけるマスターノードの構成を示す機能ブロック図である。
【図３】図３は、実施例１に係る分散処理システムにおけるノードの構成を示す機能ブロック図である。
【図４】図４は、実施例１に係る要求元のノードが実行する処理の流れを示すフローチャートである。
【図５】図５は、実施例１に係るマスターノードが実行する処理の流れを示すフローチャートである。
【図６】図６は、実施例１に係る各ノードが実行する処理の流れを示すフローチャートである。
【図７】図７は、共有ディスクを用いた場合の分散処理システムの全体構成例を示す図である。
【図８】図８は、キャッシュ管理プログラムを実行するコンピュータのハードウェア構成例を示す図である。
【図９】図９は、従来の分散処理システムの全体構成例を示す図である。
【発明を実施するための形態】
【００１８】
以下に、本願の開示する情報処理装置、分散処理システム、キャッシュ管理プログラムおよび分散処理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１９】
［全体構成］
図１は、実施例１に係る分散処理システムの全体構成例を示す図である。図１に示すように、分散処理システムは、複数のノードで構成されており、ここではノード１０とノード２０とノード３０とを図示している。なお、各ノードは、ネットワーク等で接続されている。また、ノードの台数等は任意に設定することができる。実施例では、ファイルを例にして説明するが、これに限定されるものではなく、様々なデータ形式を対象とすることができる。
【００２０】
この分散処理システムは、Ｈａｄｏｏｐなどの分散処理フレームワークを使用した分散処理アプリケーションが各ノードで実行されており、データ基盤としてＨＤＦＳなどを使用する。また、分散処理システムでは、ファイルそのもの以外にも当該ファイルの複製を生成し、ファイルそのものと複製したファイルとを記憶する。また、分散処理システムでは、大容量のファイルについては、所定容量ごとに分割し、分割して得られたファイルの一部を各ノードに分散させて記憶させる。
【００２１】
このような分散処理システムを構成するノード１０およびノード２０およびノード３０は、他のノードと連携して分散処理を実行するノードである。図１に示すように、ノード１０は、ローカルディスク１９と接続され、分散処理部１４とキャッシュ管理部１５とを有するとともにＯＳ（Operating  System）カーネル１ｄ上でページキャッシュを実行する。ローカルディスク１９は、上述したファイル、ファイルの一部、複製ファイル等を記憶する。分散処理部１４は、分散処理フレームワークを使用した分散処理アプリケーションを実行し、他のノードと協働して分散処理を実行する。
【００２２】
ノード２０は、ノード１０と同様の構成を有する。具体的には、ノード２０は、ローカルディスク２９と接続され、分散処理部２４とキャッシュ管理部２５とを有するとともにＯＳカーネル２ｄ上でページキャッシュを実行する。ローカルディスク２９は、上述したファイル、ファイルの一部、複製ファイル等を記憶する。分散処理部２４は、分散処理フレームワークを使用した分散処理アプリケーションを実行し、他のノードと協働して分散処理を実行する。
【００２３】
ノード３０は、ノード１０またはノード２０の構成や役割に加えて、分散処理システムの名前管理を実行するマスターノードである。このノード３０は、ローカルディスク３９と接続され、分散処理部３４と名前管理部３５とグローバルキャッシュ管理部３６とキャッシュ管理部３７とを有するとともに、ＯＳカーネル３ｄ上でページキャッシュを実行する。ローカルディスク３９は、ローカルディスク２９と同様、上述したファイル、ファイルの一部、複製ファイル等を記憶する。なお、各ローカルディスクが記憶する情報は、必ずしも一致していない。分散処理部３４は、分散処理フレームワークを使用した分散処理アプリケーションを実行し、他のノードと協働して分散処理を実行する。名前管理部３５は、各ノードのローカルディスクにどのようなデータが記憶されているかを管理する。グローバルキャッシュ管理部３６は、処理対象のファイルがキャッシュされているか否かを問い合わせる処理部である。ノード１０、ノード２０およびノード３０のＯＳカーネル１ｄ、ＯＳカーネル２ｄおよびＯＳカーネル３ｄはそれぞれＯＳの一部を構成するものであって、ＯＳの中核となるソフトウェアである。ＯＳカーネル１ｄ、ＯＳカーネル２ｄおよびＯＳカーネル３ｄは、それぞれ、システムのリソースを管理し、ハードウェアとソフトウェアコンポーネントのやりとりを管理する。
【００２４】
このような分散処理システムでファイルの処理要求が発生した場合、処理対象のファイルを記憶するノードで当該処理が実行される。そして、処理を実行したノードが、処理要求元のノードに実行結果を応答する。また、分散処理システムで分割格納されたファイルに対する処理要求が発生した場合、分割されたファイルを記憶するノード各々で処理が実行され、各処理をまとめた結果が要求元のノードに応答される。
【００２５】
ここで、ノード１０がファイルの参照要求を発生させた場合について説明する。ノード１０の分散処理部１４は、実行されたアプリケーションによってファイルアクセスが発生すると、当該ファイルに対するアクセス要求をマスターノードであるノード３０に送信する。ノード３０のグローバルキャッシュ管理部３６は、分散処理部３４によってアクセス要求が受信されると、アクセス対象のファイルをＯＳカーネルが管理するページキャッシュに記憶しているか否かの問合せを各ノードに実行する。このとき、グローバルキャッシュ管理部３６は、自ノードも含めて問合せを実行する。
【００２６】
続いて、問合せを受信した各ノードのキャッシュ管理部では、ＯＳカーネルの管理するページキャッシュを参照して、アクセス対象のファイルがＯＳカーネルの管理するページキャッシュに記憶されているか否かを判定するキャッシュ管理が実行される。そして、各ノードは、キャッシュヒットしたか否かをノード３０に応答する。
【００２７】
そして、ノード３０のグローバルキャッシュ管理部３６は、問合せに対して、ファイルデータをＯＳカーネルが管理するページキャッシュに記憶すると応答したノードを特定する情報を、分散処理部３４を介して要求元のノード１０に応答する。なお、ノードを特定する情報としては、ＩＰ（Internet  Protocol）アドレスなどがある。
【００２８】
その後、ノード１０の分散処理部１４は、ノード３０から通知されたノードに対して、ファイルの参照要求を送信する。この参照要求を受信したノードは、該当ファイルをＯＳカーネルが管理するページキャッシュから読み出して、ノード１０に応答する。そして、ノード１０で実行されたアプリケーションは、該当ファイルを参照することができる。
【００２９】
このように、分散処理システムにおけるマスターノードが、要求されたファイルをＯＳカーネルが管理するページキャッシュに記憶しているか否かを各ノードに問合せる。そして、マスターノードは、キャッシュしているノードを要求元に応答することで、ＯＳカーネルが管理するページキャッシュを有効活用し処理性能の向上を図ることができる。
【００３０】
［マスターノードの構成］
次に、分散処理システムを構成するマスターノードについて説明する。なお、図１の場合、名前管理を実行するノード３０がマスターノードであるので、ここでは、マスターノード３０として説明する。
【００３１】
図２は、実施例１に係る分散処理システムにおけるマスターノードの構成を示す機能ブロック図である。図２に示すように、マスターノード３０は、通信制御部３１とページキャッシュ３２と制御部３３とを有し、ローカルディスク３９と接続される。なお、ここで例示した処理部は、あくまで例示であり、これに限定されるものではない。
【００３２】
通信制御部３１は、他のノードとの通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信制御部３１は、他のノードからアクセス要求や参照要求などの各種要求を受信する。また、通信制御部３１は、各種要求に対する応答を他のノードに送信する。
【００３３】
ページキャッシュ３２は、制御部３３が実行するプログラムや各種アプリケーションが使用するデータを記憶する記憶装置である。また、ページキャッシュ３２は、制御部３３が実行したアプリケーションによってローカルディスク３９から読み出されたデータ等を記憶する。すなわち、ページキャッシュ３２は、ファイルをキャッシュする。なお、キャッシュの制御方法については、ＬＲＵ（Least  Recently  Used）などの公知の様々な方法を用いることができるので、ここでは詳細な説明は省略する。
【００３４】
制御部３３は、マスターノード３０全体の処理を司り、アプリケーション等を実行する処理部であり、例えばＣＰＵ（Central  Processing  Unit）などの電子回路である。この制御部３３は、分散処理部３４と名前管理部３５とグローバルキャッシュ管理部３６とキャッシュ管理部３７と処理実行部３８とを有する。
【００３５】
分散処理部３４は、分散処理フレームワークを使用した分散処理アプリケーションを実行し、他のノードと協働して分散処理を実行する処理部である。この分散処理部３４は、分散処理を実行する他のノードと、マスターノード３０が有する各種処理部とを連携させる。例えば、分散処理部３４は、他ノードから受信された各種要求を、名前管理部３５を経由して各種処理部に出力する。また、分散処理部３４は、各種処理部から出力された処理結果を、名前管理部３５を経由して要求元の他ノードに出力する。
【００３６】
名前管理部３５は、各ノードのローカルディスクにどのようなデータが記憶されているかを管理する処理部である。例えば、名前管理部３５は、各ノードを識別する識別子と、各ノードがローカルディスクに格納するデータを識別する情報とを対応付けたファイル管理テーブルを用いて、名前管理を実行する。また、名前管理部３５は、各ノードを識別する識別子と、各ノードが使用するＩＰアドレスと対応付けたアドレス管理テーブルを用いて、ノード管理を実行する。なお、ファイル管理テーブルやアドレス管理テーブルは、メモリや図示しないハードディスク等の記憶部などに記憶される。
【００３７】
グローバルキャッシュ管理部３６は、要求受信部３６ａと問合せ実行部３６ｂと要求応答部３６ｃとを有し、これらによって各ノードのキャッシュ状況を管理する処理部である。要求受信部３６ａは、分散処理システムを構成するノードからファイルのアクセス要求を受信する処理部である。この要求受信部３６ａは、分散処理部３４と名前管理部３５とを介して、自ノードまたは他ノードが送信したアクセス要求を受信して問合せ実行部３６ｂに出力する。
【００３８】
問合せ実行部３６ｂは、要求受信部３６ａによってファイルのアクセス要求が受信された場合に、ファイルをＯＳカーネルが管理するページキャッシュに記憶しているか否かの問合せを各ノードに実行する処理部である。例えば、図１を例にして説明すると、問合せ実行部３６ｂは、ノード１０からファイルＡに対するアクセス要求が送信された場合、ノード１０、ノード２０、ノード３０各々に対して問合せを実行する。
【００３９】
要求応答部３６ｃは、問合せ実行部３６ｂによる問合せに対して、ファイルをＯＳカーネルが管理するページキャッシュに記憶すると応答したノードを特定する情報を、アクセス要求元のノードに応答する処理部である。上述した例で説明すると、要求応答部３６ｃは、ファイルＡをキャッシュしている旨の応答をノードＢから受信した場合、問合せ実行部３６ｂが問合せに使用したＩＰアドレス情報を、分散処理部３４と名前管理部３５とを介して、要求元のノードＡにノードＢのＩＰアドレスを応答する。
【００４０】
また、要求応答部３６ｃは、ファイルをＯＳカーネルが管理するページキャッシュに記憶すると応答したノードが複数ある場合には、要求元のノードに最も近いノードのＩＰアドレスをアクセス先として応答する。例えば、要求応答部３６ｃは、分散処理システムのトポロジを生成して、要求元までのホップ数が最も少ないノードのＩＰアドレスを応答する。また、要求応答部３６ｃは、ノードごとに優先順位を決めておき、その優先順位にしたがって、要求元に応答するノードを特定してもよい。また、事前に定義した情報以外に、動的な負荷情報を参照して優先順位を上下させてもよい。
【００４１】
図２に戻り、キャッシュ管理部３７は、問合せ受信部３７ａと判定部３７ｂと問合せ応答部３７ｃとを有し、これらによってファイルデータのキャッシュ状況を判定する処理部である。問合せ受信部３７ａは、分散処理システムにおけるマスターノード３０から、アクセス対象のファイルをＯＳカーネルが管理するページキャッシュに記憶しているか否かの問合せを受信する処理部である。マスターノード３０の場合は、問合せ受信部３７ａは、同じノードが有するグローバルキャッシュ管理部３６から問合せを受信し、受信した問合せを判定部３７ｂに出力する。
【００４２】
判定部３７ｂは、問合せ受信部３７ａによって問合せが受信された場合に、自ノードのページキャッシュ３２を参照して、問合せ対象のファイルがページキャッシュ３２に記憶されているか否かを判定する処理部である。具体的には、判定部３７ｂは、問合せ対象のファイルがキャッシュされているか否かを判定し、判定結果を問合せ応答部３７ｃに出力する。例えば、判定部３７ｂは、ファイル全体が問合せ対象である場合、ページキャッシュ３２を参照して、ファイル全体がページキャッシュ３２に記憶されているか否かを判定する。
【００４３】
また、判定部３７ｂは、ページキャッシュ３２にファイルの一部が記憶されている場合には、記憶されているページ数にしたがってキャッシュしているか否かを判定する。具体的には、判定部３７ｂは、ファイルのサイズから総ページ数を算出し、総ページ数に対するページキャッシュ３２に記憶されているページ数の割合が所定値以上である場合に、ファイルがページキャッシュに記憶されていると判定する。例えば、判定部３７ｂは、問合せ対象のファイルのｉｎｏｄｅ（index  node：ファイルおよびディレクトリのユニーク識別子）をキーとして、現在のページキャッシュ数（Ｐｃ）をＯＳカーネルから取得する。また、判定部３７ｂは、「ファイル全体サイズ（バイト）÷４０９６」によってファイルの全ページ数（Ｐａ）を計算する。そして、判定部３７ｂは、「（Ｐｃ×１００）／Ｐａ」が予め定めた所定値「Ｒ（％）」より大きい場合に、ファイルをページキャッシュに記憶していると判定する。
【００４４】
問合せ応答部３７ｃは、判定部３７ｂによって判定された結果を、問合せ元のノードに応答する。マスターノード３０の場合には、問合せ応答部３７ｃは、判定部３７ｂによって判定された結果として、キャッシュしているまたはキャッシュしていないことをグローバルキャッシュ管理部３６に出力する。
【００４５】
処理実行部３８は、分散処理部３４を介して受信された分散処理や自ノード内で発生した分散処理を実行する処理部である。例えば、処理実行部３８は、ファイルの参照要求が受信された場合、参照要求に含まれるファイル名やｉｎｏｄｅ等をキーにして、ページキャッシュ３２を検索する。そして、処理実行部３８は、ページキャッシュ３２に該当ファイルが存在する場合には、ページキャッシュ３２から該当ファイルを読み出して、要求元のノードに送信する。一方、処理実行部３８は、ページキャッシュ３２に該当ファイルが存在しない場合には、ローカルディスク３９から該当ファイルを読み出して、要求元のノードに送信する。
【００４６】
［ノードの構成］
次に、分散処理システムを構成するノードのうちマスターノード以外のノードについて説明する。ここで説明するノードは、図１のノード１０やノード２０である。ノード１０とノード２０とは同様の構成を有するので、ここでは、ノード１０を例にして説明する。
【００４７】
図３は、実施例１に係る分散処理システムにおけるノードの構成を示す機能ブロック図である。図３に示すように、ノード１０は、通信制御部１１とページキャッシュ１２と制御部１３とを有し、ローカルディスク１９と接続される。なお、ここで例示した処理部は、あくまで例示であり、これに限定されるものではない。
【００４８】
通信制御部１１は、他のノードとの通信を制御する通信インタフェースであり、例えばネットワークインタフェースカードなどである。例えば、通信制御部１１は、他のノードから参照要求などの各種要求を受信する。また、通信制御部１１は、各種要求に対する応答を他のノードに送信する。
【００４９】
ページキャッシュ１２は、制御部１３が実行するプログラムや各種アプリケーションが使用するデータを記憶する記憶装置である。また、ページキャッシュ１２は、制御部１３が実行したアプリケーションによってローカルディスク１９から読み出されたデータ等を記憶する。
【００５０】
制御部１３は、ノード１０全体の処理を司り、アプリケーション等を実行する処理部であり、例えばＣＰＵなどの電子回路である。この制御部１３は、分散処理部１４とキャッシュ管理部１５と処理実行部１６とを有する。分散処理部１４は、図２の分散処理部３４と同様、分散処理フレームワークを使用した分散処理アプリケーションを実行し、他のノードと協働して分散処理を実行する処理部である。この分散処理部１４は、マスターノードまたは他ノードからアクセス要求や参照要求を受信して各種処理部に出力する。また、分散処理部１４は、各処理部から出力された応答や処理結果を、該当ノードに送信する。
【００５１】
キャッシュ管理部１５は、図２に示したキャッシュ管理部３７と同様の処理を実行するので、ここでは詳細な説明は省略する。図２とは、問合せ元が自ノードではなくマスターノードである点が異なる。したがって、キャッシュ管理部１５が応答する先もマスターノードになる。また、処理実行部１６についても、図２の処理実行部３８と同様の処理を実行するので、ここでは詳細な説明は省略する。
【００５２】
［処理の流れ］
次に、分散処理システムで実行される各種処理について説明する。ここでは、一例として、参照要求元のノードがノード１０、マスターノードがノード３０であるとする。なお、マスターノードであってもノード１０と同様の処理を実行する。すなわち、ノード３０も図４や図６のフローを実行する。
【００５３】
（要求元ノード）
図４は、実施例１に係る要求元のノードが実行する処理の流れを示すフローチャートである。図４に示すように、ノード１０でアプリケーションが実行されてファイルのアクセスが発生すると（Ｓ１０１）、分散処理部１４は、マスターノードに対してファイルのアクセス要求を送信する（Ｓ１０２）。
【００５４】
その後、分散処理部１４によってマスターノードから応答が受信されると（Ｓ１０３肯定）、処理実行部１６は、応答されたノードのＩＰアドレスに対して、ファイルの参照要求を送信する（Ｓ１０４）。
【００５５】
そして、処理実行部１６は、参照要求を送信したノードから該当ファイルを受信すると（Ｓ１０５肯定）、当該ファイルを参照して、Ｓ１０１で実行されたアプリケーションを引き続き実行する。
【００５６】
（マスターノード）
図５は、実施例１に係るマスターノードが実行する処理の流れを示すフローチャートである。図５に示すように、ノード３０の要求受信部３６ａが分散処理部３４を介してアクセス要求を受信すると（Ｓ２０１肯定）、問合せ実行部３６ｂは、各ノードに対して、該当ファイルがキャッシュされているか否かの問合せを実行する（Ｓ２０２）。
【００５７】
その後、要求応答部３６ｃは、問合せが実行された各ノードから応答を受信すると（Ｓ２０３肯定）、応答に基づいて、キャッシュしているノードが存在するか否かを判定する（Ｓ２０４）。
【００５８】
そして、要求応答部３６ｃは、キャッシュしているノードが存在すると判定した場合（Ｓ２０４肯定）、Ｓ２０２で問い合わせに使用したＩＰアドレスを用いて、ＯＳカーネルのページキャッシュに記憶しているノードのＩＰアドレスを特定する（Ｓ２０５）。その後、要求応答部３６ｃは、特定したＩＰアドレスをアクセス先として、要求元のノードに応答する（Ｓ２０６）。このとき、要求応答部３６ｃは、複数のノードがキャッシュしていると判定した場合には、最も処理が速く開始されるノードのＩＰアドレスを要求元に応答する。
【００５９】
一方、要求応答部３６ｃは、キャッシュしているノードが存在しないと判定した場合（Ｓ２０４否定）、名前管理部３５等を用いて、該当ファイルをローカルディスクに記憶するノードを特定する（Ｓ２０７）。
【００６０】
そして、要求応答部３６ｃは、特定したノードが複数存在する場合（Ｓ２０８肯定）、名前管理部３５等を用いて最も処理が速く開始されるノードのＩＰアドレスを特定し（Ｓ２０９）、要求元のノードに応答する（Ｓ２１０）。
【００６１】
一方、要求応答部３６ｃは、特定したノードが複数存在しない場合（Ｓ２０８否定）、名前管理部３５等を用いて、ファイルを記憶すると特定したノードのＩＰアドレスを特定し（Ｓ２１１）、要求元のノードに応答する（Ｓ２１２）。
【００６２】
（各ノード）
図６は、実施例１に係る各ノードが実行する処理の流れを示すフローチャートである。ここでは、ノード２０を例にして説明する。なお、ノード２０の各処理部の符号は、ノード１０と同様とする。一例を挙げると、ノード２０の分散処理部２４などとする。
【００６３】
図６に示すように、ノード２０の問合せ受信部２５ａがマスターノード３０から問合せを受信すると（Ｓ３０１肯定）、判定部２５ｂは、ページキャッシュ２２を検索し（Ｓ３０２）、キャッシュヒットするか否かを判定する（Ｓ３０３）。
【００６４】
そして、キャッシュヒットした場合（Ｓ３０３肯定）、問合せ応答部２５ｃは、キャッシュヒットしたことをマスターノード３０に応答する（Ｓ３０４）。一方、キャッシュヒットしなかった場合（Ｓ３０３否定）、問合せ応答部２５ｃは、キャッシュヒットしないことをマスターノード３０に応答する（Ｓ３０５）。
【００６５】
その後、処理実行部２６は、ファイルの参照要求が分散処理部２４によって受信された場合（Ｓ３０６肯定）、ページキャッシュ２２を参照し、該当ファイルがページキャッシュ２２に存在するか否かを判定する（Ｓ３０７）。なお、ファイルの参照要求が受信されない場合は、処理が終了する。
【００６６】
そして、処理実行部２６は、キャッシュヒットした場合（Ｓ３０８肯定）、ページキャッシュ２２から該当ファイルを読み出して（Ｓ３０９）、該当ファイルを参照要求元のノードに応答する（Ｓ３１０）。
【００６７】
一方、処理実行部２６は、キャッシュヒットしなかった場合（Ｓ３０８否定）、ローカルディスク２９から該当ファイルを読み出して（Ｓ３１１）、該当ファイルを参照要求元のノードに応答する（Ｓ３１２）。
【００６８】
そして、処理実行部２６は、ページキャッシュ２２に空きがある場合に（Ｓ３１３肯定）、応答したファイルのキャッシュインを実行する（Ｓ３１４）。すなわち、処理実行部２６は、ローカルディスク２９から読み出したファイルを、ページキャッシュ２２の空き領域に格納する。
【００６９】
一方、処理実行部２６は、ページキャッシュに空きがない場合に（Ｓ３１３否定）、キャッシュアウトした後に（Ｓ３１５）、応答したファイルのキャッシュインを実行する（Ｓ３１６）。すなわち、処理実行部２６は、所定の条件を満たすファイルをページキャッシュ２２から破棄した後に、破棄したファイルの領域に、ローカルディスク２９から読み出したファイルを格納する。なお、条件については、ＬＲＵ（Least  Recently  Used）などの公知の様々な方法を用いることができる。
【００７０】
上述したように、図１に示した分散処理システムは、アプリケーションごとに専用のキャッシュ管理機能を組み込むことなく、従来のアプリケーションのままでも、オペレーティングシステムのページキャッシュを効率的に使用できる。つまり、図１に示した分散処理システムでは、いずれかのノードが対象ファイルをキャッシュしている場合には、分散処理で常にページキャッシュを利用できるようになる。これにより、ローカルディスクからファイルを読み出すＩ／Ｏ処理を削減し、高速なメモリアクセスを増加させることができるので、処理性能を向上させることができる。
【実施例２】
【００７１】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【００７２】
（共有ディスク）
実施例１では、各ノードがローカルディスクを有する例を説明したが、これに限定されるものではなく、各ノードが共有ディスクに接続されていてもよい。図７は、共有ディスクを用いた場合の分散処理システムの全体構成例を示す図である。図７に示すように、各ノードは、実施例１と同様の構成を有している。実施例１とは、各ノードが接続されるディスクがローカルディスクではなくて、共有ディスク５０である点が異なる。
【００７３】
図７の場合であっても、各ノードは、実施例１と同様の機能を有し、同様の処理を実行する。つまり、対象データをＯＳカーネルが管理するページキャッシュにキャッシュしているノードを特定し、特定したノードが該当ファイルをＯＳカーネルが管理するページキャッシュから読み出す。共有ディスクを用いた場合、どのサーバからでも同一のコストでデータにアクセスできる。このため、データの書き込み、読み込みを連続して実施する処理の場合にキャッシュにヒットさせることができる。この結果、実施例１に比べて、キャッシュヒットの確率をより向上させることができるので、処理性能の向上がより図れる。
【００７４】
（ノード構成）
実施例１では、各ノードが１台のサーバ等で構成される例を説明したが、これに限定されるものではない。例えば、複数のラックマウント型サーバで構成されていてもよく、複数のシステムボードを有する１台のサーバであってもよい。例えば、１ノードが、分散処理部３４と名前管理部３５と処理実行部３８を有するラックマウント型サーバ、グローバルキャッシュ管理部３６を有するラックマウント型サーバ、キャッシュ管理部３７を有するラックマウント型サーバの３台で構成されてもよい。また、１ノードが、複数のシステムボードを有するサーバであり、各システムボードが１つの処理部を実行するようにしてもよい。また、ローカルディスクは、各ノードの内部であっても外部でもよい。
【００７５】
（処理内容）
実施例１では、参照処理を例にして説明したが、これに限定されるものではなく、例えば書込み処理等においても同様に処理することができる。また、書込み処理や更新処理等は、分散処理フレームワークの使用上、ファイルを記憶するノードが処理を実行する場合がある。また、処理対象のファイルが複数のノードに分割されて格納されている場合、ファイルの一部を記憶する各ノードで処理が並列に実行される。そして、代表ノードが各処理を統合して要求元に応答する。なお、代表ノードの決定については、例えば予め指定しておく、要求元に最も近いノードとするなど、一般的な手法を用いることができる。
【００７６】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、グローバルキャッシュ管理部３６とキャッシュ管理部３７と統合することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７８】
（ハードウェア構成）
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。
【００７９】
図８は、キャッシュ管理プログラムを実行するコンピュータのハードウェア構成例を示す図である。図８に示すように、コンピュータ１００は、ＣＰＵ１０２、入力装置１０３、出力装置１０４、通信インタフェース１０５、媒体読取装置１０６、ＨＤＤ（Hard  Disk  Drive）１０７、ＲＡＭ（Random  Access  Memory）１０８、メモリ１０９を有する。また、図８に示した各部は、バス１０１で相互に接続される。
【００８０】
入力装置１０３は、マウスやキーボードであり、出力装置１０４は、ディスプレイなどであり、通信インタフェース１０５は、ＮＩＣ（Network  Interface  Card）などのインタフェースである。ＨＤＤ１０７は、キャッシュ管理プログラム１０７ａとともに、図２で説明した各テーブル等を記憶する。記録媒体の例としてＨＤＤ１０７を例に挙げたが、ＲＯＭ（Read  Only  Memory）、ＲＡＭ、ＣＤ−ＲＯＭ等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記録媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
【００８１】
ＣＰＵ１０２は、キャッシュ管理プログラム１０７ａを読み出してＲＡＭ１０８に展開することで、図２や図３等で説明した各機能を実行するキャッシュ管理プロセス１０８ａを動作させる。すなわち、コンピュータ１００がマスターノードの場合、キャッシュ管理プロセス１０８ａは、図２に記載した分散処理部３４、名前管理部３５、グローバルキャッシュ管理部３６、キャッシュ管理部３７、処理実行部３８を実行する。また、コンピュータ１００が通常のノードの場合、キャッシュ管理プロセス１０８ａは、図３に記載した分散処理部１４、キャッシュ管理部１５、処理実行部１６を実行する。このようにコンピュータ１００は、プログラムを読み出して実行することでキャッシュ管理方法を実行する情報処理装置として動作する。
【００８２】
また、コンピュータ１００は、媒体読取装置１０６によって記録媒体からキャッシュ管理プログラムを読み出し、読み出されたキャッシュ管理プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、コンピュータ１００によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【００８３】
１０  ノード
１１  通信制御部
１２  ページキャッシュ
１３  制御部
１４  分散処理部
１５  キャッシュ管理部
１５ａ  問合せ受信部
１５ｂ  判定部
１５ｃ  問合せ応答部
１６  処理実行部
１９  ローカルディスク
３０  マスターノード
３１  通信制御部
３２  ページキャッシュ
３３  制御部
３４  分散処理部
３５  名前管理部
３６  グローバルキャッシュ管理部
３６ａ  要求受信部
３６ｂ  問合せ実行部
３６ｃ  要求応答部
３７  キャッシュ管理部
３７ａ  問合せ受信部
３７ｂ  判定部
３７ｃ  問合せ応答部
３８  処理実行部
３９  ローカルディスク
【図１】
0005817558.tif 000002
【図２】
0005817558.tif 000003
【図３】
0005817558.tif 000004
【図４】
0005817558.tif 000005
【図５】
0005817558.tif 000006
【図６】
0005817558.tif 000007
【図７】
0005817558.tif 000008
【図８】
0005817558.tif 000009
【図９】
0005817558.tif 000010