JP5018133B2 - ジョブ管理装置、クラスタシステム、およびジョブ管理プログラム - Google Patents

ジョブ管理装置、クラスタシステム、およびジョブ管理プログラム Download PDF

Info

Publication number
JP5018133B2
JP5018133B2 JP2007046434A JP2007046434A JP5018133B2 JP 5018133 B2 JP5018133 B2 JP 5018133B2 JP 2007046434 A JP2007046434 A JP 2007046434A JP 2007046434 A JP2007046434 A JP 2007046434A JP 5018133 B2 JP5018133 B2 JP 5018133B2
Authority
JP
Japan
Prior art keywords
job
node
information
execution
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007046434A
Other languages
English (en)
Other versions
JP2008210164A (ja
Inventor
浩一 平井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2007046434A priority Critical patent/JP5018133B2/ja
Priority to US12/027,499 priority patent/US8074222B2/en
Priority to EP08101842A priority patent/EP2012234A3/en
Priority to KR1020080017363A priority patent/KR100987746B1/ko
Publication of JP2008210164A publication Critical patent/JP2008210164A/ja
Application granted granted Critical
Publication of JP5018133B2 publication Critical patent/JP5018133B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は複数の計算ノードにジョブの実行を指示するジョブ管理装置、そのジョブ管理装置でジョブを管理するクラスタシステム、およびジョブ管理装置の機能をコンピュータに実行させるためのジョブ管理プログラムに関し、特に機能停止に対する高信頼化を図ったジョブ管理装置、およびそのジョブ管理装置でジョブを管理するクラスタシステム、および機能停止に対する高信頼化を図ったジョブ管理プログラムに関する。
高度な科学技術系の計算を行う場合、複数のコンピュータを1つに束ねて、1つの計算機システムとして運用する。以下、このような計算機システムを「クラスタシステム」と呼び、計算機システムを構成するコンピュータを「ノード」と呼ぶ。利用者は他のコンピュータを用い、クラスタシステムに対して計算依頼を入力する。以下、このような計算依頼に基づいて実行される処理を「ジョブ」と呼ぶ。なお、ジョブには、複数のノードで並列に実行させる「並列ジョブ」と、単一のノード上の1つのプロセスで実行させる「逐次ジョブ」とがある。
ジョブを受け取ったクラスタシステムでは、入力されたジョブを、1台または複数台のノードで実行させる必要がある。そのため、ジョブのノードへの割り振りや、各ノードでのジョブの実行状況を管理するためのノードが用意される。以下、このノードを管理ノードと呼び、管理ノード以外のノードを計算ノードと呼ぶ。
クラスタシステムでは、計算ノードの割り当てや計算ノードへの実況状況を管理ノードが把握している。そのため、管理ノードがダウン(障害などによる機能停止)してしまうと、ジョブの割り当てや実況状況の把握が出来なくなるという問題がある。
ここで、管理ノードのダウンを想定した高信頼化機能がない場合、管理ノードがダウンするとジョブが存在していたという情報までも失われてしまう。このとき、クラスタシステムへのジョブの再投入が必要となる。また、ジョブを再投入する前に計算ノードで稼働中のジョブを終了させる必要がある。ところが、高信頼化機能が無いとどのようなジョブが依頼されていたのかを知る術がない。そのため、すべての計算ノードの再起動が必要となる。
そこで、高信頼化技術が利用される。従来の高信頼化技術では、ジョブの状態をジョブデータベース(DB)上にファイルで保存しておく。ジョブDBは、ハードディスクに構築される。そして、管理ノードがダウンしたときは、管理ノードの起動時にジョブDBからジョブ状態が記録されたファイルを読み込むことで、処理中のジョブを認識する。
ところで、ジョブの状態には2段階の状態がある。すなわち、他のコンピュータからの依頼状態(ジョブ投入状態)と、計算ノードに割り当てて実行させているジョブの状態(ジョブ実行状態)である。
ジョブDBにジョブ投入状態のみを管理していた場合、管理ノードがダウンした後も、実行しなければならないジョブは認識できる。そのため、使用者からのジョブの再投入は不要である。ただし、各ジョブがどの様な状況で実行されているのかが不明である。そのため、計算ノードで実行しているジョブを一端終了させ、最初から実行させる必要がある。
このように、ジョブを最初から実行したのでは、システムの運用効率が低下してしまう。しかも、科学技術計算では、計算に長時間を要するジョブも存在し、そのようなジョブを最初から実行し直すのは非効率である。
そこで、ジョブDBにジョブ投入状態とジョブ実行状態とをハードディスク上のファイルで管理することが行われる。この場合、管理ノードがダウンした後も、ジョブ投入状態に加えてジョブ実行状態を認識できる。そのため、ジョブを再投入する必要がないと共に、計算ノードで実行中のジョブをそのまま継続できる。
これにより、管理ノードがダウンしても、ジョブを最初から実行し直す必要はなくなる。ただし、ジョブの実行状態を保存するには、情報反映の遅延という課題が残る。
すなわち、通常のOS(オペレーティングシステム)ではファイルへ情報を書き込んでも、システムの高速化のためにメモリ上で書き込むのみである。そして、その後の所定のタイミングで更新されたファイルの内容がディスクに書き込まれる。このように、即座にディスクへは反映されないため、情報反映に常に遅延が発生する。その結果、ジョブの実行状態が最新状態とならず、高信頼化の妨げになってしまう。
なお、書き込み処理の遅延対策として、メモリ上でのファイル書き込みと同時にディスクへ情報反映を即座に実施することが考えられる。ただし、この場合、メモリへの書き込みよりハードディスクへの書き込みが遥かに低速なため、システム処理の遅延につながってしまう。
そこで、ジョブDBを用いずに高信頼化する技術が考えられている。たとえば、管理ノードが保有するジョブの実行状態や環境設定を、計算ノードにも配置しておく。そして、管理ノードがダウンした場合、計算ノードの1つが管理ノードに昇格する。そして、管理ノードを兼ねることとなった計算ノードが、他の計算ノードから実行状態や環境設定を収集し、管理ノードの機能を実行する(たとえば、特許文献1参照)。
特開平6−96041号公報
しかし、特許文献1に示した高信頼化技術においても、以下のような問題がある。
(1)並列ジョブへの対応が考慮されていない。
並列ジョブでは、複数の計算ノードが連携してジョブを実行する必要がある。そのために、並列ジョブを実行する複数の計算ノードの1つがジョブマスタとなり、ジョブの実行状況の詳細を管理する。どの計算ノードがジョブマスタなのかといった並列ジョブ特有の情報を復旧できるようにしないと、並列ジョブに対しては対応が難しい。
(2)ジョブのすべての情報を計算ノード側で保存する必要がある。
ジョブの実行に必要な情報はすべて計算ノード側で保存する必要があり、場合によっては、膨大な情報を転送しなければならない場合がある。
(3)2重ダウンに対応できない。
管理ノードと同時に一部の計算ノードが停止してしまうと、停止した計算ノードで実行されていたジョブの存在が無くなってしまう事になる。ジョブの存在自体が無くなってしまうと、該当するジョブをシステム外部から再投入する必要が生じる。そのため、システム外部で、投入したジョブが失われていないかどうかを確認する必要が生じる。すなわち、システム外部で、投入したジョブが存続しているか否かを管理しない限り、失われたジョブを再生することができず、クラスタシステムの信頼性が損なわれていた。
(4)すべての計算ノードへアクセスが必要である。
情報を集めるために、すべての計算ノードへアクセスする必要があり、通信処理が非効率である。特に、科学技術計算に用いるシステムでは、ノード数が増加傾向にあり、すべての計算ノードの管理情報を1つの計算ノードに転送するには、膨大な量のデータ転送が発生する。
(5)計算ノードがダウンした場合の再実行ができない。
計算ノードだけで情報を保護しようとしているため、計算ノードがダウンしてしまうと、実行していたジョブの再実行をすることもできない。
これらの問題のうち、少しでも多くの問題を解決することで、クラスタシステムを高信頼化させながら、処理効率の低下を防ぐことができる。
本発明はこのような点に鑑みてなされたものであり、効率的な処理によって管理ノードの高信頼化を図ることができるジョブ管理装置、クラスタシステム、およびジョブ管理プログラムを提供することを目的とする。
本発明では上記課題を解決するために、図1に示すようなクラスタシステムが提供される。このクラスタシステムは、管理ノード1、ストレージデバイス2、および複数の計算ノード3,4で構成され、ジョブ投入装置5から投入されたジョブ実行依頼に応じてジョブを実行する。なお、管理ノード1は、複数の計算ノードにジョブの実行を指示するジョブ管理装置として機能する。
管理ノード1は、ジョブDB1a、ジョブ実行依頼受付手段1b、ジョブ実行指示手段1c、およびジョブDB再構築手段1dを有する。ジョブDB1aは、メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶する。ジョブ実行依頼受付手段1bは、ジョブ実行依頼が入力されると、ジョブ実行依頼の内容、依頼されたジョブのジョブID、およびジョブ実行依頼の投入元の識別情報を含むジョブ投入情報2a,1aaをストレージデバイス2とジョブDB1aとに格納する。ジョブ実行指示手段1cは、ジョブ実行依頼受付手段1bが受け付けたジョブ実行依頼の割り当て先となる1台以上の計算ノードをジョブ被配置計算ノードに決定し、ジョブ被配置計算ノードに対してジョブの実行に使用すべき資源を示す実行資源情報3aa,3ab,4aaを付加したジョブ実行指示を送信し、ジョブIDに対応付けて、ジョブ被配置計算ノードの一覧を含むジョブ配置情報1abとジョブ被配置計算ノードそれぞれの実行資源情報1ac,1adとをジョブDB1aに格納し、ジョブIDに対応付けてジョブ配置情報2bをストレージデバイス2に格納する。ジョブDB再構築手段1dは、再起動処理によってジョブDB1aの内容が失われた場合、ストレージデバイス2からジョブ投入情報2aとジョブ配置情報2bとを収集し、ジョブ被配置計算ノードから実行資源情報3aa,3abを収集し、ジョブDB1a内にジョブ情報を再構築する。
このようなクラスタシステムによれば、ジョブ投入装置5からジョブ実行依頼が入力されると、ジョブ実行依頼受付手段1bによりジョブ実行依頼の内容、依頼されたジョブのジョブID、およびジョブ実行依頼の投入元の識別情報を含むジョブ投入情報2a,1aaがストレージデバイス2とジョブDB1aとに格納される。次に、ジョブ実行指示手段1cにより、ジョブ実行依頼受付手段1bが受け付けたジョブ実行依頼の割り当て先となる1台以上の計算ノードがジョブ被配置計算ノードに決定され、ジョブ被配置計算ノードに対してジョブの実行に使用すべき資源を示す実行資源情報3aa,3ab,4aaを付加したジョブ実行指示が送信される。また、ジョブ実行指示手段1cにより、ジョブIDに対応付けて、ジョブ被配置計算ノードの一覧を含むジョブ配置情報1abとジョブ被配置計算ノードそれぞれの実行資源情報1ac,1adとがジョブDB1aに格納され、ジョブIDに対応付けてジョブ配置情報2bがストレージデバイス2に格納される。そして、再起動処理によってジョブDB1aの内容が失われた場合、ジョブDB再構築手段1dにより、ストレージデバイス2からジョブ投入情報2aとジョブ配置情報2bとが収集され、ジョブ被配置計算ノードから実行資源情報3aa,3abが収集され、ジョブDB1a内にジョブ情報が再構築される。
本発明では、ジョブ投入情報とジョブ配置情報とをストレージデバイスに格納しておき、実行資源情報を計算ノードに渡しておくようにしたため、再起動処理によりジョブDBの内容が失われても、それらの情報を収集することでジョブ情報の再構築が可能となる。
以下、本発明の実施の形態を図面を参照して説明する。
図1は、発明の概要を示す図である。図1に示すクラスタシステムは、管理ノード1、ストレージデバイス2、および複数の計算ノード3,4で構成され、ジョブ投入装置5から投入されたジョブ実行依頼に応じてジョブを実行する。
ストレージデバイス2は、管理ノード1に接続されており、ジョブIDに対応付けられたジョブ投入情報2aとジョブ配置情報2bとを記憶する。たとえば、ジョブ投入情報2aとジョブ配置情報2bとは、それぞれが1つのファイルとしてストレージデバイス2に格納される。
計算ノード3,4は、管理ノード1からのジョブ実行指示に従って、ジョブを実行する。なお、実行指示で示されたジョブが並列ジョブ6であれば、2台の計算ノード3,4が協働してその並列ジョブ6を実行する。列ジョブ6を実行する場合、一方の計算ノード(図1の例では計算ノード3)がジョブマスタノードとして機能し、他方の計算ノード(図1の例では計算ノード4)がジョブスレーブノードとして機能する。
また、計算ノード3,4は、それぞれのメインメモリ内にジョブDB3a,4aを有している。そして、計算ノード3は、管理ノード1から渡された実行資源情報3aa,3abを、ジョブDB3a内に記憶する。このとき、ジョブマスタノードである計算ノード3には、計算ノード3自身の実行資源情報3aaに加え、ジョブスレーブノードである計算ノード4の実行資源情報3abも同時に渡される。同様に、計算ノード4は、管理ノード1から渡された実行資源情報4aaを、ジョブDB4a内に記憶する。この際、ジョブスレーブノードである計算ノード4に渡されるのは、計算ノード4自身の実行資源情報4aaである。
そして、管理ノード1から実行資源情報の収集依頼を受け取ると、各計算ノード3,4は、ジョブDB3a,4a内の実行資源情報を管理ノード1に送信する。この際、並列ジョブ6のジョブマスタノードである計算ノード3は、並列ジョブ6を実行するすべての計算ノードに関する実行資源情報3aa,3abを管理ノード1に送信する。一方、並列ジョブ6のジョブスレーブノードである計算ノード4は、実行資源情報の収集依頼を無視し、実行資源情報の送信を行わない。
管理ノード1は、ジョブDB1a、ジョブ実行依頼受付手段1b、ジョブ実行指示手段1c、およびジョブDB再構築手段1dを有する。
ジョブDB1aは、メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶する。ジョブ情報は、ジョブ投入情報1aa、ジョブ配置情報1ab、およびジョブを実行する計算ノードにおいてジョブの実行に使用する資源を示す実行資源情報1ac,1adが含まれる。
ジョブ実行依頼受付手段1bは、ジョブ投入装置5からジョブ実行依頼が入力されると、ジョブ実行依頼の内容、依頼されたジョブのジョブID、およびジョブ実行依頼の投入元の識別情報を含むジョブ投入情報2a,1aaをストレージデバイス2とジョブDB1aとに格納する。
ジョブ実行指示手段1cは、ジョブ実行依頼受付手段1bが受け付けたジョブ実行依頼の割り当て先となる1台以上の計算ノードをジョブ被配置計算ノードに決定する。なお、依頼されたジョブが並列ジョブであれば、複数の計算ノードがジョブ被配置計算ノードとして決定される。その後、ジョブ実行指示手段1cは、ジョブ被配置計算ノードに対してジョブの実行に使用すべき資源を示す実行資源情報3aa,3ab,4aaを付加したジョブ実行指示を送信する。また、ジョブ実行指示手段1cは、ジョブIDに対応付けて、ジョブ被配置計算ノードの一覧を含むジョブ配置情報1abとジョブ被配置計算ノードそれぞれの実行資源情報1ac,1adとをジョブDB1aに格納する。さらに、ジョブ実行指示手段1cは、ジョブIDに対応付けてジョブ配置情報2bをストレージデバイス2に格納する。
ジョブDB再構築手段1dは、再起動処理によってジョブDB1aの内容が失われた場合、ストレージデバイス2からジョブ投入情報2aとジョブ配置情報2bとを収集する。さらに、ジョブDB再構築手段1dは、ジョブ被配置計算ノードから実行資源情報3aa,3abを収集する。そして、ジョブDB再構築手段1dは、収集したジョブ投入情報2a、ジョブ配置情報2b、および実行資源情報3aa,3abによってジョブDB1a内にジョブ情報を再構築する。
このようなクラスタシステムによれば、ジョブ投入装置5からジョブ実行依頼が入力されると、ジョブ実行依頼受付手段1bにより、ジョブ実行依頼の内容、依頼されたジョブのジョブID、およびジョブ実行依頼の投入元の識別情報を含むジョブ投入情報2a,1aaがストレージデバイス2とジョブDB1aとに格納される。
次に、ジョブ実行指示手段1cにより、ジョブ実行依頼受付手段1bが受け付けたジョブ実行依頼の割り当て先となる1台以上の計算ノードがジョブ被配置計算ノードに決定され、ジョブ被配置計算ノードに対してジョブの実行に使用すべき資源を示す実行資源情報3aa,3ab,4aaを付加したジョブ実行指示が送信される。また、ジョブ実行指示手段1cにより、ジョブIDに対応付けて、ジョブ被配置計算ノードの一覧を含むジョブ配置情報1abとジョブ被配置計算ノードそれぞれの実行資源情報1ac,1adとがジョブDB1aに格納され、ジョブIDに対応付けてジョブ配置情報2bがストレージデバイス2に格納される。
その後、管理ノード1に障害が発生すると、管理ノード1の再起動処理が行われる。管理ノード1が再起動されると、ジョブDB1aの内容が失われる。すると、ジョブDB再構築手段1dにより、ストレージデバイス2からジョブ投入情報2aとジョブ配置情報2bとが収集され、ジョブ配置情報2bに示されたジョブ被配置計算ノードから実行資源情報3aa,3abが収集され、ジョブDB1a内にジョブ情報が再構築される。
このようにして、管理ノード1の高信頼化を効率的な処理によって実現できる。すなわち、ジョブ投入情報2aとジョブ配置情報2bとは、管理ノード1に接続されたストレージデバイス2に記憶される。ジョブ投入情報2aとジョブ配置情報2bとの書き込みは、ジョブ実行依頼を受け付けたときと、計算ノード3,4へのジョブ実行指示を送信したときに行えばよい。しかも、実行資源情報を含めてストレージデバイス2に格納する場合に比べて、書き込むべき情報の量が少ない。そのため、ストレージデバイス2への書き込み遅延を最小限に抑えることができる。
さらに、実行資源情報の複製が計算ノード3,4で管理される。その結果、管理ノード1がダウンしたときに、実行資源情報を計算ノード3,4から収集できる。
ところで、本発明を特許文献1記載の発明(特開平6−96041号公報)と比較したとき、本発明では一部の情報をストレージデバイス2に格納している点が大きく異なる。すなわち、本発明に係るクラスタシステムは、並列ジョブにも適用可能な構成となっている。並列ジョブに適用するには、並列ジョブがどの計算ノードに割り当てたのかを認識している必要がある。特許文献1の請求項3を参照すると、システム上で共有されるデータに関しては、複写が各計算機に配置される。すると、管理ノードがダウンした際に、その情報を収集する際に、膨大な量の無駄が生じることとなる。最近のクラスタシステムでは、数百台あるいはそれ以上のノードが接続されることがある。それらのノードすべてから共有の情報を収集したのでは、通信の混雑を招き管理ノードの運用再開を遅延させる原因となる。
本発明では、ジョブ投入情報2aやジョブ配置情報2bといった情報(計算ノード固有はなくシステム管理上共有すべき情報)は、ストレージデバイス2に保存しているため、情報収集の際の通信負荷が軽減される。しかも、ストレージデバイス2に保存する情報を最小限の情報量に抑えているため、情報の書き込み遅延による信頼性低下も抑えられる。
なお、ストレージデバイス2に記憶されるジョブ投入情報2aやジョブ配置情報2bは、ジョブの投入・終了に必要なデータである。これらの情報は実行中には不要である。すなわち、これらの情報を計算ノードに持たせなくても、ジョブの実行に悪影響はない。しかも、これらの情報をメインメモリに記憶させずに済むことで、メモリ資源の有効活用も図れる。
また、ジョブ投入情報2aとジョブ配置情報2bとをストレージデバイス2に格納するため、管理ノードと計算ノードが同時に停止しても、ジョブの存在自体を忘れることがなくなるというさらなる効果を有する。すなわち、ジョブ投入装置5からのジョブ実行依頼を再度入力しなくても、ジョブを最初から実行することが可能である。
さらに、本発明では、並列ジョブのジョブマスタノードに対してジョブスレーブノードの分も含めて実行資源情報を渡す。そして、管理ノード1を再起動した場合には、ジョブマスタノードからのみ実行資源情報を収集する。これにより、情報収集の際のデータ通信回数を削減することができる。
すなわち、並列ジョブの場合、複数の計算ノードに跨った情報を管理する必要がある。そのための簡単な方法は、ジョブ全体の情報を関連する全計算ノードに送ることである。しかし、管理ノード1が再立ち上げしてきた場合には、全部の計算ノードから情報を収集するのでは、非効率である。そのため、本発明ではジョブ内の複数の計算ノードからジョブマスタノードを決めておき、ジョブの実行に必要な情報を1つにまとめておく。これにより、高信頼化処理時にはジョブマスタノードのみから情報を取得して、管理ノード1のジョブDB1aの再構築が可能となる。その結果、情報収集の際の通信回数を削減することができる。
しかも、管理ノード1がダウンした場合、一刻も早い管理ノード1の復旧が望まれる。そのため、通信回数を削減することによる管理ノード1の復旧の迅速化は、高信頼化処理にとって非常に重要である。
次に、本実施の形態の詳細を説明する。
[第1の実施の形態]
図2は、本実施の形態のクラスタシステム構成例を示す図である。本実施の形態に係るクラスタシステムは、1台の管理ノード100と複数の計算ノード200,300,400,500,600で構成されている。
管理ノード100は、クラスタシステムに対して依頼されたジョブを管理する。ジョブの実行依頼は、管理ノード100にネットワーク22を介して接続されたジョブ投入装置30から送られる。また、管理ノード100は、ストレージデバイス110を有している。ストレージデバイス110は、依頼されたジョブの内容を記憶する記憶装置である。ストレージデバイス110としては、ハードディスク装置などの不揮発性の記憶媒体が使用される。
ジョブ投入装置30は、クラスタシステムの利用者がジョブの投入に使用するコンピュータである。
複数の計算ノード200,300,400,500,600は、ネットワーク21を介して互いに接続されていると共に、管理ノード100に接続されている。計算ノード200,300,400,500,600は、管理ノード100によって割り当てられたジョブを実行する。
本実施の形態では、管理ノード100と計算ノード200,300,400,500,600とは、それぞれマルチプロセッサのコンピュータである。
図3は、本実施の形態に用いる管理ノードのハードウェア構成例を示す図である。管理ノード100は、複数のCPU(Central Processing Unit)101a,101b,・・・によって装置全体が制御されている。CPU101,101b,・・・には、バス109を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、複数の通信インタフェース106,107、およびストレージデバイスインタフェース108が接続されている。
RAM102には、メインメモリとして使用され、CPU101a,101b,・・・に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101a,101b,・・・による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションプログラムが格納される。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101a,101b,・・・からの命令に従って、画像をモニタ11の画面に表示させる。入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス109を介してCPU101a,101b,・・・に送信する。
通信インタフェース106は、ネットワーク21に接続されている。通信インタフェース106は、ネットワーク21を介して、計算ノードとの間でデータの送受信を行う。
通信インタフェース107は、ネットワーク22に接続されている。通信インタフェース107は、ネットワーク22を介して、ジョブ投入装置30との間でデータの送受信を行う。
ストレージデバイスインタフェース108は、ストレージデバイス110に対するデータの書き込みや、ストレージデバイス110からのデータの読み出しを行うための通信インタフェースである。
以上のようなハードウェア構成によって、管理ノード100はジョブの管理に必要な機能を実現することができる。なお、図3には管理ノード100のハードウェア構成例を示したが、計算ノード200,300,400,500,600やジョブ投入装置30も同様のハードウェアで実現することができる。
図4は、クラスタシステムの機能を示すブロック図である。管理ノード100は、ジョブ実行依頼受付部121、ジョブ実行指示部122、ジョブDB再構築部123、およびジョブDB130を有している。
ジョブ実行依頼受付部121は、ジョブ投入装置30からのジョブ実行依頼を受け付ける。ジョブ実行依頼には、ジョブの実行に使用するプログラムの指定や、そのプログラムに引き渡すパラメータなどが含まれる。また、ジョブ実行依頼受付部121は、受け付けたジョブ実行依頼をジョブ実行指示部122に渡すと共に、ジョブ実行依頼の内容を示すジョブ投入情報をジョブDB130とストレージデバイス110とに格納する。
ジョブ実行指示部122は、起動している計算ノード200,300,400,500,600のリストを有しており、ジョブ実行依頼に応じたジョブの割り振りを行う。すなわち、ジョブ実行指示部は、ジョブ実行依頼受付部121からジョブ実行依頼に応じて、ジョブ実行指示を計算ノードに対して出力する。
なお、ジョブ実行依頼には、実行すべきジョブが並列ジョブなのか逐次ジョブなのかを示す情報が含まれている。また、並列ジョブであれば、並列数(実行に必要な計算ノードの数)がジョブ実行依頼に含まれる。依頼されたジョブが並列ジョブであれば、ジョブ実行指示部122は、並列数に応じた数の計算ノードを依頼先として決定する。また、依頼されたジョブが逐次ジョブであれば、ジョブ実行指示部122は、1台の計算ノードを依頼先として決定する。そして、ジョブ実行指示部122は、依頼先の計算ノードに対して、ジョブ実行指示を出力する。
並列ジョブのジョブ実行指示を出す場合、ジョブ実行指示部122は、依頼先の計算ノードの1つをジョブマスタに指定し、ジョブマスタ以外の計算ノードをジョブスレーブに指定する。ジョブマスタの計算ノード(ジョブマスタノード)にジョブ実行指示を出す場合、ジョブ実行指示部122は、ジョブマスタノードに対して並列ジョブの依頼先となるすべての計算ノードに関する実行資源情報を渡す。実行資源情報は、ジョブの実行に際して使用すべき資源(使用すべきCPUやメモリ容量など)に関する情報である。また、ジョブスレーブの計算ノード(ジョブスレーブノード)にジョブ実行指示を出す場合、ジョブ実行指示部122は、ジョブスレーブノードに対して、ジョブスレーブノード自身に関する実行資源情報を渡す。
さらに、ジョブ実行指示部122は、ジョブ実行依頼に応じたジョブ実行指示をどの計算ノードに出したのかを示すジョブ配置情報を、ストレージデバイス110に格納する。また、ジョブ実行指示部122は、ジョブ実行指示を計算ノードに対して出力した場合、ジョブ配置情報と実行資源情報とを、ジョブDB130に格納する。
なお、ジョブ実行指示部122は、管理ノード100の再起動が行われると、起動している計算ノードのリストを再構築する。具体的には、ジョブ実行指示部122は、ネットワーク21を介してノード組み込み依頼をすべての計算ノード200,300,400,500,600宛に送信する(たとえば、ブロードキャスト送信を行う)。ジョブ実行指示部122は、組み込み依頼に対する応答を返した計算ノードを、起動しているものと認識する。そして、ジョブ実行指示部122は、起動している計算ノードのリストを作成する。
また、ジョブ実行指示部122は、計算ノード200,300,・・・からの要求を受け付け、その要求に応じた処理を行う。さらに、計算ノード200,300,・・・においてジョブが終了すると、処理結果を受け取る。受け取った処理結果は、ジョブ実行依頼受付部121を介して、対応するジョブのジョブ実行依頼を出力したジョブ投入装置30に送信される。そのとき、ジョブ実行指示部122は、ストレージデバイス110の中から、終了したジョブに対応するジョブデータを削除すると共に、終了したジョブのジョブ情報をジョブDB130から削除する。
ジョブDB再構築部123は、ジョブDB130の内容が失われた場合に、ジョブDB130の再構築を行う。具体的には、ジョブDB再構築部123は、管理ノード100が再起動された際に、ストレージデバイス110からジョブ投入情報とジョブ配置情報とを取得する。さらに、ジョブDB再構築部123は、起動されている計算ノードのうち、逐次ジョブを実行している計算ノードと、並列ジョブにおけるジョブマスタノードとから実行資源情報を取得する。そして、ジョブDB再構築部123は、実行資源情報をジョブDB130に格納する。
計算ノード200は、ジョブ制御部211,計算ノード内ジョブDB220を有している。ジョブ制御部211は、ジョブ実行指示部122からのジョブ実行指示に応じて並列ジョブ実行プロセス212を起動する。具体的には、ジョブ実行指示において、ジョブを実行するためのプログラムや必要なパラメータや実行資源情報が指定される。
ジョブ制御部211は、指定されたプログラムの実行をOSに指示する。その際、ジョブ制御部211は、実行資源情報において指定された資源の利用をOSに指示する。これにより、OSは、指定されたCPU上にプロセスを生成し、そのプロセスにジョブ用のプログラムを実行させる。指定されたプログラムが並列ジョブ用のプログラムであれば、起動されたプロセスが並列ジョブ実行プロセス212として機能する。なお、指定されたプログラムが逐次ジョブ用のプログラムであれば、起動されたプロセスは、逐次ジョブとして機能することとなる。
また、ジョブ制御部211は、ジョブ実行指示で指定された実行資源情報を、計算ノード内ジョブDB220に格納する。なお、計算ノード200がジョブマスタノードとして機能する場合、ジョブスレーブノードの実行資源情報も併せて計算ノード内ジョブDB220に格納する。
ジョブの処理が終了した場合、ジョブ制御部211は、ジョブの処理結果をジョブ実行指示部122に渡す。その際、ジョブ制御部211は、終了したジョブの実行資源情報を計算ノード内ジョブDB220から削除する。
なお、ジョブ制御部211は、管理ノード100からノード組み込み依頼を受け取った場合、ノード情報を応答する。ノード情報とは、クラスタ内で計算ノード200を一意に識別するための識別情報や、実装している資源(CPU数やメモリ容量)の情報である。
さらに、ジョブ制御部211は、管理ノード100から実行資源収集依頼を受け取ると、自分が並列ジョブのジョブマスタノードとして機能しているか、あるいは逐次ジョブを実行しているかを判断する。ジョブマスタノードとして機能している場合、ジョブ制御部211は、計算ノード内ジョブDB220内のすべての実行資源情報を管理ノード100に送信する。また、逐次ジョブを実行している場合、ジョブ制御部211は、実行中の逐次ジョブの実行資源情報を管理ノード100に送信する。
計算ノード内ジョブDB220は、計算ノード200で実行しているジョブの実行資源情報を記憶する。たとえば、計算ノード200のメインメモリ(RAM)内の一部の記憶領域が、計算ノード内ジョブDB220として使用される。
計算ノード300も、計算ノード200と同様に、ジョブ制御部311、計算ノード内ジョブDB320を有しており、並列ジョブのジョブ行指示を受けた場合、並列ジョブ実行プロセス312が起動される。計算ノード300内の各要素は、計算ノード200の同名の要素と同じ機能を有している。
ここで、計算ノード200と計算ノード300とに対して、1つのジョブ実行依頼に基づく並列ジョブの実行指示が出された場合、計算ノード200の並列ジョブ実行プロセス212と計算ノード300の並列ジョブ実行プロセス312とは、互いに連携して処理を実行する。たとえば、並列ジョブ実行プロセス312の演算結果が並列ジョブ実行プロセス212に渡され、並列ジョブ実行プロセス212は受け取った演算結果を利用して別の演算を行う。
なお、図示していない計算ノード400,500,600も、計算ノード200,300と同様の機能を有している。
次に、ジョブDB130の内容について詳細に説明する。
図5は、ジョブDBのデータ構造例を示す図である。ジョブDB130には、投入されたジョブごとのジョブ情報130a,130b,・・・が格納されている。ジョブ情報130aには、ジョブ投入情報131、ジョブ配置情報132、実行資源情報133が含まれている。
ジョブ投入情報131は、ジョブ実行依頼で示されるジョブの内容を示す情報である。たとえば、ジョブ投入情報131には、ジョブ投入マシン、投入ユーザ、投入ディレクトリ、投入オプション、ジョブID(Job ID)などの情報が含まれる。
ジョブ投入マシンは、ジョブ実行依頼を出力した装置(図4の例ではジョブ投入装置30)を一意に識別するための識別情報である。ジョブ投入マシンの情報を参照することで、ジョブの処理結果を送信すべき装置を判断することができる。投入ユーザは、ジョブを投入したユーザを一意に識別するための情報である。投入ディレクトリは、ジョブの処理結果の格納場所(ディレクトリ)を示す情報である。ジョブIDは、投入されたジョブを一意に識別するための識別情報である。ジョブIDは、ジョブ実行依頼が入力された際に、ジョブ実行依頼受付部121によって付与される。
ジョブ配置情報132は、計算ノードにジョブの実行指示が出されたときにジョブ実行指示部122によって作成される情報である。ジョブ配置情報132には、ジョブID、ノードID(Node ID)一覧などの情報が含まれる。ジョブIDは、ジョブの識別情報であり、ジョブ投入情報131と同じジョブIDが設定される。ノードID一覧は、ジョブの実行指示を出した計算ノードの識別情報である。並列ジョブであれば、複数のノードIDがノードID一覧に設定される。逐次ジョブであれば、1つのノードIDがノードID一覧に設定される。また、並列ジョブの場合、ノードID一覧内の1つのノードIDに、ジョブマスタであることを示すフラグが設定される。
実行資源情報133は、計算ノードにジョブの実行指示が出されたときにジョブ実行指示部122によって作成される情報である。実行資源情報133には、ジョブID、実行可能経過時間制限値、実行可能CPU時間制限値などに加え、ジョブ実行指示先のノードごとのノード別実行資源情報133a,133b,133cが含まれている。
実行資源情報133のジョブIDは、ジョブ投入情報131のジョブIDと同じである。実行可能経過時間制限値は、ジョブの実行にかかる時間の制限値である。ジョブの実行が開始されてから実行可能経過時間制限値で示された時間を経過してもジョブが終了しない場合、該当ジョブはジョブ実行指示部122によって強制的に終了させられる。実行可能CPU時間制限値は、ジョブの実行に使用可能なCPUの占有時間の制限値である。実行を指示したジョブによる各ノードでのCPUの占有時間の合計が実行可能CPU時間制限値を超えた場合、該当ジョブはジョブ実行指示部122によって強制的に終了させられる。
ノード別実行資源情報133a,133b,133cには、ノードID、ジョブID、使用可能CPU数、使用可能メモリ量などの情報や、各ノード内のCPUごとのCPU情報が含まれている。
ノードIDは、ジョブ実行指示が出された計算ノードの識別情報である。ノード別実行資源情報133a,133b,133cのジョブIDは、ジョブ投入情報131のジョブIDと同じである。
使用可能CPU数は、ノードIDで示された計算ノードにおいて使用可なCPUの数である。なお、図5には示していないが、計算ノードが搭載しているCPU数、使用しているCPU数、ジョブの実行のために予約されているCPU数などの情報がノード別実行資源情報133a,133b,133cに含まれる。
使用可能メモリ量は、ノードIDで示された計算ノードにおいて使用可なメインメモリ(RAM)の記憶容量である。なお、図5には示していないが、計算ノードが搭載している全メモリ容量、使用量(ジョブの実行に使用されている記憶容量)、予約量(ジョブの実行のために予約されている記憶容量)などの情報がノード別実行資源情報133a,133b,133cに含まれる。
CPU情報には、CPUIDなどの情報が含まれる。CPUIDは、計算ノードに実装されているCPUの識別情報である。なお、図5には示していないが、CPUが使用されているのか未使用なのかを示すフラグが、各CPU情報に含まれる。
なお、ジョブDB130内の各ジョブ情報130a,130b,・・・は、対応するジョブの処理が終了すると、ジョブ実行指示部122によって削除される。
このように、ジョブDB130には、クラスタシステムにおけるジョブの管理に必要な情報が格納されている。このジョブDB130に格納された情報の一部が、ハードディスク上に設けられたストレージデバイス110に格納される。
図6は、ストレージデバイスのデータ構造例を示す図である。ストレージデバイス110には、投入されたジョブ(ジョブ実行依頼によって依頼されたジョブ)ごとのジョブデータ111,112,・・・が格納されている。
ジョブデータ111には、ジョブ投入情報111aとジョブ配置情報111bとが格納されている。ジョブ投入情報111a内容は、ジョブDB130内のジョブ投入情報131と同じである。ジョブ配置情報111bの内容は、ジョブDB130内のジョブ配置情報132と同じである。
すなわち、ジョブDB130内に新たにジョブ投入情報131が登録される際には、同期してストレージデバイス110内にジョブ投入情報111aが格納される。同様に、ジョブDB130内に新たにジョブ配置情報132が登録される際には、同期してストレージデバイス110内にジョブ配置情報111bが格納される。
次に、計算ノード200,300,400,500,600に設けられた計算ノード内ジョブDBのデータ構造例について説明する。計算ノード内ジョブDBの内容は、該当する計算ノードがジョブマスタノードであるのか、ジョブスレーブノードであるのかによって異なる。そこで、計算ノード200がジョブマスタノードとして機能し、計算ノード300がジョブスレーブノードとして機能している場合を想定し、それぞれの計算ノード200,300の計算ノード内ジョブDB220,320のデータ構造を説明する。
図7は、ジョブマスタノードの計算ノード内ジョブDBのデータ構造例を示す図である。ジョブマスタノードの計算ノード内ジョブDB220には、ジョブマスタノードで実行されている並列ジョブの実行資源情報221が格納されている。実行資源情報221には、並列ジョブが割り当てられた各計算ノードのノード別実行資源情報221a,221b,221cが含まれている。実行資源情報221の内容は、管理ノード100のジョブDB130に格納された実行資源情報133と同じである。すなわち、ジョブDB130内に新たに実行資源情報133が登録される際には、同期して計算ノード200の計算ノード内ジョブDB220に実行資源情報221が格納される。
図8は、ジョブスレーブノードの計算ノード内ジョブDBのデータ構造例を示す図である。ジョブスレーブノードの計算ノード内ジョブDB320には、ジョブスレーブノードで実行されている並列ジョブのノード別実行資源情報321が格納されている。実行資源情報321の内容は、管理ノード100のジョブDB130に格納されたノード別実行資源情報133a,133b,133c内の計算ノード300に対応するノード別実行資源情報と同じである。すなわち、ジョブDB130内に計算ノード300のノード別実行資源情報が登録される際には、同期して計算ノード300の計算ノード内ジョブDB320に実行資源情報321が格納される。
以上のような構成のクラスタシステムにおいて、高信頼性のジョブ管理が行われる。以下、ジョブ管理の処理内容を詳細に説明する。
図9は、ジョブの実行例を示す図である。図9の例では、クラスタシステムにおいて、2つの並列ジョブ31,32が実行されている。
並列ジョブ31は、3台の計算ノード200,300,400に割り当てられている。すなわち、3台の計算ノード200,300,400それぞれの並列ジョブ実行用のプロセスが互いに連携して、並列ジョブ31の処理を実行している。並列ジョブ31の実行に際し、計算ノード200がジョブマスタノードとして機能しており、計算ノード300,400がジョブスレーブノードとして機能している。なお、並列ジョブ31のジョブIDは「JobID#0」である。
並列ジョブ32は、2台の計算ノード500,600に割り当てられている。すなわち、2台の計算ノード500,600それぞれの並列ジョブ実行用のプロセスが互いに連携して、並列ジョブ32の処理を実行している。並列ジョブ32の実行に際し、計算ノード500がジョブマスタノードとして機能しており、計算ノード600がジョブスレーブノードとして機能している。なお、並列ジョブ3のジョブIDは「JobID#1」である。
この場合、管理ノード100のジョブDB130には、並列ジョブ31に対応するジョブ情報130aと、並列ジョブ32に対応するジョブ情報130bとが格納される。ジョブ情報130aは、ジョブID「JobID#0」が設定されることで、並列ジョブ31と関連付けられている。同様に、ジョブ情報130bは、ジョブID「JobID#1」が設定されることで、並列ジョブ32と関連付けられている。
ジョブ情報130aには、3台の計算ノード200,300,400それぞれに対応するノード別実行資源情報133a,133b,133cが含まれている。また、ジョブ情報130bには、2台の計算ノード500,600それぞれに対応するノード別実行資源情報133d,133eが含まれている。
並列ジョブ31のジョブマスタノードである計算ノード200の計算ノード内ジョブDB220には、計算ノード200自身のノード別実行資源情報221aに加え、ジョブスレーブノードである計算ノード300,400のノード別実行資源情報221b,221cが格納されている。各ノード別実行資源情報221a,221b,221cは、対応する計算ノード200,300,400のノードIDが設定されている。そのノードIDによって、どの計算ノードに対応するノード別実行資源情報なのかが一意に識別される。
並列ジョブ31のジョブスレーブノードである計算ノード300の計算ノード内ジョブDB320には、計算ノード300自身のノード別実行資源情報321が格納されている。同様に、並列ジョブ31のジョブスレーブノードである計算ノード400の計算ノード内ジョブDB420には、計算ノード400自身のノード別実行資源情報421が格納されている。
並列ジョブ32のジョブマスタノードである計算ノード500の計算ノード内ジョブDB520には、計算ノード500自身のノード別実行資源情報521aに加え、ジョブスレーブノードである計算ノード600のノード別実行資源情報521bが格納されている。各ノード別実行資源情報521a,521bは、対応する計算ノード500,600のノードIDが設定されている。そのノードIDによって、どの計算ノードに対応するノード別実行資源情報なのかが一意に識別される。
並列ジョブ32のジョブスレーブノードである計算ノード600の計算ノード内ジョブDB620には、計算ノード600自身のノード別実行資源情報621が格納されている。
このような状況下で管理ノード100が機能停止に陥った(ダウンした)場合を考える。
図10は、管理ノードダウン時の状態を示す図である。管理ノード100がダウンすると、管理ノード10のジョブDB130内に格納されていたジョブ情報130a,130bは失われる。ただし、この場合でも計算ノード200,300,400,500,600では、並列ジョブ31,32が継続して実行される。
計算ノード200,300,400,500,600から管理ノード100へ出力するべき要求が発生した場合、その要求は管理ノード100が復旧するまでの間一時停止(ペンディング)の状態となる。たとえば、ジョブが終了したことを示す終了通知も、管理ノード100が復旧するまでペンディングとなる。
図11は、管理ノード再起動後の状態を示す図である。管理ノード100の障害が復旧し再起動すると、管理ノード100は、ストレージデバイス110とジョブマスターノードとして機能する計算ノード200,500から情報を収集し、ジョブDB130を再構築する。
具体的には、2つの並列ジョブ31、32それぞれのジョブ投入情報111a,112aとジョブ配置情報111b,112bとがストレージデバイス110から収集される。また、並列ジョブ31を実行している各計算ノード200,300,400それぞれのノード別実行資源情報221a,221b,221cが、並列ジョブ31のジョブマスタノードである計算ノード200から収集される。さらに、並列ジョブ32を実行している各計算ノード500,600それぞれのノード別実行資源情報521a,521bが、並列ジョブ32のジョブマスタノードである計算ノード500から収集される。
管理ノード100では、収集した情報をジョブIDに基づいて同一ジョブに関する情報を纏め、ジョブ情報130a,130bを再構築する。管理ノード100がダウンしてから再起動、およびジョブ情報130a,130bを行うまでの間、各並列ジョブ31,32は継続して実行される。
次に、第1の実施の形態における処理手順を具体的に説明する。
図12は、並列ジョブを実行するまでの処理手順を示すシーケンス図である。以下、図12に示す処理をステップ番号に沿って説明する。なお、以下の説明では、並列ジョブのジョブ実行依頼に応じて、2台の計算ノード200,300にジョブを実行させるものとする。
[ステップS11]管理ノード100のジョブ実行依頼受付部121は、ジョブ投入装置30からのジョブ実行依頼を受け付ける。ジョブ実行依頼受付部121は、受け付けたジョブ実行依頼をジョブ実行指示部122に渡す。また、ジョブ実行依頼受付部121は、ジョブ実行依頼に応じたジョブ情報130aをジョブDB130内に生成する。そして、ジョブ実行依頼受付部121は、ジョブ実行依頼に基づいてジョブ投入情報131を作成し、ジョブDB130のジョブ情報130aに格納すると共に、ストレージデバイス110にファイル形式で格納する。
[ステップS12]ジョブ実行指示部112は、ジョブ実行依頼に応じたジョブの割り当て先となる計算ノードを決定する。具体的には、ジョブの実行に必要な数の計算ノードが空き状態(ジョブを実行していない状態)になるのを待ち、空きになった計算ノードを割り当て先として決定する。なお、必要な数の計算ノードが空き状態となるまで、ジョブ実行指示は待ち状態となる(実行待ちキューにキューイングされる)。
このとき、ジョブ実行指示部112によって実行資源情報133が作成される。実行資源情報133では、ジョブを実行するために使用する資源が指定される。たとえば、使用すべきCPUのCPUIDなどである。ジョブ実行指示部112は、作成した実行資源情報133をジョブDB130に格納する。
[ステップS13]ジョブ実行指示部112は、ジョブ実行依頼に応じて決定されたジョブの割り当て先の計算ノードにジョブ実行依頼を送信する。この際、ジョブ実行指示部112は、計算ノード200をジョブマスタノードとして選択する。
そして、ジョブ実行指示部112は、計算ノード200に対して、ジョブ実行依頼においてジョブマスタであることを指定すると共に、計算ノード200,300それぞれのノード別実行資源情報を含む実行資源情報133を送信する。また、ジョブ実行指示部112は、計算ノード300に対して、ジョブ実行依頼においてジョブスレーブであることを指定すると共に、計算ノード300のノード別実行資源情報を送信する。
この際、ジョブ実行指示部112は、ジョブ配置情報132を生成し、ジョブ配置情報132をジョブDB130に格納すると共に、ストレージデバイス110にファイル形式で格納する。このジョブ配置情報132には、計算ノード200,300でジョブが実行されていること、および計算ノード200がジョブマスタノードであることが示されている。
[ステップS14]ジョブ実行依頼を受け取った計算ノード200では、ジョブ制御部211がジョブ実行依頼を受信する。そして、ジョブ制御部211は、ジョブ実行依頼と共に送られた実行資源情報を、計算ノード内ジョブDB220に格納する。
[ステップS15]ジョブ実行依頼を受け取った計算ノード300では、ジョブ制御部311がジョブ実行依頼を受信する。そして、ジョブ制御部311は、ジョブ実行依頼と共に送られたノード別実行資源情報を、計算ノード内ジョブDB320に格納する。
[ステップS16]計算ノード200のジョブ制御部211は、ジョブ実行依頼に応じた並列ジョブ実行プロセス212を起動し、ジョブを実行させる。
[ステップS17]計算ノード300のジョブ制御部311は、ジョブ実行依頼に応じた並列ジョブ実行プロセス312を起動し、ジョブを実行させる。以後、計算ノード200の並列ジョブ実行プロセス212と計算ノード300の並列ジョブ実行プロセス312とが連携して、処理を実行する。
このようにして並列ジョブを実行しているときに、管理ノード100がダウンすると、管理ノードの復旧処理が行われる。
図13は、管理ノードの復旧処理手順を示すシーケンス図である。以下、図13に示す処理をステップ番号に沿って説明する。この例は、2台の計算ノード200,300で並列ジョブを実行中に、管理ノード100がダウンしたときの復旧処理を示している。
[ステップS21]管理ノード100がダウンした後も、計算ノード200の並列ジョブ実行プロセス212は処理を継続する。
[ステップS22]同様に、計算ノード300の並列ジョブ実行プロセス312は処理を継続する。
[ステップS23]計算ノード200の並列ジョブ実行プロセス212において管理ノード100への要求が発生すると、並列ジョブ実行プロセス212はエラー処理とはせずにその要求を待ち合わせ状態とする。待ち合わせの間、計算ノード200では、処理開始からの経過時間やCPU使用時間のカウンタを停止させる。クラスタシステムによる計算サービスを提供している場合、経過時間やCPU使用時間によって請求金額が異なる場合がある。システム障害によって要求の待ち合わせを行っている間、そのような計測時間のカウンタと停止することで、公正な料金換算を行うことができる。
[ステップS24]計算ノード300の並列ジョブ実行プロセス312において管理ノード100への要求が発生すると、並列ジョブ実行プロセス312はエラー処理とはせずにその要求を待ち合わせ状態とする。待ち合わせの間、計算ノード200では、処理開始からの経過時間やCPU使用時間のカウンタを停止させる。
なお、並列ジョブ実行プロセス212,312の実行途中で管理ノード100への要求が不要な場合、処理が最後まで実行され、ジョブマスタノードの並列ジョブ実行プロセス212から管理ノード100への結果通知処理が待ち合わせ状態となる。ジョブの処理結果には、演算結果に加えて、所要時間やCPU使用時間が含まれる。
[ステップS25]管理ノード100の障害の原因が取り除かれると、管理ノード100が起動される。
[ステップS26]起動された管理ノード100では、ジョブ実行指示部122が計算ノード200,300に対してノード組み込み依頼を送信する。ノード組み込み依頼は、クラスタを構成する計算ノードとして機能することを要求するメッセージである。
[ステップS27]計算ノード200のジョブ制御部211は、管理ノード100からのノード組み込み依頼を受信する。
[ステップS28]計算ノード300のジョブ制御部311は、管理ノード100からのノード組み込み依頼を受信する。
[ステップS29]計算ノード200のジョブ制御部211は、管理ノード100に対してノード情報を通知する。このノード情報には、計算ノード200のノードIDや、計算ノード200が有する資源情報(ハードウェア資源とソフトウェア資源)が含まれる。
[ステップS30]計算ノード300のジョブ制御部311は、管理ノード100に対してノード情報を通知する。このノード情報には、計算ノード300のノードIDや、計算ノード300が有する資源情報(ハードウェア資源とソフトウェア資源)が含まれる。
[ステップS31]ジョブ実行指示部122は、ノード情報を受信する。
[ステップS32]ジョブ実行指示部122は、起動中の計算ノード情報を構築する。具体的には、ジョブ実行指示部122は、起動している計算ノードのリストを作成し、その計算ノードのノードIDに対応付けて資源情報を管理する。
[ステップS33]ジョブDB再構築部123は、実行資源情報収集依頼を計算ノード200,300に送信する。
[ステップS34]計算ノード200のジョブ制御部211は、実行資源情報収集依頼を受信する。
[ステップS35]計算ノード300のジョブ制御部311は、実行資源情報収集依頼を受信する。
[ステップS36]計算ノード200のジョブ制御部211は、実行資源情報を管理ノード100に通知する。具体的には、ジョブ制御部211は、計算ノード内ジョブDB220から実行資源情報221を取得する。この実行資源情報221には、計算ノード200自身のノード別実行資源情報に加え、並列ジョブのジョブスレーブノードとなる計算ノード300のノード別実行資源情報も含まれている。そして、ジョブ制御部211によって実行資源情報221が管理ノード100に送信される。
このとき、計算ノード300は、自身がジョブスレーブノードであるため、実行資源情報の送信は行わない。すなわち、管理ノード100から送られた実行資源収集依頼は、計算ノード300のジョブ制御部311において無視される。これにより、実行資源情報の収集のために、余計なデータ転送が発生せずに済む。
[ステップS37]管理ノード100のジョブDB再構築部123は、ジョブマスタノードとして機能する計算ノード200から送られた実行資源情報を受信する。
[ステップS38]ジョブDB再構築部123は、ジョブDB130を再構築する。すなわち、ストレージデバイス110からジョブ投入情報131とジョブ配置情報132を取得して、ジョブ毎のジョブ情報130aを作成する。そして、ジョブDB再構築部123は、作成したジョブ情報130aに対して、計算ノード200から取得した実行資源情報133を登録する。
[ステップS39]ジョブDB再構築部123は、ジョブの継続か可能か否かを判断する。具体的には、ジョブDB再構築部123は、ジョブ投入情報131に基づいて、どのようなジョブ実行依頼を受け付けているのかを認識する。さらに、ジョブDB再構築部123は、ジョブ配置情報132に基づいて、ジョブがどの計算ノードに割り当てられたのかを認識する。そして、ジョブ配置情報132は、ステップS32で構築されたノード情報に基づいて、割り当て先の計算ノードがすべて動作していること、およびジョブマスタノードから割り当て先の計算ノードに関する実行資源情報が送られたことを確認する。これらの確認が正しく行われれば、ジョブ配置情報132は、ジョブを継続可能と判断する。
[ステップS40]ジョブの継続可能と判断した場合、ジョブ配置情報132は、ジョブ運用再開を、並列ジョブを実行している各計算ノード200,300に通知する。
[ステップS41]計算ノード200のジョブ制御部211は、ジョブ運用再開の通知を受けて、管理ノード100との間の通信を再開する。すなわち、待ち合わせ状態の要求がある場合、その要求が管理ノード100に送られる。また、ジョブが終了している場合、処理結果が管理ノード100に送られる。
[ステップS42]計算ノード300のジョブ制御部311は、ジョブ運用再開の通知を受けて、管理ノード100との間の通信を再開する。
このようにして、管理ノード100がダウンした場合にも、計算ノード200,300に対して並列ジョブをそのまま継続して実行させることができる。なお、管理ノード100への要求が発生した場合には待ち合わせとなるが、管理ノード100を再起動させた後にその状態から処理を続行できる。その結果、並列ジョブを最初から実行し直す必要が無くなり、処理の効率化が図れる。
次に、管理ノード100と一部の計算ノードとが同時にダウンした場合の処理について説明する。
図14は、管理ノードとジョブマスタノードとが同時にダウンした状態を示す図である。このように、管理ノード100とジョブマスタノードとして機能する計算ノード200とが同時にダウンすると、並列ジョブ31の一部の処理が実行できなくなり、並列ジョブ31を継続して実行することはできない。
図15は、管理ノードとジョブマスタノードとの再起動後の状態を示す図である。管理ノード100とジョブマスタとして機能する計算ノード200との障害を修復し、再起動した直後は、管理ノード100のジョブDB130と計算ノード200の計算ノード内ジョブDB220とは、空の状態である。
管理ノード100では、ストレージデバイス110と、他の計算ノード200,300,400とから情報収集を行う。すると、ストレージデバイス110からジョブ投入情報111aとジョブ配置情報111bとを取得し、ジョブ情報130a内にジョブ投入情報131とジョブ配置情報132とを再構築できる。しかし、ジョブマスタノードとして機能する計算ノード200の計算ノード内ジョブDB220内のデータが失われているため、並列ジョブ31に関する実行資源情報は取得できない。そこで、管理ノード100は、実行中の並列ジョブ31の刈り取り(並列ジョブを強制的に停止させること)を行う。
図16は、刈り取り依頼の状況を示す図である。管理ノード100では、ジョブ配置情報132と、取得した実行資源情報とを比較することにより、投入されている並列ジョブ31の実行継続が不可能であることを認識する。そこで、ジョブスレーブノードとして機能している計算ノード300,400に対して並列ジョブ31の刈り取り依頼を送信する。計算ノード300,400では、刈り取り依頼に応じて、並列ジョブ31の刈り取りを行う。
図17は、刈り取り後の状態を示す図である。並列ジョブ31の刈り取りが行われたことにより、計算ノード300,400で実行されていた並列ジョブ31のプロセスが停止する。また、計算ノード300,400の計算ノード内ジョブDB320,420の内容も削除される。その後、管理ノード100からジョブ再実行依頼が出される。
図18は、ジョブ再実行依頼の状況を示す図である。管理ノード100では、ジョブ投入情報131とジョブ配置情報132とに基づいて、投入すべきジョブの内容と、割り当て先である計算ノード200,300,400とを認識する。そして、管理ノード100は、ジョブDB130内のジョブ情報130aを再構築し、計算ノード200,300,400に対して、ジョブ再実行依頼が送信される。このジョブ再実行依頼には、ノード別実行資源情報が含まれる。ジョブマスタノードとして機能する計算ノード200には、すべての実効資源情報が送信される。ジョブスレーブノードとして機能する計算ノード300,400には、それぞれ計算ノード300,400自身のノード別実効資源情報321,421が送信される。
各計算ノード200,300,400では、受け取った実効資源情報に基づいてそれぞれのジョブDB220,320,420を再構築し、並列ジョブ31の実行を開始する。
以上のようにして、管理ノード100とジョブマスタノードとして機能する計算ノード200とが同時にダウンしても、クラスタシステム内の処理でジョブの再実行が可能である。すなわち、ジョブ投入装置30から依頼されたジョブを紛失せずに再度実行可能である。ただし、並列ジョブ31の処理は、最初からやり直すこととなる。
図19は、管理ノードとジョブスレーブノードとが同時にダウンした状態を示す図である。このように、管理ノード100とジョブスレーブノードとして機能する計算ノード00とが同時にダウンすると、並列ジョブ31の一部の処理が実行できなくなり、並列ジョブ31を継続して実行することはできない。
図20は、管理ノードとジョブスレーブノードとの再起動後の状態を示す図である。管理ノード100とジョブスレーブノードとして機能する計算ノード00との障害を修復し、再起動した直後は、管理ノード100のジョブDB130と計算ノード00の計算ノード内ジョブDB20とは、空の状態である。
管理ノード100では、ストレージデバイス110と、他の計算ノード200,300,400とから情報収集を行う。すると、ストレージデバイス110からジョブ投入情報111aとジョブ配置情報111bとを取得できると共に、ジョブマスタノードとして機能する計算ノード200から実効資源情報を取得できる。その結果、ジョブDB130内のジョブ情報130aが再構築される。しかし、ジョブスレーブノードとして機能する計算ノード400が再起動され、それまでの処理内容が失われているため、並列ジョブ31を実行することはできない。そこで、管理ノード100は、実行中の並列ジョブ31の刈り取り(並列ジョブを強制的に停止させること)を行う。
図21は、刈り取り依頼の状況を示す図である。管理ノード100では、ジョブ配置情報132で示されたジョブ割り当て先の各計算ノード200,300,400の状態を確認する。このとき、再起動された直後の計算ノード400は、非アクティブの状態を示す。これにより、管理ノード100は、既に実行を依頼している並列ジョブ31の続行が不可能であることを認識する。そこで、管理ノード100は、計算ノード200,300に対して並列ジョブ31の刈り取り依頼を送信する。計算ノード200,300では、刈り取り依頼に応じて、並列ジョブ31の刈り取りを行う。
図22は、刈り取り後の状態を示す図である。並列ジョブ31の刈り取りが行われたことにより、計算ノード200,300で実行されていた並列ジョブ31のプロセスが停止する。また、計算ノード200,300の計算ノード内ジョブDB220,320の内容も削除される。その後、管理ノード100からジョブ再実行依頼が出される。再実行依頼状況は、図18に示した通りである。
このように、管理ノード100とジョブスレーブノードとして機能する計算ノード400とが同時にダウンした場合にも、クラスタシステム内の処理によってジョブの再実行が可能である。
図23は、すべてのノードが同時にダウンした状況を示す図である。このように、すべてのノードが一度にダウンすると、並列ジョブ31が失われると共に、実効資源情報も消失する。
図24は、管理ノードとジョブマスタノードとの再起動後の状態を示す図である。管理ノード100とジョブスレーブノードとして機能する計算ノード300との障害を修復し、再起動した直後は、管理ノード100のジョブDB130と計算ノード200,300,400の計算ノード内ジョブDB220,320,420とは、空の状態である。
管理ノード100では、ストレージデバイス110と、他の計算ノード200,300,400とから情報収集を行う。すると、ストレージデバイス110からジョブ投入情報111aとジョブ配置情報111bとを取得し、ジョブ情報130a内にジョブ投入情報131とジョブ配置情報132とを再構築できる。しかし、ジョブマスタノードとして機能する計算ノード200の計算ノード内ジョブDB220内のデータが失われているため、並列ジョブ31に関する実行資源情報は取得できない。
そこで、管理ノード100では、ジョブ配置情報132で示されたジョブ割り当て先の各計算ノード200,300,400の状態を確認する。このとき、再起動された直後の計算ノード200,300,400は、非アクティブの状態を示す。これにより、管理ノード100は、既に実行を依頼している並列ジョブ31が既に存在しないことを認識する。
並列ジョブ31が存在しないため刈り取りの必要はない。そこで、管理ノード100からジョブ再実行依頼が出される。再実行依頼状況は、図18に示した通りである。
図25は、管理ノードと計算ノードとが同時にダウンした場合の復旧処理手順を示すシーケンス図である。以下、図25に示す処理をステップ番号に沿って説明する。この例は、2台の計算ノード200,300で並列ジョブを実行中に、管理ノード100と計算ノード200とがダウンしたときの復旧処理を示している。
[ステップS51]管理ノード100がダウンした後も、計算ノード300の並列ジョブ実行プロセス312は処理を継続する。
[ステップS52]計算ノード300の並列ジョブ実行プロセス312において管理ノード100への要求が発生すると、並列ジョブ実行プロセス312はエラー処理とはせずにその要求を待ち合わせ状態とする。
[ステップS53]管理ノード100の障害の原因が取り除かれると、管理ノード100が起動される。
[ステップS54]計算ノード200の障害の原因が取り除かれると、計算ノード200が起動される。
[ステップS55]起動された管理ノード100では、ジョブ実行指示部122が計算ノード200,300に対してノード組み込み依頼を送信する。ノード組み込み依頼は、クラスタを構成する計算ノードとして機能することを要求するメッセージである。
[ステップS56]計算ノード200のジョブ制御部211は、管理ノード100からのノード組み込み依頼を受信する。
[ステップS57]計算ノード300のジョブ制御部311は、管理ノード100からのノード組み込み依頼を受信する。
[ステップS58]計算ノード200のジョブ制御部211は、管理ノード100に対してノード情報を通知する。このノード情報には、計算ノード200のノードIDや、計算ノード200が有する資源情報(ハードウェア資源とソフトウェア資源)が含まれる。また、計算ノード200は再起動直後であり、クラスタシステムに参加していないため、ジョブ制御部211は、非アクティブであることを示す情報をノード情報に含める。
[ステップS59]計算ノード300のジョブ制御部311は、管理ノード100に対してノード情報を通知する。このノード情報には、計算ノード300のノードIDや、計算ノード300が有する資源情報(ハードウェア資源とソフトウェア資源)が含まれる。
[ステップS60]ジョブ実行指示部122は、ノード情報を受信する。
[ステップS61]ジョブ実行指示部122は、起動中の計算ノード情報を構築する。具体的には、ジョブ実行指示部122は、起動している計算ノードのリストを作成し、その計算ノードのノードIDに対応付けて資源情報を管理する。
[ステップS62]ジョブDB再構築部123は、実行資源情報収集依頼を計算ノード200,300に送信する。
[ステップS63]計算ノード200のジョブ制御部211は、実行資源情報収集依頼を受信する。
[ステップS64]計算ノード300のジョブ制御部311は、実行資源情報収集依頼を受信する。
[ステップS65]計算ノード200のジョブ制御部211は、実行資源情報を管理ノード100に通知する。具体的には、ジョブ制御部211は、計算ノード内ジョブDB220から実行資源情報を取得を試みる。しかし、計算ノード内ジョブDB220内は空があるため、ジョブ制御部211は内容が空情報を実行資源情報として管理ノード100に送信する。
[ステップS66]管理ノード100のジョブDB再構築部123は、ジョブマスタノードとして機能する計算ノード200から送られた実行資源情報(空の情報)を受信する。
[ステップS67]ジョブDB再構築部123は、ジョブDB130を再構築する。すなわち、ストレージデバイス110からジョブ投入情報131とジョブ配置情報132を取得して、ジョブ毎のジョブ情報130aを作成する。なお、計算ノード200からは空の実行資源情報しか取得できていないため、実効資源情報については再構築できない。
[ステップS68]ジョブDB再構築部123は、ジョブの継続か可能か否かを判断する。この例では、計算ノード200が非アクティブであることが判っており、且つ実効資源情報再構築が出来ていないため、ジョブの継続は不可能と判断される。
[ステップS69]ジョブの継続不可能と判断した場合、ジョブDB再構築部123は、計算ノード300に対してジョブIDを指定してジョブ刈り取り指示を行う。このとき、ジョブIDは、ジョブ投入情報131を参照して判断される。なお、計算ノード200は非アクティブであることが分かっている、計算ノード200に対するジョブ刈り取り指示は行われない。
[ステップS70]計算ノード300のジョブ制御部311は、ジョブ刈り取り指示に応じた並列ジョブ実行プロセス312を停止する。また、ジョブ制御部311は、計算ノード内ジョブDB320に格納されていたノード別実行資源情報を削除する。
[ステップS71]管理ノード100のジョブ実行指示部122は、ジョブ投入情報131と計算ノード200,300から取得したノード情報に基づいて実行資源情報133を作成する。そして、ジョブ実行指示部122は、ジョブ配置情報132を参照してジョブの割り当て先を認識し、計算ノード200,300に対してジョブ実行依頼を送信する。
[ステップS72]ジョブ実行依頼を受け取った計算ノード200では、ジョブ制御部211がジョブ実行依頼を受信する。そして、ジョブ制御部211は、ジョブ実行依頼と共に送られた実行資源情報を、計算ノード内ジョブDB220に格納する。
[ステップS73]ジョブ実行依頼を受け取った計算ノード300では、ジョブ制御部311がジョブ実行依頼を受信する。そして、ジョブ制御部311は、ジョブ実行依頼と共に送られたノード別実行資源情報を、計算ノード内ジョブDB320に格納する。
[ステップS74]計算ノード200のジョブ制御部211は、ジョブ実行依頼に応じた並列ジョブ実行プロセス212を起動し、ジョブを実行させる。
[ステップS75]計算ノード300のジョブ制御部311は、ジョブ実行依頼に応じた並列ジョブ実行プロセス312を起動し、ジョブを実行させる。以後、計算ノード200の並列ジョブ実行プロセス212と計算ノード300の並列ジョブ実行プロセス312とが連携して、処理を実行する。
以上のようにして、管理ノード100がダウンしても並列ジョブを継続して実行させることが可能となる。その結果、管理ノード100がダウンしたことによる処理の遅延を最小限に抑えることができる。
また、管理ノード100と計算ノードとが同時にダウンした場合であっても、並列ジョブを自動的に再実行させることができる。すなわち、計算ノードの障害により並列ジョブが中止されても、ジョブ投入装置30から改めてジョブ実行依頼を入力する必要がない。その結果、システムの管理者の負荷を軽減することができる。
[第2の実施の形態]
次に、第2の実施の形態について説明する。第2の実施の形態は、複数の管理ノードを有するクラスタシステムにおいて、効率的な障害復旧を可能としたものである。すなわち、第1の実施の形態では管理ノードが1台しかないため、管理ノードを再起動してからジョブDBの再構築を行っていた。そのため、管理ノードの障害を取り除き再起動するまでの時間、計算ノードからの要求の待ち合わせが発生していた。
そこで、第2の実施の形態では、運用系の管理ノードの他に待機系の管理ノードを用意する。そして、運用系の管理ノードがダウンした場合、迅速に待機系の管理ノードが運用系に切り替わりジョブDBを再構築する。その結果、計算ノードからの要求の待ち合わせの発生を最小限に抑えることができる。
図26は、第2の実施の形態に係るクラスタシステムのシステム構成図である。第2の実施の形態は、第1の実施の形態に管理ノード700を追加したものである。そこで、管理ノード700以外の要素には、第1の実施の形態と同じ符号を付し、説明を省略する。
管理ノード700は、ネットワーク21を介して他の管理ノード100や計算ノード300,400に接続されている。管理ノード700は、管理ノード100と同様の機能を備えている。ただし、管理ノード100が正常に運用されている間は、管理ノード700はジョブ管理に関する処理を行わない。そのため、管理ノード700内のジョブDB730は空の状態である。
障害が発生する前は管理ノード100が運用系としてジョブを管理している。そのため、計算ノード200,300に投入されている並列ジョブ33に関するジョブ情報130bがジョブDB130に格納されている。ジョブ情報130b内には、並列ジョブ33に対応するジョブ投入情報131aとジョブ配置情報132aが格納されている。さらに、ジョブ情報130bには、並列ジョブ33を実行している各計算ノード200,300のノード別実行資源情報133d,133eが格納されている。
また、ストレージデバイス110は、2台の管理ノード100,700それぞれに接続されている。そして、ジョブデータ記憶部110内には、並列ジョブ33に対応するジョブデータ113が格納されている。ジョブデータ113には、ジョブ投入情報113aとジョブ配置情報113bとが含まれる。
このようなシステムにおいて、管理ノード700は、運用系の管理ノード100が正常に動作していることを監視している。そして、運用系の管理ノード100がダウンすると、待機系の管理ノード700がジョブの管理機能を引き継ぐ。
図27は、運用系の管理ノードがダウンした状態を示す図である。運用系の管理ノード100がダウンすると、計算ノード200,300における並列ジョブ33の処理は続行されるが、管理ノード100への要求が発生すると、その要求の待ち合わせ状態となる。
待機系の管理ノード700は、運用系の管理ノード100が正常に動作していることを所定のタイミングで監視している。たとえば、管理ノード700は、定期的に運用系の管理ノード100に対して動作確認要求を送信する。管理ノード700は、管理ノード100から動作確認応答が返されれば、正常に動作していると判断する。そして、管理ノード700は、運用系の管理ノード100がダウンしたことを検出すると、ジョブの管理機能を引き継ぐ。
図28は、運用系の切り換え状況を示す図である。運用系の管理ノード100がダウンしたことを検出した管理ノード700は、ストレージデバイス110とジョブマスタノードである計算ノード200とから情報を収集する。具体的には、ストレージデバイス110からジョブ投入情報113aとジョブ配置情報113bとを収集し、計算ノード200から実効資源情報(ノード別事項資源情報221d,221eを含む)を収集する。そして、管理ノード700は、収集した情報に基づいてジョブDB730内にジョブ情報730aを構築する。ジョブ情報730aには、ジョブ投入情報731、ジョブ配置情報732、計算ノード200に対応するノード別実効資源情報733a、および計算ノード300に対応するノード別実行資源情報733bが含まれる。
ジョブDB730内にジョブ情報730aを構築した管理ノード700は、運用系としてジョブを管理する。すなわち、運用系となった管理ノード700では、図13および図25に示した再起動後に行われる管理ノード100の処理と同様の処理を実行する。これにより、計算ノード200,300は、管理ノード700が運用系になったことを認識し、管理ノード700に対して各種要求や処理結果を送信するようになる。具体的には、図13のステップS26に示すノード組み込み依頼によって、管理ノード700が運用系に昇格したことを計算ノード200,300が認識する。なお、管理ノード700が待機系から運用系に昇格するまでの間、計算ノード200,300は、並列ジョブ33の処理を続行することができる。
このように、管理ノードを二重化することで、運用系の管理ノード100がダウンした場合、管理ノード700によって迅速に運用を再開することができる。
なお、上記の例では、待機系の管理ノード700を個別に用意しているが、計算ノードの中の1台を待機系の管理ノードとして使用することもできる。その場合、運用系の管理ノードがダウンすると、管理ノードとしての機能を有する計算ノードが、管理ノードとしての処理を実行する。ダウンした管理ノードが再起動したら、その管理ノードを運用系とすることで、元の状態に戻すことができる。これにより、計算ノード内に管理ノードとしての機能を併存させる期間を最小限に抑えることができる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、管理ノードや計算ノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
(付記1) 複数の計算ノードにジョブの実行を指示すると共に、ストレージデバイスが接続されたジョブ管理装置において、
メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶するジョブDBと、
ジョブ実行依頼が入力されると、前記ジョブ実行依頼の内容、依頼されたジョブのジョブID、および前記ジョブ実行依頼の投入元の識別情報を含むジョブ投入情報を前記ストレージデバイスと前記ジョブDBとに格納するジョブ実行依頼受付手段と、
前記ジョブ実行依頼受付手段が受け付けた前記ジョブ実行依頼の割り当て先となる1台以上の前記計算ノードをジョブ被配置計算ノードに決定し、前記ジョブ被配置計算ノードに対して前記ジョブの実行に使用すべき資源を示す実行資源情報を付加したジョブ実行指示を送信し、前記ジョブIDに対応付けて、前記ジョブ被配置計算ノードの一覧を含むジョブ配置情報と前記ジョブ被配置計算ノードそれぞれの前記実行資源情報とを前記ジョブDBに格納し、前記ジョブIDに対応付けて前記ジョブ配置情報を前記ストレージデバイスに格納するジョブ実行指示手段と、
再起動処理によって前記ジョブDBの内容が失われた場合、前記ストレージデバイスから前記ジョブ投入情報と前記ジョブ配置情報とを収集し、前記ジョブ被配置計算ノードから前記実行資源情報を収集し、前記ジョブDB内に前記ジョブ情報を再構築するジョブDB再構築手段と、
を有することを特徴とするジョブ管理装置。
(付記2) 前記ジョブ実行指示手段は、前記ジョブ被配置計算ノードの中の1台をジョブマスタノード、前記ジョブマスタノード以外の前記計算ノードをジョブスレーブノードとし、前記ジョブマスタノードに対してすべての前記ジョブ被配置計算ノードの前記実行資源情報を付加したジョブ実行指示を送信し、前記ジョブスレーブノードに対して前記ジョブスレーブノード自身の実行資源情報を付加したジョブ実行指示を送信し、
前記ジョブDB再構築手段は、再起動処理によって前記ジョブDBの内容が失われた場合、前記ストレージデバイスから前記ジョブ投入情報と前記ジョブ配置情報とを収集し、前記ジョブマスタノードから前記ジョブ被配置計算ノードすべての実行資源情報を収集し、前記ジョブDB内に前記ジョブ情報を再構築することを特徴とする付記1記載のジョブ管理装置。
(付記3) 前記ジョブ実行指示手段は、再起動処理が行われた場合、複数の前記計算ノードに対してノード組み込み依頼を送信し、前記ノード組み込み依頼に応じて前記計算ノードから通知されるノード情報を取得し、前記ジョブ配置情報に含まれるすべての前記ジョブ被配置計算ノードから前記ノード情報を取得できたか否かにより、前記ジョブを続行できるかどうかを判断し、続行できる場合、ジョブ運用再開を前記ジョブ被配置計算ノードに対して送信し、続行できない場合、前記ジョブ被配置計算ノードに対してジョブの中止を指示すると共に、前記ジョブ被配置計算ノードに対して前記ジョブ被配置計算ノード自身の前記実行資源情報を付加した前記ジョブ実行指示を送信することを特徴とする付記1記載のジョブ管理装置。
(付記4) 投入されたジョブを実行するクラスタシステムにおいて、
ストレージデバイスと、
複数の計算ノードと、
メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶するジョブDBと、ジョブ実行依頼が入力されると、前記ジョブ実行依頼の内容、依頼されたジョブのジョブID、および前記ジョブ実行依頼の投入元の識別情報を含むジョブ投入情報を前記ストレージデバイスと前記ジョブDBとに格納するジョブ実行依頼受付手段と、前記ジョブ実行依頼受付手段が受け付けた前記ジョブ実行依頼の割り当て先となる1台以上の前記計算ノードをジョブ被配置計算ノードに決定し、前記ジョブ被配置計算ノードに対して前記ジョブの実行に使用すべき資源を示す実行資源情報を付加したジョブ実行指示を送信し、前記ジョブIDに対応付けて、前記ジョブ被配置計算ノードの一覧を含むジョブ配置情報と前記ジョブ被配置計算ノードそれぞれの前記実行資源情報とを前記ジョブDBに格納し、前記ジョブIDに対応付けて前記ジョブ配置情報を前記ストレージデバイスに格納するジョブ実行指示手段と、再起動処理によって前記ジョブDBの内容が失われた場合、前記ストレージデバイスから前記ジョブ投入情報と前記ジョブ配置情報とを収集し、前記ジョブ被配置計算ノードから前記実行資源情報を収集し、前記ジョブDB内に前記ジョブ情報を再構築するジョブDB再構築手段と、を具備する管理ノードと、
を有することを特徴とするクラスタシステム。
(付記5) 前記管理ノードの前記ジョブ実行指示手段は、前記ジョブ被配置計算ノードの中の1台をジョブマスタノード、前記ジョブマスタノード以外の前記計算ノードをジョブスレーブノードとし、前記ジョブマスタノードに対してすべての前記ジョブ被配置計算ノードの前記実行資源情報を付加したジョブ実行指示を送信し、前記ジョブスレーブノードに対して前記ジョブスレーブノード自身の実行資源情報を付加したジョブ実行指示を送信し、
前記管理ノードの前記ジョブDB管理手段は、再起動処理によって前記ジョブDBの内容が失われた場合、前記ストレージデバイスから前記ジョブ投入情報と前記ジョブ配置情報とを収集し、前記ジョブマスタノードから前記ジョブ被配置計算ノードすべての実行資源情報を収集し、前記ジョブDB内に前記ジョブ情報を再構築することを特徴とする付記4記載のクラスタシステム。
(付記6) 前記管理ノードのジョブDB管理手段は、前記ジョブマスタノードに送信する前記ジョブ実行指示に対して、ジョブマスタとして機能することを示す情報を付加し、前記ジョブ被配置計算ノードから前記実行資源情報を収集する場合、実行資源情報収集依頼を前記ジョブ被配置計算ノードそれぞれに送信し、
前記計算ノードは、ジョブマスタとして指定される場合のみ、実行資源情報収集依頼に応答して前記計算ノードに対して前記実行資源情報を送信することを特徴とする付記5記載のクラスタシステム。
(付記7) 投入されたジョブを実行するクラスタシステムにおいて、
ストレージデバイスと、
複数の計算ノードと、
メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶する第1のジョブDBと、ジョブ実行依頼が入力されると、前記ジョブ実行依頼の内容、依頼されたジョブのジョブID、および前記ジョブ実行依頼の投入元の識別情報を含むジョブ投入情報を前記ストレージデバイスと前記第1のジョブDBとに格納するジョブ実行依頼受付手段と、前記ジョブ実行依頼受付手段が受け付けた前記ジョブ実行依頼の割り当て先となる1台以上の前記計算ノードをジョブ被配置計算ノードに決定し、前記ジョブ被配置計算ノードに対して前記ジョブの実行に使用すべき資源を示す実行資源情報を付加したジョブ実行指示を送信し、前記ジョブIDに対応付けて、前記ジョブ被配置計算ノードの一覧を含むジョブ配置情報と前記ジョブ被配置計算ノードそれぞれの前記実行資源情報とを前記第1のジョブDBに格納し、前記ジョブIDに対応付けて前記ジョブ配置情報を前記ストレージデバイスに格納する第1のジョブ実行指示手段と、を具備する第1の管理ノードと、
メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶する第2のジョブDBと、前記第1の管理ノードの機能が停止したことを検出した場合、前記ストレージデバイスから前記ジョブ投入情報と前記ジョブ配置情報とを収集し、前記ジョブ被配置計算ノードから前記実行資源情報を収集し、前記第2のジョブDB内に前記ジョブ情報を構築するジョブDB再構築手段と、前記第1の管理ノードの機能が停止したことを検出した場合、複数の前記計算ノードに対してノード組み込み依頼を送信する第2のジョブ実行指示手段と、を具備する第2の管理ノードと、
を有することを特徴とするクラスタシステム。
(付記8) 前記第2の管理ノードの前記第2のジョブ実行指示手段は、前記ノード組み込み依頼に応じて前記計算ノードから通知されるノード情報を取得し、前記ジョブ配置情報に含まれるすべての前記ジョブ被配置計算ノードから前記ノード情報を取得できたか否かにより、前記ジョブを続行できるかどうかを判断し、続行できない場合、前記ジョブ被配置計算ノードに対してジョブの中止を指示し、前記ジョブ被配置計算ノードに対して前記ジョブ被配置計算ノード自身の前記実行資源情報を付加した前記ジョブ実行指示を送信することを特徴とする付記7記載のクラスタシステム。
(付記9) 複数の計算ノードにジョブの実行を指示すると共に、ストレージデバイスが接続されたジョブ管理プログラムにおいて、
コンピュータを、
メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶するジョブDB、
ジョブ実行依頼が入力されると、前記ジョブ実行依頼の内容、依頼されたジョブのジョブID、および前記ジョブ実行依頼の投入元の識別情報を含むジョブ投入情報を前記ストレージデバイスと前記ジョブDBとに格納するジョブ実行依頼受付手段、
前記ジョブ実行依頼受付手段が受け付けた前記ジョブ実行依頼の割り当て先となる1台以上の前記計算ノードをジョブ被配置計算ノードに決定し、前記ジョブ被配置計算ノードに対して前記ジョブの実行に使用すべき資源を示す実行資源情報を付加したジョブ実行指示を送信し、前記ジョブIDに対応付けて、前記ジョブ被配置計算ノードの一覧を含むジョブ配置情報と前記ジョブ被配置計算ノードそれぞれの前記実行資源情報とを前記ジョブDBに格納し、前記ジョブIDに対応付けて前記ジョブ配置情報を前記ストレージデバイスに格納するジョブ実行指示手段、
再起動処理によって前記ジョブDBの内容が失われた場合、前記ストレージデバイスから前記ジョブ投入情報と前記ジョブ配置情報とを収集し、前記ジョブ被配置計算ノードから前記実行資源情報を収集し、前記ジョブDB内に前記ジョブ情報を再構築するジョブDB再構築手段、
として機能させることを特徴とするジョブ管理プログラム。
発明の概要を示す図である。 本実施の形態のクラスタシステム構成例を示す図である。 本実施の形態に用いる管理ノードのハードウェア構成例を示す図である。 クラスタシステムの機能を示すブロック図である。 ジョブDBのデータ構造例を示す図である。 ストレージデバイスのデータ構造例を示す図である。 ジョブマスタノードの計算ノード内ジョブDBのデータ構造例を示す図である。 ジョブスレーブノードの計算ノード内ジョブDBのデータ構造例を示す図である。 ジョブの実行例を示す図である。 管理ノードダウン時の状態を示す図である。 管理ノード再起動後の状態を示す図である。 並列ジョブを実行するまでの処理手順を示すシーケンス図である。 管理ノードの復旧処理手順を示すシーケンス図である。 管理ノードとジョブマスタノードとが同時にダウンした状態を示す図である。 管理ノードとジョブマスタノードとの再起動後の状態を示す図である。 刈り取り依頼の状況を示す図である。 刈り取り後の状態を示す図である。 ジョブ再実行依頼の状況を示す図である。 管理ノードとジョブスレーブノードとが同時にダウンした状態を示す図である。 管理ノードとジョブマスタノードとの再起動後の状態を示す図である。 刈り取り依頼の状況を示す図である。 刈り取り後の状態を示す図である。 すべてのノードが同時にダウンした状況を示す図である。 管理ノードとジョブマスタノードとの再起動後の状態を示す図である。 管理ノードと計算ノードとが同時にダウンした場合の復旧処理手順を示すシーケンス図である。 第2の実施の形態に係るクラスタシステムのシステム構成図である。 運用系の管理ノードがダウンした状態を示す図である。 運用系の切り換え状況を示す図である。
符号の説明
1 管理ノード
1a,3a,4a ジョブDB
1aa,2a ジョブ投入情報
1ab,2b ジョブ配置情報
1ac,1ad,3aa,3ab,4aa 実行資源情報
1b ジョブ実行依頼受付手段
1c ジョブ実行指示手段
1d ジョブDB再構築手段
2 ストレージデバイス
3,4 計算ノード
5 ジョブ投入装置
6 並列ジョブ

Claims (6)

  1. 複数の計算ノードにジョブの実行を指示すると共に、ストレージデバイスが接続されたジョブ管理装置において、
    メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶するジョブDBと、
    ジョブ実行依頼が入力されると、前記ジョブ実行依頼の内容、依頼されたジョブのジョブID、および前記ジョブ実行依頼の投入元の識別情報を含むジョブ投入情報を前記ストレージデバイスと前記ジョブDBとに格納するジョブ実行依頼受付手段と、
    前記ジョブ実行依頼受付手段が受け付けた前記ジョブ実行依頼の割り当て先となる1台以上の前記計算ノードをジョブ被配置計算ノードに決定し、前記ジョブ被配置計算ノードに対して前記ジョブの実行に使用すべき資源を示す実行資源情報を付加したジョブ実行指示を送信し、前記ジョブIDに対応付けて、前記ジョブ被配置計算ノードの一覧を含むジョブ配置情報と前記ジョブ被配置計算ノードそれぞれの前記実行資源情報とを前記ジョブDBに格納し、前記ジョブIDに対応付けて前記ジョブ配置情報を前記ストレージデバイスに格納するジョブ実行指示手段と、
    再起動処理によって前記ジョブDBの内容が失われた場合、前記ストレージデバイスから前記ジョブ投入情報と前記ジョブ配置情報とを収集し、前記ジョブ被配置計算ノードから前記実行資源情報を収集し、前記ジョブDB内に前記ジョブ情報を再構築するジョブDB再構築手段と、
    を有することを特徴とするジョブ管理装置。
  2. 前記ジョブ実行指示手段は、前記ジョブ被配置計算ノードの中の1台をジョブマスタノード、前記ジョブマスタノード以外の前記計算ノードをジョブスレーブノードとし、前記ジョブマスタノードに対してすべての前記ジョブ被配置計算ノードの前記実行資源情報を付加したジョブ実行指示を送信し、前記ジョブスレーブノードに対して前記ジョブスレーブノード自身の実行資源情報を付加したジョブ実行指示を送信し、
    前記ジョブDB再構築手段は、再起動処理によって前記ジョブDBの内容が失われた場合、前記ストレージデバイスから前記ジョブ投入情報と前記ジョブ配置情報とを収集し、前記ジョブマスタノードから前記ジョブ被配置計算ノードすべての実行資源情報を収集し、前記ジョブDB内に前記ジョブ情報を再構築することを特徴とする請求項1記載のジョブ管理装置。
  3. 前記ジョブ実行指示手段は、再起動処理が行われた場合、複数の前記計算ノードに対してノード組み込み依頼を送信し、前記ノード組み込み依頼に応じて前記計算ノードから通知されるノード情報を取得し、前記ジョブ配置情報に含まれるすべての前記ジョブ被配置計算ノードから前記ノード情報を取得できたか否かにより、前記ジョブを続行できるかどうかを判断し、続行できる場合、ジョブ運用再開を前記ジョブ被配置計算ノードに対して送信し、続行できない場合、前記ジョブ被配置計算ノードに対してジョブの中止を指示すると共に、前記ジョブ被配置計算ノードに対して前記ジョブ被配置計算ノード自身の前記実行資源情報を付加した前記ジョブ実行指示を送信することを特徴とする請求項1記載のジョブ管理装置。
  4. 投入されたジョブを実行するクラスタシステムにおいて、
    ストレージデバイスと、
    複数の計算ノードと、
    メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶するジョブDBと、ジョブ実行依頼が入力されると、前記ジョブ実行依頼の内容、依頼されたジョブのジョブID、および前記ジョブ実行依頼の投入元の識別情報を含むジョブ投入情報を前記ストレージデバイスと前記ジョブDBとに格納するジョブ実行依頼受付手段と、前記ジョブ実行依頼受付手段が受け付けた前記ジョブ実行依頼の割り当て先となる1台以上の前記計算ノードをジョブ被配置計算ノードに決定し、前記ジョブ被配置計算ノードに対して前記ジョブの実行に使用すべき資源を示す実行資源情報を付加したジョブ実行指示を送信し、前記ジョブIDに対応付けて、前記ジョブ被配置計算ノードの一覧を含むジョブ配置情報と前記ジョブ被配置計算ノードそれぞれの前記実行資源情報とを前記ジョブDBに格納し、前記ジョブIDに対応付けて前記ジョブ配置情報を前記ストレージデバイスに格納するジョブ実行指示手段と、再起動処理によって前記ジョブDBの内容が失われた場合、前記ストレージデバイスから前記ジョブ投入情報と前記ジョブ配置情報とを収集し、前記ジョブ被配置計算ノードから前記実行資源情報を収集し、前記ジョブDB内に前記ジョブ情報を再構築するジョブDB再構築手段と、を具備する管理ノードと、
    を有することを特徴とするクラスタシステム。
  5. 投入されたジョブを実行するクラスタシステムにおいて、
    ストレージデバイスと、
    複数の計算ノードと、
    メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶する第1のジョブDBと、ジョブ実行依頼が入力されると、前記ジョブ実行依頼の内容、依頼されたジョブのジョブID、および前記ジョブ実行依頼の投入元の識別情報を含むジョブ投入情報を前記ストレージデバイスと前記第1のジョブDBとに格納するジョブ実行依頼受付手段と、前記ジョブ実行依頼受付手段が受け付けた前記ジョブ実行依頼の割り当て先となる1台以上の前記計算ノードをジョブ被配置計算ノードに決定し、前記ジョブ被配置計算ノードに対して前記ジョブの実行に使用すべき資源を示す実行資源情報を付加したジョブ実行指示を送信し、前記ジョブIDに対応付けて、前記ジョブ被配置計算ノードの一覧を含むジョブ配置情報と前記ジョブ被配置計算ノードそれぞれの前記実行資源情報とを前記第1のジョブDBに格納し、前記ジョブIDに対応付けて前記ジョブ配置情報を前記ストレージデバイスに格納する第1のジョブ実行指示手段と、を具備する第1の管理ノードと、
    メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶する第2のジョブDBと、前記第1の管理ノードの機能が停止したことを検出した場合、前記ストレージデバイスから前記ジョブ投入情報と前記ジョブ配置情報とを収集し、前記ジョブ被配置計算ノードから前記実行資源情報を収集し、前記第2のジョブDB内に前記ジョブ情報を構築するジョブDB再構築手段と、前記第1の管理ノードの機能が停止したことを検出した場合、複数の前記計算ノードに対してノード組み込み依頼を送信する第2のジョブ実行指示手段と、を具備する第2の管理ノードと、
    を有することを特徴とするクラスタシステム。
  6. 複数の計算ノードにジョブの実行を指示すると共に、ストレージデバイスが接続され
    ンピュータを、
    メインメモリ内に設けられ、ジョブ毎のジョブ情報を記憶するジョブDB、
    ジョブ実行依頼が入力されると、前記ジョブ実行依頼の内容、依頼されたジョブのジョブID、および前記ジョブ実行依頼の投入元の識別情報を含むジョブ投入情報を前記ストレージデバイスと前記ジョブDBとに格納するジョブ実行依頼受付手段、
    前記ジョブ実行依頼受付手段が受け付けた前記ジョブ実行依頼の割り当て先となる1台以上の前記計算ノードをジョブ被配置計算ノードに決定し、前記ジョブ被配置計算ノードに対して前記ジョブの実行に使用すべき資源を示す実行資源情報を付加したジョブ実行指示を送信し、前記ジョブIDに対応付けて、前記ジョブ被配置計算ノードの一覧を含むジョブ配置情報と前記ジョブ被配置計算ノードそれぞれの前記実行資源情報とを前記ジョブDBに格納し、前記ジョブIDに対応付けて前記ジョブ配置情報を前記ストレージデバイスに格納するジョブ実行指示手段、
    再起動処理によって前記ジョブDBの内容が失われた場合、前記ストレージデバイスから前記ジョブ投入情報と前記ジョブ配置情報とを収集し、前記ジョブ被配置計算ノードから前記実行資源情報を収集し、前記ジョブDB内に前記ジョブ情報を再構築するジョブDB再構築手段、
    として機能させることを特徴とするジョブ管理プログラム。
JP2007046434A 2007-02-27 2007-02-27 ジョブ管理装置、クラスタシステム、およびジョブ管理プログラム Expired - Fee Related JP5018133B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2007046434A JP5018133B2 (ja) 2007-02-27 2007-02-27 ジョブ管理装置、クラスタシステム、およびジョブ管理プログラム
US12/027,499 US8074222B2 (en) 2007-02-27 2008-02-07 Job management device, cluster system, and computer-readable medium storing job management program
EP08101842A EP2012234A3 (en) 2007-02-27 2008-02-21 Job management device, cluster system, and job management program
KR1020080017363A KR100987746B1 (ko) 2007-02-27 2008-02-26 작업 관리 장치, 클러스터 시스템 및 작업 관리 프로그램을기록한 컴퓨터 판독 가능한 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007046434A JP5018133B2 (ja) 2007-02-27 2007-02-27 ジョブ管理装置、クラスタシステム、およびジョブ管理プログラム

Publications (2)

Publication Number Publication Date
JP2008210164A JP2008210164A (ja) 2008-09-11
JP5018133B2 true JP5018133B2 (ja) 2012-09-05

Family

ID=39717413

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007046434A Expired - Fee Related JP5018133B2 (ja) 2007-02-27 2007-02-27 ジョブ管理装置、クラスタシステム、およびジョブ管理プログラム

Country Status (4)

Country Link
US (1) US8074222B2 (ja)
EP (1) EP2012234A3 (ja)
JP (1) JP5018133B2 (ja)
KR (1) KR100987746B1 (ja)

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010071884A2 (en) * 2008-12-19 2010-06-24 Watchguard Technologies, Inc. Self-monitoring cluster of network security devices
US8832173B2 (en) * 2009-01-20 2014-09-09 Sap Ag System and method of multithreaded processing across multiple servers
JP5276456B2 (ja) * 2009-01-23 2013-08-28 アルパイン株式会社 データ処理システム
US20100333094A1 (en) * 2009-06-24 2010-12-30 Mark Restall Job-processing nodes synchronizing job databases
US8205113B2 (en) * 2009-07-14 2012-06-19 Ab Initio Technology Llc Fault tolerant batch processing
JP2011123817A (ja) * 2009-12-14 2011-06-23 Fujitsu Ltd ジョブ振分装置、ジョブ振分プログラム及びジョブ振分方法
WO2012101785A1 (ja) * 2011-01-26 2012-08-02 富士通株式会社 管理装置、管理方法および管理プログラム
US8863133B2 (en) * 2011-06-02 2014-10-14 Microsoft Corporation License management in a cluster environment
US8621473B2 (en) 2011-08-01 2013-12-31 Honeywell International Inc. Constrained rate monotonic analysis and scheduling
US8875146B2 (en) * 2011-08-01 2014-10-28 Honeywell International Inc. Systems and methods for bounding processing times on multiple processing units
FR2980007B1 (fr) * 2011-09-13 2013-09-27 Bull Sas Procede, dispositif et programme d'ordinateur pour allouer dynamiquement des ressources d'un cluster a l'execution de processus d'une application
KR101827289B1 (ko) * 2011-11-08 2018-03-23 한국전자통신연구원 실시간 운영체제에서 태스크 스케줄링 방법
US9207977B2 (en) 2012-02-06 2015-12-08 Honeywell International Inc. Systems and methods for task grouping on multi-processors
JP2013243802A (ja) * 2012-05-18 2013-12-05 Mitsubishi Electric Corp 電力系統監視制御システム
US9612868B2 (en) 2012-10-31 2017-04-04 Honeywell International Inc. Systems and methods generating inter-group and intra-group execution schedules for instruction entity allocation and scheduling on multi-processors
KR101446723B1 (ko) * 2012-11-30 2014-10-06 한국과학기술정보연구원 작업 실행 관리 방법, 작업 실행 관리 장치, 및 작업 실행을 관리하는 프로그램을 저장하는 저장매체
US8943353B2 (en) * 2013-01-31 2015-01-27 Hewlett-Packard Development Company, L.P. Assigning nodes to jobs based on reliability factors
JP6192423B2 (ja) 2013-08-12 2017-09-06 キヤノン株式会社 情報処理装置及び情報処理方法、情報処理システム、プログラム
US9613094B2 (en) * 2013-10-29 2017-04-04 Sap Se Constant mapping optimization in a database
US9413849B2 (en) * 2013-12-05 2016-08-09 International Business Machines Corporation Distributing an executable job load file to compute nodes in a parallel computer
US9847918B2 (en) * 2014-08-12 2017-12-19 Microsoft Technology Licensing, Llc Distributed workload reassignment following communication failure
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
CN107111532B (zh) * 2014-10-20 2021-03-05 起元科技有限公司 计算不确定性情况下的恢复和容错
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
JP6067039B2 (ja) * 2015-01-28 2017-01-25 キヤノン株式会社 印刷に要する時間の予測値を求める画像処理装置、画像処理方法およびそのプログラム
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US20160275123A1 (en) * 2015-03-18 2016-09-22 Hitachi, Ltd. Pipeline execution of multiple map-reduce jobs
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
EP3255543B1 (en) * 2015-04-14 2019-06-05 Huawei Technologies Co., Ltd. Process management method, apparatus and device
US10185647B2 (en) * 2015-09-25 2019-01-22 Microsoft Technology Licensing, Llc Debugging remote vertex code on test machine
US10437585B2 (en) * 2015-10-23 2019-10-08 Oracle International Corporation Managing highly scalable continuous delivery pipelines
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) * 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
EP3479229A1 (en) * 2016-06-30 2019-05-08 Amazon Technologies Inc. On-demand code execution using cross-account aliases
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
JP6546235B2 (ja) * 2017-09-15 2019-07-17 株式会社日立製作所 ストレージシステム
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11182209B2 (en) * 2018-09-21 2021-11-23 Google Llc Distributed job scheduling system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
KR102257012B1 (ko) * 2019-01-14 2021-05-27 (주) 익투스지노믹스 다양한 클라우드에 적용 가능한 대용량 데이터 처리용 분산 처리 시스템의 설치방법
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11948010B2 (en) * 2020-10-12 2024-04-02 International Business Machines Corporation Tag-driven scheduling of computing resources for function execution
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313584A (en) * 1991-11-25 1994-05-17 Unisys Corporation Multiple I/O processor system
JPH0696041A (ja) * 1992-09-11 1994-04-08 Hitachi Ltd 高信頼型分散処理システム
US5566297A (en) * 1994-06-16 1996-10-15 International Business Machines Corporation Non-disruptive recovery from file server failure in a highly available file system for clustered computing environments
JP3451415B2 (ja) 1996-03-29 2003-09-29 富士通株式会社 ネットワーク管理システムのデータベース同期方法
US6065018A (en) * 1998-03-04 2000-05-16 International Business Machines Corporation Synchronizing recovery log having time stamp to a remote site for disaster recovery of a primary database having related hierarchial and relational databases
JP2003076660A (ja) * 2001-09-04 2003-03-14 Fujitsu Ltd サーバ及びクライアント・サーバシステム
JP2003345747A (ja) * 2002-05-27 2003-12-05 Nippon Telegr & Teleph Corp <Ntt> 処理実行管理方法、処理実行管理装置、プログラム、及びプログラムを記録した記録媒体
JP4166056B2 (ja) * 2002-08-16 2008-10-15 富士通株式会社 データベース操作履歴管理装置、データベース操作履歴管理方法、およびデータベース操作履歴管理プログラム
KR100519453B1 (ko) * 2002-12-20 2005-10-06 유징테크주식회사 객체지향 응용프로그램에서 사용되는 데이터베이스 작업제어장치 및 방법
JP4345334B2 (ja) * 2003-03-28 2009-10-14 日本電気株式会社 耐障害計算機システム、プログラム並列実行方法およびプログラム
JP4294353B2 (ja) 2003-03-28 2009-07-08 株式会社日立製作所 ジョブ管理機能を有するストレージ系障害管理方法及び装置
US7562254B2 (en) * 2003-07-01 2009-07-14 International Business Machines Corporation Checkpointing and restarting long running web services
JP2005031771A (ja) * 2003-07-08 2005-02-03 Hitachi Ltd ジョブスケジューリング管理方法及びシステム並びにプログラム
US20050022202A1 (en) * 2003-07-09 2005-01-27 Sun Microsystems, Inc. Request failover mechanism for a load balancing system
US7085962B1 (en) * 2003-09-08 2006-08-01 Veritas Operating Corporation Method and system for completing a backup job that was interrupted during a backup process
US7861246B2 (en) * 2004-06-17 2010-12-28 Platform Computing Corporation Job-centric scheduling in a grid environment
US20060089935A1 (en) * 2004-10-26 2006-04-27 Microsoft Corporation Failover and load balancing for server clusters
US7933947B2 (en) * 2004-12-28 2011-04-26 Sap Ag Connection manager that supports failover protection
US20060198386A1 (en) * 2005-03-01 2006-09-07 Tong Liu System and method for distributed information handling system cluster active-active master node
JP4533251B2 (ja) * 2005-06-09 2010-09-01 キヤノン株式会社 情報処理システムおよびジョブ割り当て方法
US8284423B2 (en) * 2006-04-07 2012-10-09 Ricoh Production Print Solutions LLC Customer-configurable print workflow system
US7840969B2 (en) * 2006-04-28 2010-11-23 Netapp, Inc. System and method for management of jobs in a cluster environment
US7669081B2 (en) * 2006-09-27 2010-02-23 Raytheon Company Systems and methods for scheduling, processing, and monitoring tasks
US7779298B2 (en) * 2007-06-11 2010-08-17 International Business Machines Corporation Distributed job manager recovery

Also Published As

Publication number Publication date
KR20080079618A (ko) 2008-09-01
JP2008210164A (ja) 2008-09-11
EP2012234A3 (en) 2009-09-30
US8074222B2 (en) 2011-12-06
EP2012234A2 (en) 2009-01-07
US20080209423A1 (en) 2008-08-28
KR100987746B1 (ko) 2010-10-18

Similar Documents

Publication Publication Date Title
JP5018133B2 (ja) ジョブ管理装置、クラスタシステム、およびジョブ管理プログラム
US7877560B2 (en) Storage system with automated resource allocation
JP4774085B2 (ja) ストレージシステム
JP3938475B2 (ja) バックアップ処理方法及びその実施システム並びにその処理プログラム
US20060212668A1 (en) Remote copy method and storage system
JP2008015888A (ja) 負荷分散制御システム及び負荷分散制御方法
JP2002073576A (ja) バッチジョブ制御システム
WO2014080492A1 (ja) 計算機システム、クラスタ管理方法、及び管理計算機
JP2010128885A (ja) ストレージシステムのアップデート処理プログラム、アップデート処理方法及びストレージシステム
JP5052150B2 (ja) ストレージシステム
JPH07230372A (ja) 印刷システム
JP5250955B2 (ja) データ処理システムのバックアップ制御装置及びシステム
JP4322240B2 (ja) 再起動方法、システム及びプログラム
JP4074442B2 (ja) データのバックアップのための方法、装置、システム、プログラム及び記憶媒体
JP3748708B2 (ja) クライアント/サーバシステム、クライアントコンピュータ及び記録媒体
US20050193230A1 (en) Metadata access during error handling routines
JP4869028B2 (ja) 映像蓄積配信システム及び映像蓄積配信方法
JPH08221372A (ja) 分散処理システムにおける空き資源管理装置
JP5067075B2 (ja) 疎結合システム、待機系排他制御装置、疎結合システムのリカバリ方法、プログラムおよび記憶媒体
JP4099115B2 (ja) ジョブ実行システム及び実行制御方法
JP2008084327A (ja) データのバックアップのための方法、装置、システム、プログラム及び記憶媒体
JP6128131B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP5297250B2 (ja) ストレージシステム、および情報格納方法
JP2010140106A (ja) ジョブ実行システム、該システムに用いられるジョブフロー引継ぎ方法及びジョブフロー引継ぎ制御プログラム
JP2669363B2 (ja) クラスタ結合型マルチプロセッサシステムのシステムコールに伴うプロセス切り換え制御方法およびその装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120413

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120515

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120528

R150 Certificate of patent or registration of utility model

Ref document number: 5018133

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees