JPWO2014192867A1 - 分散処理システム、分散処理装置、分散処理方法および分散処理プログラム - Google Patents

分散処理システム、分散処理装置、分散処理方法および分散処理プログラム Download PDF

Info

Publication number
JPWO2014192867A1
JPWO2014192867A1 JP2015519933A JP2015519933A JPWO2014192867A1 JP WO2014192867 A1 JPWO2014192867 A1 JP WO2014192867A1 JP 2015519933 A JP2015519933 A JP 2015519933A JP 2015519933 A JP2015519933 A JP 2015519933A JP WO2014192867 A1 JPWO2014192867 A1 JP WO2014192867A1
Authority
JP
Japan
Prior art keywords
distributed
metadata
module
execution
management unit
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.)
Granted
Application number
JP2015519933A
Other languages
English (en)
Other versions
JP6052406B2 (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Application granted granted Critical
Publication of JP6052406B2 publication Critical patent/JP6052406B2/ja
Publication of JPWO2014192867A1 publication Critical patent/JPWO2014192867A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/549Remote execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】転送するデータ容量を削減し、かつ分散処理を高速に開始することを可能とする分散処理システム等を提供する。【解決手段】複数台のコンピュータ2a、2b、…が相互に接続された分散処理システム1で、各コンピュータ2は、各モジュールを読み込んで初期化処理を行うモジュールローダ3と、初期化処理のコマンドを含むメタデータを予め備えられた記憶手段もしくは他のコンピュータから取得するメタデータ管理部4と、記憶手段もしくは他のコンピュータにあるファイルを読み書きするファイル管理部5と、分散バッチアプリを実行する実行コンテナ6とを備える。そして、ファイル管理部5が、初期化処理の後で当該モジュールの実行コードを含む実行領域が記憶手段に存在するか否かを調べ、存在しない場合は他のコンピュータから実行コードを読み込んでこれを実行領域として書き込む。【選択図】図1

Description

本発明は分散処理システム、分散処理装置、分散処理方法および分散処理プログラムに関し、特に通信容量を削減して高速に処理を実行可能な分散処理システム等に関する。
コンピュータが実現せねばならない処理はますます高度かつ大規模になっているが、ハードウェア単体としての性能(演算能力や記憶容量など)の向上は既に限界に達している。そこで、ネットワークを介して相互に接続された複数のコンピュータが連携し、分担して処理を行うという、分散処理(分散データベース、分散キャッシュ、分散共有メモリ、分散バッチなど)の技術が最近とみに発達している。
特に近年は、パーソナルコンピュータの分野においても、4GBクラスの容量を持つRAM(主記憶装置)、1TBクラスの容量を持つハードディスク(外部記憶装置)、1Gbpsクラスの通信速度を持つNIC(ネットワークカード)などを安価に調達し、それらを備えたコンピュータ装置を高速ネットワークを介して相互に接続することが容易にできるようになったので、それらのようなノード(サーバ装置)を複数台接続し、それら各ノードに分散処理ミドルウェアを導入して分散処理を行わせることが多くなっている。
ミドルウェアとは、一般的にはオペレーティングシステム(OS)とアプリケーションソフトとの中間に入って、OSの機能の拡張やアプリケーションソフトの汎用的な機能を担うソフトウェアのことをいう。その中でも分散処理ミドルウェアは、分散処理において必要となる機能(複数ノード間のデータ同期、アプリケーションの配布・配備、プロセスの起動・終了、エラー処理など)を提供するものである。特に近年は、多数のノードによって協調して処理を行ういわゆるクラウド・コンピューテングが発達しているので、分散処理ミドルウェアの重要性は特に高まっている。
分散処理ミドルウェアを利用した分散処理システムで実行可能な分散処理方式としては、マップリデュース(MapReduce)、BSP、MPIなどのような複数の方式があるが、その中でマスター・スレーブ型の分散処理方式も一般的である。
マスター・スレーブ型は処理モデルの一種であり、マスターと呼ばれる制御コンポーネントやノードが、スレーブと呼ばれる他のノードやデバイスやプロセスを制御するものである。ノード間、あるいはプロセス間でマスター・スレーブ関係が確立されると、制御は常にマスターからスレーブに対して行われる。
図20は、既存の分散処理システム900の構成について示す説明図である。この分散処理システム900は、複数台のコンピュータ装置がネットワーク930を介して相互に接続されることによって構成される。それらのコンピュータ装置のうちの1台がマスターノード910であり、他はスレーブノード920a、920b、…(総称してスレーブノード920という)である。
マスターノード910には、OS911(オペレーティングシステム)上に分散処理ミドルウェア912がインストールされている。同様にスレーブノード920にも、OS921上に分散処理ミドルウェア922がインストールされている。
マスターノード910は、スレーブノード920に対して分散アプリケーションを配布し、必要な処理を実行させる。ただし、スレーブノードで処理する部分はマスターノードと全く一緒ではなく、処理の一部やデータの一部であることが多い。それぞれのノードで違う処理や違うデータを処理することにより、複数の処理を分散して並列化することができるので、高速に処理を行うことが可能となる。
図21は、図20で示した分散処理システム900によって実行される分散アプリケーション950の構成について示す説明図である。分散アプリケーション950は、処理モジュール、共通モジュール、設定ファイル、バイナリデータ(画像ファイルなど)などがそれぞれ複数組み合わされて構成されている。
各モジュールは、実行形式ファイルや共通ライブラリファイルなどである。たとえばウィンドウズ(登録商標)の場合はEXEファイルやDLLファイル、Linux(登録商標)の場合はシェルスクリプト、実行ファイルやライブラリファイル、Java(登録商標)の場合はJarファイルやClassファイルなどである。
どの場合も、各モジュールは「メタデータ」および「実行領域」によって構成される。メタデータはモジュール名やシグネチャー(メソッド名と引数の組み)、フィールド、定数などのモジュールに関するデータである。実行領域には実際に動作するメソッドなどの実行コードである。
また、各モジュールには実行時における初期化の処理も含まれる。より具体的には、ウィンドウズのDLLの初期化はDllMain()、Linuxのライブラリの初期化は_init()、Javaの初期化は<clinit>、<init>などである。
分散アプリケーション950が起動する場合、各ノードでは最初に起動された処理モジュールのメタデータを読み込み、メタデータの解析を行なって実際に処理ができるように定数や実行領域をメモリに配置する。もしその中に他モジュールに対する依存関係が含まれていれば、そのモジュールを読み込んでその依存関係を解決し、モジュール間の呼び出しが可能な状態とする(これをリンクするという)ことを繰り返す。
通常、各モジュールには初期化処理のための部分があり、リンクした後にその初期化処理を行うことにより、当該アプリケーションが実行可能な状態となる。即ち、「必要なファイルを読み出す(Load)→各モジュールの依存関係を解決する(Link)→初期化処理を行う(Initialize)」ことを繰り返すことにより、分散アプリケーション950の実行が可能となる。
ただし、各モジュールをどのタイミングで読み込むかは各装置の実装に依存し、必要なモジュールを起動時に全て読み込む場合もあれば、実際の参照が行われるまで読み込まない場合もある。
これに関連する技術文献として、次の各々がある。特許文献1には、設定されたルールに基づいてオブジェクトデータを選択して、これを利用する処理を効率化するという分散処理システムが記載されている。特許文献2には、グラフィックユーザインタフェースを利用して分散処理を管理するという技術について記載されている。特許文献3には、ネットワーク上でのメタデータの配置の技術について記載されている。
特許文献4には、特定の処理に特化したサブプロセッサを備えた処理装置を利用した分散処理システムが記載されている。特許文献5には、ネットワーク上のウェブサービスの配備について記載されている。特許文献6には、分散処理装置で必要な情報が自装置になければ他装置から取得し、全装置間で情報を一致させるという技術が記載されている。
特許文献7には、多層ソフトウェアのメタデータの配置の技術について記載されている。非特許文献1には、代表的な分散処理ミドルウェアであるHadoopの概要について記載されている。
特開2012−063832号公報 特開2011−034137号公報 特開2008−171277号公報 特開2006−155187号公報 特表2004−533687号公報 特開2004−342042号公報 特表2003−505750号公報
脇本武士、「Hadoopを使って分散処理をやってみよう!」、平成22年9月29日、[平成25年5月14日検索]、(株)パソナテック、インターネット<URL:http://www.pasonatech.co.jp/techlab/rdtrend/rep7.jsp>
本明細書では、前述の非特許文献1に記載されたHadoopなど、Java環境で動作する分散処理システム900を想定しているので、各々の処理モジュールおよび共通モジュールはクラス(.class)ファイルとして記述されているものとする。必ずしも本発明はJava環境に限定されるものではない。
図21で示した分散アプリケーション950は、第1〜第3のステップの処理モジュール951〜953(step01.class〜step03.class)と、各ステップで使用される第1〜第3の共通モジュール954〜956(shared01.class〜shared03.class)、およびその他の設定ファイルやバイナリデータなどを含む。
かつ、第1および第3のステップはマスターノード910単体で実行されるが、第2のステップはマスターノード910と各スレーブノード920とが協調して分散処理を行うので、分散アプリケーション950には第2のステップのスレーブノード側での処理モジュール952a(step02_slave.class)も含まれている。以上の各ファイルは、「分散バッチアプリケーション1.jar」などのようなファイル名で、1ファイルにまとめられている。
図22は、図20で示した既存の分散処理システム900で、図21で示した分散アプリケーション950を実行する場合の動作について示す説明図である。ユーザから実行指令を受けたマスターノード910は、分散アプリケーション950のファイル(分散バッチアプリケーション1.jar)を各スレーブノード920に配布し、各ノードでは各々に分散処理ミドルウェア912(922)がプロセスを立ちあげ、この分散アプリケーション950のファイルを展開してクラスファイルを読み込み、そして実行する。
ただし図21で示したように、分散アプリケーション950の全てのステップが分散処理を行うものではない。従って、単純に分散アプリケーション950のファイル(分散バッチアプリケーション1.jar)を各ノードに配布すると、分散処理に使用されないファイルまで転送してしまうこととなる。これは明らかに無駄な転送である。特に画像、動画、音声など、ファイルサイズの大きいファイルが含まれている場合、これが使用されなければ大きな無駄となる。
また、実行時にファイルを転送すると、スレーブノード920の起動処理の遅延という問題も発生する。図21で示した例でいえば、第2のステップにおいて分散処理が行われるが、第1のステップが終了して第2のステップが開始される段階でマスターノード910が各スレーブノード920に分散アプリケーション950のファイルを配布すると、その配布処理、そして「分散バッチアプリケーション1.jar」ファイルを展開してクラスファイルを読み込むという段階の処理で遅延が発生する。
この遅延を発生させないために、マスターノード910が単体で第1のステップを実行している間に分散アプリケーション950のファイルを配布し、各スレーブノード920側で展開とクラスファイルの読み込みまで済ませておくという方法も考えられる。しかしこれだと別の問題が発生しうる。
分散処理では、スレーブノード920の台数が数千台や数万台、あるいはそれ以上の規模になることも多い。かつ、分散処理ミドルウェア912(922)は通常、実際に分散処理を行う段階になってから、各ノードのリソース(計算機資源)の状況を確認した上で、設定された台数のスレーブノードに処理を割り振るものである。即ち、どのスレーブノードが分散処理を行うかを、その段階になるまで知ることはできない。
従って、各スレーブノード920に対して無条件に分散アプリケーション950のファイルを事前配布していたら、実際には処理が割り振られないスレーブノード920に対してまで事前配布されることになりうる。これもまた無駄な転送である。即ち、スレーブノード920の起動処理の遅延をなくすために、分散アプリケーション950のファイルを事前配布するということは適切であるとはいえない。
さらに、各ノード(マスターノード910と各スレーブノード920)とが協調して行う分散処理は、多くの場合は、別々の対象データに対して同一の処理を行うものであるので、各ノードで起動時に行われる起動処理は共通した処理であることが多い。
それにもかかわらず、各スレーブノード920の分散処理ミドルウェア922は通常、動作ステップごとにプロセスを生成および削除する。従って、各ノードがそれぞれ、各動作ステップごとに毎回同一の起動処理を行っている。これもまた、遅延が発生する原因となる無駄な処理である。
以上の問題を解決して、実行時に各スレーブノードに転送するデータ容量を削減することと分散処理を高速に開始することとを両立しうる技術は、前述の特許文献1〜7や非特許文献1には記載されていない。
本発明の目的は、実行時に各スレーブノードに転送するデータ容量を削減し、かつ分散処理を高速に開始することを可能とする分散処理システム、分散処理装置、分散処理方法および分散処理プログラムを提供することにある。
上記目的を達成するため、本発明に係る分散処理システムは、複数台のコンピュータが相互に接続され、これらのコンピュータによって分散バッチアプリを協調して分散実行する分散処理システムであって、各コンピュータが、分散バッチアプリを構成する各モジュールを読み込んで初期化処理を行うモジュールローダと、各モジュールのうち初期化処理のコマンドを含むメタデータを予め備えられた記憶手段もしくは他のコンピュータから取得するメタデータ管理部と、記憶手段もしくは他のコンピュータにあるファイルを読み書きするファイル管理部と、分散バッチアプリを実行する実行コンテナとを備えると共に、ファイル管理部が、モジュールローダがメタデータによって初期化処理を行った後で当該モジュールの実行コードを含む実行領域が記憶手段に存在するか否かを調べ、存在しない場合は他のコンピュータから実行コードを読み込んでこれを実行領域として書き込む機能を備えたこと、を特徴とする。
上記目的を達成するため、本発明に係る分散処理装置は、複数台が相互に接続されることによって分散バッチアプリを協調して分散実行する分散処理システムを構成する分散処理装置であって、分散バッチアプリを構成する各モジュールを読み込んで初期化処理を行うモジュールローダと、各モジュールのうち初期化処理のコマンドを含むメタデータを予め備えられた記憶手段もしくは他のコンピュータから取得するメタデータ管理部と、記憶手段もしくは他のコンピュータにあるファイルを読み書きするファイル管理部と、分散バッチアプリを実行する実行コンテナとを備えると共に、ファイル管理部が、モジュールローダがメタデータによって初期化処理を行った後で当該モジュールの実行コードを含む実行領域が記憶手段に存在するか否かを調べ、存在しない場合は他のコンピュータから実行コードを読み込んでこれを実行領域として書き込む機能を備えたこと、を特徴とする。
上記目的を達成するため、本発明に係る分散処理方法は、複数台のコンピュータが相互に接続され、これらのコンピュータによって分散バッチアプリを協調して分散実行する分散処理システムにあって、分散バッチアプリを構成する各モジュールのうち初期化処理のコマンドを含むメタデータをメタデータ管理部が取得し、メタデータによってモジュールローダが初期化処理を行い、初期化処理の後で、当該モジュールの実行コードを含む実行領域が記憶手段に存在するか否かをファイル管理部が調べ、実行コードを含む実行領域が記憶手段に存在しない場合、ファイル管理部が他のコンピュータから実行コードを読み込んでこれを実行領域として書き込み、実行コードを含む当該モジュールを実行コンテナが実行すること、を特徴とする。
上記目的を達成するため、本発明に係る分散処理プログラムは、複数台のコンピュータが相互に接続され、これらのコンピュータによって分散バッチアプリを協調して分散実行する分散処理システムにあって、コンピュータに、分散バッチアプリを構成する各モジュールのうち初期化処理のコマンドを含むメタデータを取得する手順、メタデータによって初期化処理を行う手順、初期化処理の後で、当該モジュールの実行コードを含む実行領域が記憶手段に存在するか否かを調べる手順、実行コードを含む実行領域が記憶手段に存在しない場合、他のコンピュータから実行コードを読み込んでこれを実行領域として書き込む手順、および実行コードを含む当該モジュールを実行する手順を実行させること、を特徴とする。
本発明は、前述の通りメタデータのみによって仮の初期化処理を行い、その後で実行コードがなければ他のコンピュータから読み込むように構成したので、処理を実行しないコンピュータにまで実行コードが送信されることはない。これによって、実行時に各スレーブノードに転送するデータ容量を削減し、かつ分散処理を高速に開始することが可能であるという、優れた特徴を持つ分散処理システム、分散処理装置、分散処理方法および分散処理プログラムを提供することができる。
本発明の基本形態に係る分散処理システムの構成について示す説明図である。 本発明の第1の実施形態に係る分散処理システムの構成について示す説明図である。 図2に示したマスターノードおよびスレーブノードのより詳細な構成について示す説明図である。 図2〜3に示す分散処理システムで実行対象となる分散バッチアプリの構成について示す説明図である。 図2〜3に示す分散処理システムで、図4に示す分散バッチアプリを動作させる場合の処理について示すフローチャートである。 図5の続きである。 図5のステップS106までの処理が終わった状態でのメタデータ共有部の状態について示す説明図である。 図4に示す分散バッチアプリで、「実行領域ロード指示」が定義されている第1のマスターモジュール(step1.class)について示す説明図である。 図5のステップS113までの処理が終了して、実行領域が書き換えられた状態の第1のマスターモジュール(step1.class)について示す説明図である。 図4に示す分散バッチアプリで、「実行領域ロード指示」が定義されている第2のマスターモジュール(step2.class)について示す説明図である。 図5のステップS115の処理で作成されるメタデータのみのスレーブモジュール(step2_slave.class)について示す説明図である。 図5のステップS113に示した処理が終了して実行領域を配置された状態のスレーブモジュール(step2_slave.class)について示す説明図である。 本発明の第2の実施形態に係る分散処理システムの構成について示す説明図である。 図13に示したマスターノードおよびスレーブノードのより詳細な構成について示す説明図である。 図13〜14に示した分散処理システムで動作する分散バッチアプリの構成について示す説明図である。 図13〜14に示す分散処理システムで、図15に示す分散バッチアプリを動作させる場合の処理について示すフローチャートである。 図16の続きである。 分散バッチアプリ320の動作が完了した状態のメタデータ共有部について示す説明図である。 分散バッチアプリ320の動作の後で分散バッチアプリ330の動作が完了した状態のメタデータ共有部について示す説明図である。 既存の分散処理システムの構成について示す説明図である。 図20で示した分散処理システムによって実行される分散アプリケーションの構成について示す説明図である。 図20で示した既存の分散処理システムで、図21で示した分散アプリケーションを実行する場合の動作について示す説明図である。
(基本形態)
以下、本発明の基本形態の構成について添付図1に基づいて説明する。
基本形態に係る分散処理システム1は、複数台のコンピュータ2a、2b、…が相互に接続され、これらのコンピュータによって分散バッチアプリを協調して分散実行する分散処理システムである。各コンピュータ2は、分散バッチアプリを構成する各モジュールを読み込んで初期化処理を行うモジュールローダ3と、各モジュールのうち初期化処理のコマンドを含むメタデータを予め備えられた記憶手段もしくは他のコンピュータから取得するメタデータ管理部4と、記憶手段もしくは他のコンピュータにあるファイルを読み書きするファイル管理部5と、分散バッチアプリを実行する実行コンテナ6とを備える。そして、ファイル管理部5が、モジュールローダがメタデータによって初期化処理を行った後で当該モジュールの実行コードを含む実行領域が記憶手段に存在するか否かを調べ、存在しない場合は他のコンピュータから実行コードを読み込んでこれを実行領域として書き込む機能を備える。
これら各部/各手段のより詳細な構成は、次の第1の実施形態として説明する。
(第1の実施形態)
続いて、本発明の第1の実施形態の構成について添付図2〜3に基づいて説明する。
本実施形態に係る分散処理システム100は、複数台のコンピュータ(マスターノード10およびスレーブノード20)が相互に接続され、これらのコンピュータによって分散バッチアプリ120を協調して分散実行する分散処理システムである。各コンピュータは、分散バッチアプリを構成する各モジュールを読み込んで初期化処理を行うモジュールローダ112と、各モジュールのうち初期化処理のコマンドを含むメタデータを予め備えられた記憶手段もしくは他のコンピュータから取得するメタデータ管理部113と、記憶手段もしくは他のコンピュータにあるファイルを読み書きするファイル管理部114と、分散バッチアプリを実行する実行コンテナ111とを備える。そしてファイル管理部114は、モジュールローダがメタデータによって初期化処理を行った後で当該モジュールの実行コードを含む実行領域が記憶手段に存在するか否かを調べ、存在しない場合は他のコンピュータから実行コードを読み込んでこれを実行領域として書き込む機能を備える。
またファイル管理部114は、メタデータのみのモジュールをファイルとして作成して、これをメタデータ管理部113によって他のコンピュータと共有する機能を備える。
さらに、複数台のコンピュータのうちの1台が分散バッチアプリの分散実行を管理するマスターノード10であり、マスターノードを除く他のコンピュータがスレーブノード20である。ここでマスターノード10のファイル管理部114が、メタデータのみのモジュールをファイルとして作成して、これをスレーブノード20に送信する機能を備える。
以上の構成を備えることにより、この分散処理システムは、実行時に各スレーブノードに転送するデータ容量を削減し、かつ分散処理を高速に開始することが可能なものとなる。
以下、これをより詳細に説明する。
図2は、本発明の第1の実施形態に係る分散処理システム100の構成について示す説明図である。分散処理システム100は、複数のコンピュータ装置がネットワーク30を介して相互に接続されて構成されるものであり、その台数については特に制限はない。図2では、本発明の概念を平易に示すという意味で、マスターノード10(分散処理装置)、スレーブノード20aおよび20b(分散処理装置)の3台についてのみ図示している。スレーブノード20aおよび20bは、総称してスレーブノード20という。
図3は、図2に示したマスターノード10およびスレーブノード20のより詳細な構成について示す説明図である。図3ではマスターノード10について示しているが、スレーブノード20についてもハードウェア的には同一の構成を有する。
マスターノード10は、コンピュータプログラムを実行する主体であるプロセッサ11、プログラムおよびデータを記憶する記憶手段12、およびネットワーク30と接続して他装置とのデータ通信を行う通信手段13を備えている。マスターノード10はこれ以外にも多くのハードウェア要素を備えているが、本発明について説明する上で必要のある要素についてのみここでは説明する。また、スレーブノード20はマスターノード10と同様のプロセッサ21、記憶手段22、および通信手段23を備えている。
プロセッサ11では、OS101(オペレーティングシステム)がまず動作し、これを前提として分散処理ミドルウェア110が動作する。分散処理ミドルウェア110は、実行コンテナ111、モジュールローダ112、メタデータ管理部113、ファイル管理部114といった各機能部を備えると共に、記憶手段22をメタデータ共有部115とフォルダ116として機能させる。そして、分散処理ミドルウェア110の動作を前提として、分散バッチアプリ120が動作する。
スレーブノード20ではマスターノード10と同一の分散処理ミドルウェア110が動作するが、スレーブノード20側ではメタデータ共有部115、フォルダ116、および記憶手段22についてのみ図示することとする。ただし、後述のメタデータ管理部113およびファイル管理部114による他ノードからのメタデータ取得あるいはファイル読み書きは、スレーブノード20側からマスターノード10に対して同一の動作を行うことも可能である。また、スレーブノード20aおよび20bの相互間で同一の動作を行うことも可能である。
実行コンテナ111は、分散バッチアプリ120を実行する。実行コンテナ111はまた、モジュールローダ112を利用して、分散バッチアプリ120のモジュールのロードやファイルの読み書きができる。
モジュールローダ112はモジュールや設定ファイルなどを読み込み、メタデータを解析してフォルダ116上に実行可能なように配置する。これはJava言語でいうクラスローダ(ClassLoader)に相当するが、ここではそのクラスローダを拡張して、メタデータをフォルダ116にロードするタイミングや初期化処理の入れ替え、あるいは再初期化を動的に行うことも可能としたものである。
メタデータ管理部113はモジュールのメタデータの管理を行う。モジュールのメタデータをメタデータ共有部115またはファイル管理部114から取得してモジュールローダ112に提供する。またメタデータ管理部は他ノードのメタデータ共有部115からもメタデータを取得できる。
メタデータ共有部115は、ロードされたモジュールのメタデータを保存し、共有する機能を提供する。また保存したメタデータは他ノードからも参照できる機能を提供する。
ファイル管理部114は自ノード又は他ノードのフォルダ116上のファイルを管理して読み書きを行う。また、実際のモジュールファイルからメタデータのみのファイル作成や、他ノードのファイルの差分だけを読み書きする機能も有する。フォルダ116は、ファイル管理部114によって管理される記憶領域である。
図4は、図2〜3に示す分散処理システム100で実行対象となる分散バッチアプリ120の構成について示す説明図である。分散バッチアプリ120は、複数のモジュール、設定ファイル、バイナリファイルなどによって構成される。各モジュールはメタデータと実行領域とによって構成される。メタデータは、各モジュール間の依存関係、初期化コマンドなどが格納される領域である。実行領域は、実際に実行するコードが格納される領域である。
分散バッチアプリ120は、第1〜3のステップ121〜123という動作ステップによって構成される。図4では、分散バッチアプリ120と、第1および第2のステップ121および122のメタデータと実行領域とを示している。
各ステップのうち、第1および第3のステップ121および123は、マスターノード10のみで実行されるが、第2のステップ122は各スレーブノード20との間で協調して分散処理を行う。以下、マスターノード10の実行コンテナ111を「マスターコンテナ」、スレーブノード20の実行コンテナ111を「スレーブコンテナ」という。
また、第1のステップ121のマスターノード10で実行されるモジュールを第1のマスターモジュール121a(step1.class)、第2のステップ122のマスターノード10で実行されるモジュールを第2のマスターモジュール122a(step2.class)、第2のステップ122のスレーブノード20で実行されるモジュールをスレーブモジュール122b(step2_slave.class)ということにする。
さらに、第2のマスターモジュール122aおよびスレーブモジュール122bの実行には共有モジュール122c(shared2.class)が必要である。
マスターノード10に配備された分散バッチアプリ120を、実行コンテナ111(マスターコンテナ)がフォルダ116上に展開し、その展開されたフォルダにモジュールファイルや設定ファイルを各々保存する。
そして実行コンテナ111(マスターコンテナ)は、分散バッチアプリ120を起動するために、モジュールファイルのメタデータ(後述)をロード(Load)し、依存関係を解決して(Link)初期化(Initialize)を行う。ここで読み込まれたメタデータを、モジュールローダ112を経由してメタデータ管理部113が自らのメタデータ共有部115がフォルダ116に保存すると同時に、スレーブノード20のメタデータ共有部115にも渡して保存させる。
まず第1のステップ121は、マスターノード10の実行コンテナ111(マスターコンテナ)だけで実行される。これに続く第2のステップ122では、実行コンテナ111(マスターコンテナ)がスレーブノード20に第2のステップ122のスレーブ実行を指示する。スレーブノード20は実行コンテナ111(スレーブコンテナ)を立ち上げて、分散バッチアプリ120を起動する準備を行う。
スレーブノード20は、第2のステップ122を実行するために必要なメタデータを、マスターノード10のメタデータ共有部115から取得する。そしてメタデータのみのクラスファイルを作成して、フォルダ116に記憶する。スレーブノード20の実行コンテナ111(スレーブコンテナ)は、このスレーブモジュール122b(step2_slave.class)の処理を実行するメソッドを呼び出す。ただしここで呼び出されるメソッドには実際の実行コードは無く、ただ実行領域のロードを指示するものであるので、それを実行する。
即ち、スレーブノード20の実行コンテナ111(スレーブコンテナ)は、スレーブモジュール122b(step2_slave.class)の実行領域のデータをマスターノード10のメタデータ共有部115から取得し、そこに書かれた内容に応じてフォルダ116の記憶領域のデータを再初期化し、そこにスレーブモジュール122b(step2_slave.class)を書き込む。即ち、スレーブノード20では、メタデータと実行領域が揃って、再初期化が行われたので、通常のアプリケーションの動作が可能な状態になる。そこでこのスレーブモジュール122b(step2_slave.class)を実行する。スレーブノード20aおよび20bで、以上の処理を同時に行う。
スレーブノード20aおよび20bでは、マスターノード10で既に実行されたデータを利用して、メタデータの取得およびロードを行うことが可能である。これにより、起動を高速に行うことが可能となる。また、実際に実行するコードが呼ばれてから、実行に必要なコードやデータを取得するので、実際に転送されるデータの分量が削減される。
図5〜6は、図2〜3に示す分散処理システム100で、図4に示す分散バッチアプリ120を動作させる場合の処理について示すフローチャートである。図5〜6は、紙面の都合で2枚に分けて示している。まず実行コンテナ111(マスターコンテナ)が、分散バッチアプリ1.jarファイルを読み込み、その中の各モジュールおよび設定ファイルなどをフォルダ116に保存する(ステップS101)。
続いて実行コンテナ111(マスターコンテナ)が分散バッチアプリ120の設定ファイル120aを読み込んで、当該分散バッチアプリ120を起動する(ステップS102)。ここでは、図1に示した通り、第1のステップ121から順番に、実行コンテナ111(マスターコンテナ)が実行していく。
実行コンテナ111(マスターコンテナ)は第1のステップ121を実行するために、モジュールローダ112に第1のマスターモジュール121a(step1.class)を読み込んで実行可能な状態とするよう指示し、モジュールローダ112はこれに応じて第1のマスターモジュール121a(step1.class)のメタデータを読み込む(ステップS103)。
モジュールローダ112はその際、メタデータ管理部113に第1のマスターモジュール121a(step1.class)の有無について問い合わせる。メタデータ管理部113はこれに応じて、マスターノード10のメタデータ共有部115にメタデータがあるか否かについて調べる。この段階ではメタデータ共有部115にメタデータは存在しないので「存在しない」旨の回答をメタデータ管理部113がモジュールローダ112に返す(ステップS104)。
これを受けたモジュールローダ112は、ファイル管理部114に第1のマスターモジュール121a(step1.class)のメタデータをフォルダ116上のファイルから読み込むように指示する。ファイル管理部114はフォルダ116上から第1のマスターモジュール121a(step1.class)を探して、そのメタデータを読み込んでモジュールローダ112に返す。(ステップS105)。
続いてモジュールローダ112は、第1のマスターモジュール121a(step1.class)のメタデータをメモリに展開すると同時にメタデータ管理部113に通知する。メタデータ管理部113はそのメタデータをメタデータ共有部115に書き込む(ステップS106)。図7は、図5のステップS106までの処理が終わった状態でのメタデータ共有部115の状態について示す説明図である。
さらに続いてモジュールローダ112は、第1のマスターモジュール121a(step1.class)のメタデータを読み込み、メタデータの「依存関係」欄に必要な共有モジュールやスレーブモジュールが定義されている場合は、その定義に応じて必要なファイルを読み込むか、もしくは他装置に対して指示する(ステップS107)。本実施形態の場合、第1のマスターモジュール121aでは依存関係は特に定義されていないので、ここでは特に何もせず「依存関係は解決した」側に進む。
そしてモジュールローダ112は仮初期化処理を行う(ステップS108)。実際には通常の第1のマスターモジュール121a(step1.class)の初期化処理を行わず、「<clinit>」その他全てのメソッドに「実行領域ロード指示」を呼び出すように、第1のマスターモジュール121a(step1.class)は予め定義されている。図8は、図4に示す分散バッチアプリ120で、「実行領域ロード指示」が定義されている第1のマスターモジュール121a(step1.class)について示す説明図である。
ここでいう「実行領域ロード指示」とは、モジュールローダ112に指定されたクラスの実行領域をロードして再初期化を行い、アプリが実行できる状態とするメソッドである。このようにして仮初期化を行い、通常の初期化処理を終了したことにする。なお、第1のステップ121は分散処理を伴わないので、後述のステップS115はここでは実行されない。
これで実行コンテナ111(マスターコンテナ)は第1のマスターモジュール121a(step1.class)の実行に入る。図8に示した通り、本実施例では実際の実行コードは「実行領域ロード指示」に置き換えられているので、実行コンテナ111(マスターコンテナ)はモジュールローダ112に実行領域を読み込むよう指示し、モジュールローダ112はファイル管理部114にクラスの実行領域を読み込むよう指示する(ステップS109)。
この指示を受けたファイル管理部114は、クラスファイルの実行領域が自ノードのフォルダ116にある場合は、そこのクラスファイルから実行領域を読み出す(ステップS110〜111)。もし、フォルダ116にクラスファイルがない、もしくは実行領域がない(メタデータのみのクラスファイル)であれば、他ノードにあるクラスファイルの実行領域を読み出す(ステップS110〜112)。
本実施例ではマスターノード10のフォルダ116に展開された第1のマスターモジュール121a(step1.class)が存在するので、ファイル管理部114はその実行領域を読み出して、モジュールローダ112に通知する。
モジュールローダ112は実行領域をメインメモリに配置して、メタデータを書き換えて、再初期化を行い、メソッドを実行できる状態にする(ステップS113)。図9は、図5のステップS113までの処理が終了して、実行領域が書き換えられた状態の第1のマスターモジュール121a(step1.class)について示す説明図である。そして実行コンテナ111(マスターコンテナ)は、この状態の第1のマスターモジュール121a(step1.class)を実行して(ステップS114)、第1のステップ121に係る処理を終了する。
続いて、実行コンテナ111(マスターコンテナ)は第2のステップ122に係る処理に入る。即ち、第2のマスターモジュール121a(step2.class)に対して、ステップS101〜106と同様の処理を行う。
これに引き続いて、モジュールローダ112は第2のマスターモジュール121a(step2.class)のメタデータより依存関係を解決する処理を行う(ステップS107)。この第2のマスターモジュール121a(step2.class)のメタデータの「依存関係」欄は、スレーブモジュール122b(step2_slave.class)と共有モジュール122c(shared2.class)とに依存しているとあるので、これらをメタデータ共有部115から読み出そうとするが、存在しないのでファイル管理部114によって読み出してメタデータ共有部115に書き込む。
これで依存関係は解決したので、ステップS108に進んで第1のステップ121と同様に、全てのメソッドを「実行領域ロード指示」に置き換えた状態から仮初期化を行って実行する(ステップS108〜114)。図10は、図4に示す分散バッチアプリ120で、「実行領域ロード指示」が定義されている第2のマスターモジュール122a(step2.class)について示す説明図である。この場合、スレーブモジュール122b(step2_slave.class)と共有モジュール122c(shared2.class)については、マスターノード10側ではそのままである。
この第2のステップ122では、マスターノード10とスレーブノード20とが協調して分散並列処理を行う。そこでマスターノード10の実行コンテナ111(マスターコンテナ)は、メタデータのみ(実行領域は「実行領域ロード指示」のみ)としたスレーブモジュール122b(step2_slave.class)を作成し、スレーブノード20に送付する(ステップS115)。図11は、図5のステップS115の処理で作成されるメタデータのみのスレーブモジュール122b(step2_slave.class)について示す説明図である。なお、マスターノード10で作成されたこのメタデータのみのスレーブモジュール122bは、マスターノード10側の記憶手段12には保存されてもされなくてもよい。
これを受けたスレーブノード20の実行コンテナ111(スレーブコンテナ)は、このスレーブモジュール122b(step2_slave.class)に対して実行を開始し、ステップS101〜103と同様の処理を行う。スレーブモジュール122b(step2_slave.class)のメタデータの「依存関係」欄では共有モジュール122c(shared2.class)が必要となるので、メタデータ管理部113はマスターノード10のメタデータ共有部115にそれらのモジュールがあるか否かについて調べる(ステップS101〜104)。
スレーブノード20のモジュールローダ112は、メタデータ管理部113を介してマスターノード10の第2のマスターモジュール121a(step2.class)、スレーブモジュール122b(step2_slave.class)および共有モジュール122c(shared2.class)のメタデータを取得する。本来なら、依存関係を解決する処理を行う必要があるが、それは既にマスターノード10の処理によって解決されているので、マスターノード10のメタデータ共有部115からこれらのモジュールを取得して(ステップS107)、これで「依存関係は解決」となる。
マスターノード10のメタデータ共有部115から取得したメタデータを、スレーブノード20のモジュールローダ112がフォルダ116上に展開して、マスターノード10と同様に仮初期化を行う(ステップS108)。
スレーブノード20の実行コンテナ111(スレーブコンテナ)はスレーブモジュール122b(step2_slave.class)を呼び出すが、そのメタデータの中に「実行領域ロード指示」が含まれているので、スレーブノード20のモジュールローダ112にその実行領域をロードするよう指示する(ステップS109)。
この指示を受けたスレーブノード20のファイル管理部114は、スレーブモジュール122b(step2_slave.class)は自らのフォルダ116に無いので、マスターノード10のフォルダ116からクラスファイルの実行領域を読み出し、自らのフォルダ116に書き込む(ステップS113,116)。
スレーブノード20のモジュールローダ112は実行領域をメインメモリに配置して、メタデータを書き換えて、再初期化を行い、メソッドを実行できる状態にする(ステップS113)。図12は、図5のステップS113に示した処理が終了して実行領域を配置された状態のスレーブモジュール122b(step2_slave.class)について示す説明図である。そして実行コンテナ111(スレーブコンテナ)は、この状態のスレーブモジュール122b(step2_slave.class)を実行して(ステップS114)、第2のステップ122に係る処理を終了する。
第3のステップ123に係る処理は、第1のステップ121と同じようにマスターノード10単体で実行される。以上で、分散バッチアプリ120の実行に係る処理は完了する。
(第1の実施形態の全体的な動作と効果)
次に、上記の実施形態の全体的な動作について説明する。
本実施形態に係る分散処理方法は、複数台のコンピュータが相互に接続され、これらのコンピュータによって分散バッチアプリを協調して分散実行する分散処理システムにある。分散バッチアプリを構成する各モジュールのうち初期化処理のコマンドを含むメタデータをメタデータ管理部が取得し(図5・ステップS101〜107)、メタデータによってモジュールローダが初期化処理を行い(図5・ステップS108)、初期化処理の後で、当該モジュールの実行コードを含む実行領域が記憶手段に存在するか否かをファイル管理部が調べ(図6・ステップS109〜110)、実行コードを含む実行領域が記憶手段に存在しない場合、ファイル管理部が他のコンピュータから実行コードを読み込んでこれを実行領域として書き込み(図6・ステップS110〜112,116)、実行コードを含む当該モジュールを実行コンテナが実行する(図6・ステップS113〜114)。
そして、初期化処理の後で、メタデータのみのモジュールをファイル管理部がファイルとして作成して、これをメタデータ管理部によって他のコンピュータと共有する(図5・ステップS115)。ここで、複数台のコンピュータのうちの1台が分散バッチアプリの分散実行を管理するマスターノードであり、マスターノードを除く他のコンピュータがスレーブノードであり、この処理は、初期化処理の後でメタデータのみのモジュールをマスターノードのファイル管理部がファイルとして作成して、これをスレーブノードに送信するというものである。
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するマスターノード10およびスレーブノード20が各々備えるプロセッサ11および21に実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、DVD、CD、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
本実施形態では、マスターノード10からスレーブノード20に、まずメタデータのみのモジュールファイルを送信するので、その段階で送信されるデータ量がまず削減される。そして、実際にスレーブノード20でその実行処理が行われる際に、その実行コードをマスターノード10から取得するので、実際にその処理を行わないスレーブノードに対して実行コードが送信されることはないので、大幅な送信データ量の削減が可能となる。
さらに、分散処理でスレーブノードが使用するメタデータは原則的に同一で、ただ処理対象データなどが異なるのみである。従って、多数のスレーブノード間で同一のメタデータを流用することができ、同一の初期化処理を毎回行う必要はないので、初期化を高速化することができる。また、分散処理では同一のスレーブノードで異なるデータに対する同一の処理を割り振る場合もありうるが、そのような場合でも同一のメタデータを流用することによって初期化を高速化するという効果を得ることができる。
本実施形態の拡張として、まず図5のステップS104〜105の処理は、メタデータ共有部115とファイル管理部114に対して同時にメタデータを読み込ませ、先に読み取れた方のメタデータを利用するものとしてもよい。これによって読み取りの高速化の効果を期待することができ、また、いずれか一方が読み取りエラーとなっても他方から読み取りできればよいので耐障害性の効果も期待できる。
これと同様に、メタデータと実行領域を同時に読み取るようにしてもよい。また、メタデータを自ノードから、実行領域を他ノードから、それぞれ読み取るようにしてもよい。
一方、Java言語では、クラスファイルは固定文字列は必ずメタデータの中に含まれる決まりとなっているが、仮初期化にはこの固定文字列データは使用されない。従って、固定文字列を含まないメタデータをマスターからスレーブにまず配布し、実行領域の実行コード取得と同時に固定文字列データを取得するようにしてもよい。これによって、さらに送信データ量の削減を期待できる。
また、図5のステップS104〜108の処理では、マスターノード10からメタデータを読み込んで、ローカルフォルダにメタデータのみのファイルを書き出しているが、これと同時にローカルのメタデータ共有部115に書き込んでもよい。たとえば、スレーブノード20で実行エラーが生じて再起動する場合に、同一ノード上のメタデータ共有部115から再びメタデータを読み取ることができるので、ロードおよび再初期化の処理を高速に行うことが可能になる。
(第2の実施形態)
本発明の第2の実施形態に係る分散処理システム200は、第1の実施形態で示した構成に加えて、各コンピュータから共通して参照可能な分散共有メモリ230を備えると共に、メタデータ管理部313がメタデータによって参照される共通ファイルを分散共有メモリ230に記憶させる機能を備えたものとした。
この構成によっても第1の実施形態と同じ効果が得られるのに加えて、異なる処理で同一のメタデータを利用して、処理をさらに高速にすることが可能となる。
以下、これをより詳細に説明する。
図13は、本発明の第2の実施形態に係る分散処理システム200の構成について示す説明図である。分散処理システム200は、前述した第1の実施形態と同様に、複数のコンピュータ装置が相互に接続されて構成されるものである。ただし、複数のマスターノードによって制御される異なる処理が、同一の分散処理システムの中で並行して実行されるという例を、ここでは示すことにする。
従って、図13ではマスターノード210aおよび210b(総称してマスターノード210という)、およびスレーブノード220の3台についてのみ図示している。さらに、マスターノード210およびスレーブノード220のいずれからでも共通してアクセスして内容を参照することが可能である分散共有メモリ230も、同時に各装置に接続されている。もちろんマスターノード210およびスレーブノード220の台数について、特に制限はない。また、分散共有メモリ230は、実際にはNAS(Network Attached Storage)などのようなネットワークに接続された外部記憶装置などによって実現可能であるが、具体的な装置の形態については特に制限はない。
図14は、図13に示したマスターノード210およびスレーブノード220のより詳細な構成について示す説明図である。マスターノード210およびスレーブノード220はいずれも、ハードウェア的には第1の実施形態のマスターノード10およびスレーブノード20と同一の構成を有する。従って、同一の要素については同一の呼称および参照番号でいい、詳細な説明は特に割愛することとする。
プロセッサ11(21)では、OS101がまず動作し、これを前提として第1の実施形態とは別の分散処理ミドルウェア310が動作する。分散処理ミドルウェア310は、実行コンテナ311、モジュールローダ312、メタデータ管理部313、ファイル管理部314といった各機能部を備える。そして、前述の分散共有メモリ230をメタデータ共有部315として機能させ、記憶手段12(22)をフォルダ316として機能させる。
分散処理ミドルウェア310の各機能部の動作は、原則として第1の実施形態の分散処理ミドルウェア110の各機能部の動作と同一である。ただし、メタデータ共有部315は分散共有メモリ230上にあるので、異なる分散バッチアプリを動作させている各ノードから共通して内容を参照することが可能である。この分散処理ミドルウェア310の動作を前提として、分散バッチアプリ320および330が動作する。
図15は、図13〜14に示した分散処理システム200で動作する分散バッチアプリ320および330の構成について示す説明図である。分散バッチアプリ320は、第1の実施形態で説明した分散バッチアプリ120と同じく、第1〜3のステップ321〜323という動作ステップによって構成される。分散バッチアプリ330も同様に、第1〜3のステップ331〜333という動作ステップによって構成される。
ここで、分散バッチアプリ320の第1のステップ321のマスターノード210aで実行されるモジュールを第1のマスターモジュール321a(step11.class)、第2のステップ322のマスターノード210aで実行されるモジュールを第2のマスターモジュール322a(step12.class)、第2のステップ322のスレーブノード320で実行されるモジュールをスレーブモジュール322b(step12_slave.class)ということにする。第3のステップ323以降については、説明する必要は特にないので記載を省略する。
同様に、分散バッチアプリ330の第1のステップ331のマスターノード210bで実行されるモジュールを第1のマスターモジュール331a(step21.class)、第2のステップ332のマスターノード210bで実行されるモジュールを第2のマスターモジュール332a(step22.class)ということにする。
そして、第2のステップ332のスレーブノード220で実行されるスレーブモジュール332b(step22_slave.class)は、分散バッチアプリ320と同一の共有モジュール322c(shared02.class)を利用する。スレーブモジュール322b(step12_slave.class)、および第3のステップ333以降については、説明する必要は特にないので記載を省略する。
この分散処理システム200で分散バッチアプリ320および330を動作させる場合、第1のステップ321および331までは第1の実施形態と同様の動作となる。即ち、マスターノード210aが分散バッチアプリ320を動作させると、メタデータ共有部315に共有モジュール322c(shared02.class)のメタデータが記憶される。続いて、マスターノード210bが分散バッチアプリ330を動作させると、共有モジュール322c(shared02.class)のメタデータは既に記憶されているので、これを共通して利用することができる。
図16〜17は、図13〜14に示す分散処理システム200で、図15に示す分散バッチアプリ320および330を動作させる場合の処理について示すフローチャートである。図16〜17は、紙面の都合で2枚に分けて示している。図16〜17のフローチャートで示された各動作は、基本的に図5〜6に示した第1の実施形態と同一であるので、同一の動作については同一の参照番号を付している。唯一の相違点は、メタデータを書き込むメタデータ共有部315が分散共有メモリ230にあるという点のみである(ステップS206)。
図18は、分散バッチアプリ320の動作が完了した状態のメタデータ共有部315について示す説明図である。図19は、分散バッチアプリ320の動作の後で分散バッチアプリ330の動作が完了した状態のメタデータ共有部315について示す説明図である。
図18で示した通り、この段階のメタデータ共有部315には分散バッチアプリ320を構成する第1のマスターモジュール321a(step11.class)、第2のマスターモジュール322a(step12.class)、スレーブモジュール322b(step12_slave.class)と共有モジュール322c(shared02.class)が記憶されている(第3のステップ以降については記載を省略する。)。
そして、その後で分散バッチアプリ330を動作させると、メタデータ共有部315には分散バッチアプリ330を構成する第1のマスターモジュール331a(step21.class)、第2のマスターモジュール332a(step22.class)、スレーブモジュール332b(step22_slave.class)が記憶されているが、共有モジュール322c(shared02.class)は図18で示した段階のものが共通して使用可能である。この動作は、他ノードにそのモジュールの有無について照会する必要がないので、高速に行える。
以上で説明した通り、本実施形態によれば、異なるジョブを行う複数の分散バッチアプリの相互間でメタデータの重複を少なくして共有化することが可能となる。従って、アプリケーション配備や初期化をさらに効率的なものとすることができる。さらに、他ノードにメタデータの有無について照会する必要もなくなるので、どのノードにそのメタデータがあるかを検索する必要もなくなり、障害の発生したノードがあったとしても該ノードのためにメタデータの取得が失敗することもなくなる。
本実施形態の拡張として、マスターノードおよびスレーブノードがいずれも、自らのコンテナで読み取ったメタデータをメタデータ共有部115に登録するようにしてもよい。たとえばマスターノードで読み取られず、スレーブノードで読み取られたメタデータがあっても、他の分散バッチアプリでマスターノードや他のスレーブノードがこれを利用する可能性があるからである。
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
上述した実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
(付記1) 複数台のコンピュータが相互に接続され、これらのコンピュータによって分散バッチアプリを協調して分散実行する分散処理システムであって、
前記各コンピュータが、前記分散バッチアプリを構成する各モジュールを読み込んで初期化処理を行うモジュールローダと、前記各モジュールのうち前記初期化処理のコマンドを含むメタデータを予め備えられた記憶手段もしくは他のコンピュータから取得するメタデータ管理部と、前記記憶手段もしくは他のコンピュータにあるファイルを読み書きするファイル管理部と、前記分散バッチアプリを実行する実行コンテナと
を備えると共に、
前記ファイル管理部が、前記モジュールローダが前記メタデータによって前記初期化処理を行った後で当該モジュールの実行コードを含む実行領域が前記記憶手段に存在するか否かを調べ、存在しない場合は他のコンピュータから前記実行コードを読み込んでこれを前記実行領域として書き込む機能を備えたこと、を特徴とする分散処理システム。
(付記2) 前記ファイル管理部が、前記メタデータのみの前記モジュールをファイルとして作成して、これを前記メタデータ管理部によって他のコンピュータと共有する機能を備えたこと、を特徴とする付記1に記載の分散処理システム。
(付記3) 前記複数台のコンピュータのうちの1台が前記分散バッチアプリの分散実行を管理するマスターノードであり、前記マスターノードを除く他のコンピュータがスレーブノードであると共に、
前記マスターノードの前記ファイル管理部が、前記メタデータのみの前記モジュールをファイルとして作成して、これを前記スレーブノードに送信する機能を備えたこと、を特徴とする付記2に記載の分散処理システム。
(付記4) 前記各コンピュータから共通して参照可能な分散共有メモリを備えると共に、前記メタデータ管理部が前記メタデータによって参照される共通ファイルを前記分散共有メモリに記憶させる機能を備えたこと、を特徴とする付記1に記載の分散処理システム。
(付記5) 複数台が相互に接続されることによって分散バッチアプリを協調して分散実行する分散処理システムを構成する分散処理装置であって、
前記分散バッチアプリを構成する各モジュールを読み込んで初期化処理を行うモジュールローダと、
前記各モジュールのうち前記初期化処理のコマンドを含むメタデータを予め備えられた記憶手段もしくは他のコンピュータから取得するメタデータ管理部と、
前記記憶手段もしくは他のコンピュータにあるファイルを読み書きするファイル管理部と、
前記分散バッチアプリを実行する実行コンテナと
を備えると共に、
前記ファイル管理部が、前記モジュールローダが前記メタデータによって前記初期化処理を行った後で当該モジュールの実行コードを含む実行領域が前記記憶手段に存在するか否かを調べ、存在しない場合は他のコンピュータから前記実行コードを読み込んでこれを前記実行領域として書き込む機能を備えたこと、を特徴とする分散処理装置。
(付記6) 前記ファイル管理部が、前記メタデータのみの前記モジュールをファイルとして作成して、これを前記メタデータ管理部によって他のコンピュータと共有する機能を備えたこと、を特徴とする付記5に記載の分散処理装置。
(付記7) 前記メタデータ管理部が前記メタデータによって参照される共通ファイルを前記各コンピュータから共通して参照可能な分散共有メモリに記憶させる機能を備えたこと、を特徴とする付記5に記載の分散処理装置。
(付記8) 複数台のコンピュータが相互に接続され、これらのコンピュータによって分散バッチアプリを協調して分散実行する分散処理システムにあって、
前記分散バッチアプリを構成する各モジュールのうち初期化処理のコマンドを含むメタデータをメタデータ管理部が取得し、
前記メタデータによってモジュールローダが初期化処理を行い、
前記初期化処理の後で、当該モジュールの実行コードを含む実行領域が前記記憶手段に存在するか否かをファイル管理部が調べ、
前記実行コードを含む実行領域が前記記憶手段に存在しない場合、前記ファイル管理部が他のコンピュータから前記実行コードを読み込んでこれを前記実行領域として書き込み、
前記実行コードを含む当該モジュールを実行コンテナが実行すること、を特徴とする分散処理方法。
(付記9) 前記初期化処理の後で、前記メタデータのみの前記モジュールを前記ファイル管理部がファイルとして作成して、これを前記メタデータ管理部によって他のコンピュータと共有すること、を特徴とする付記8に記載の分散処理方法。
(付記10) 前記複数台のコンピュータのうちの1台が前記分散バッチアプリの分散実行を管理するマスターノードであり、前記マスターノードを除く他のコンピュータがスレーブノードであると共に、
前記初期化処理の後で、前記メタデータのみの前記モジュールを前記マスターノードのファイル管理部がファイルとして作成して、これを前記スレーブノードに送信すること、を特徴とする付記9に記載の分散処理方法。
(付記11) 前記各コンピュータから共通して参照可能な分散共有メモリを備えると共に、前記メタデータ管理部が前記メタデータによって参照される共通ファイルを前記分散共有メモリに記憶させること、を特徴とする付記8に記載の分散処理方法。
(付記12) 複数台のコンピュータが相互に接続され、これらのコンピュータによって分散バッチアプリを協調して分散実行する分散処理システムにあって、
前記コンピュータに、
前記分散バッチアプリを構成する各モジュールのうち初期化処理のコマンドを含むメタデータを取得する手順、
前記メタデータによって初期化処理を行う手順、
前記初期化処理の後で、当該モジュールの実行コードを含む実行領域が前記記憶手段に存在するか否かを調べる手順、
前記実行コードを含む実行領域が前記記憶手段に存在しない場合、他のコンピュータから前記実行コードを読み込んでこれを前記実行領域として書き込む手順、
および前記実行コードを含む当該モジュールを実行する手順
を実行させること、を特徴とする分散処理プログラム。
(付記13) 前記初期化処理の後で、前記メタデータのみの前記モジュールをファイルとして作成して、これを他のコンピュータと共有する手順をさらに実行させること、を特徴とする付記12に記載の分散処理プログラム。
この出願は2013年5月31日に出願された日本出願特願2013−115527を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、分散処理を行うコンピュータネットワークにおいて幅広く利用可能である。特に、その分散処理が大規模になればなるほど、通信容量の削減と処理の高速化において優れた効果を発揮するものである。
1、100、200 分散処理システム
2、2a、2b コンピュータ
3、112 モジュールローダ
4、113 メタデータ管理部
5、114 ファイル管理部
6、111 実行コンテナ
10、210、210a、210b マスターノード
11、21 プロセッサ
12、22 記憶手段
13、23 通信手段
20、20a、20b、220 スレーブノード
30 ネットワーク
101 OS
110、310 分散処理ミドルウェア
111、311 実行コンテナ
112、312 モジュールローダ
113、313 メタデータ管理部
114、314 ファイル管理部
115、315 メタデータ共有部
116、316 フォルダ
120、320、330 分散バッチアプリ
120a 設定ファイル
121、321 第1のステップ
121a、321a 第1のマスターモジュール
122、322 第2のステップ
122a、322a 第2のマスターモジュール
122b、322b スレーブモジュール
122c、322c 共有モジュール
123、323 第3のステップ
123a、323a 第3のマスターモジュール
230 分散共有メモリ

Claims (10)

  1. 複数台のコンピュータが相互に接続され、これらのコンピュータによって分散バッチアプリを協調して分散実行する分散処理システムであって、
    前記各コンピュータが、前記分散バッチアプリを構成する各モジュールを読み込んで初期化処理を行うモジュールローダと、前記各モジュールのうち前記初期化処理のコマンドを含むメタデータを予め備えられた記憶手段もしくは他のコンピュータから取得するメタデータ管理部と、前記記憶手段もしくは他のコンピュータにあるファイルを読み書きするファイル管理部と、前記分散バッチアプリを実行する実行コンテナと
    を備えると共に、
    前記ファイル管理部が、前記モジュールローダが前記メタデータによって前記初期化処理を行った後で当該モジュールの実行コードを含む実行領域が前記記憶手段に存在するか否かを調べ、存在しない場合は他のコンピュータから前記実行コードを読み込んでこれを前記実行領域として書き込む機能を備えたこと、を特徴とする分散処理システム。
  2. 前記ファイル管理部が、前記メタデータのみの前記モジュールをファイルとして作成して、これを前記メタデータ管理部によって他のコンピュータと共有する機能を備えたこと、を特徴とする請求項1に記載の分散処理システム。
  3. 前記複数台のコンピュータのうちの1台が前記分散バッチアプリの分散実行を管理するマスターノードであり、前記マスターノードを除く他のコンピュータがスレーブノードであると共に、
    前記マスターノードの前記ファイル管理部が、前記メタデータのみの前記モジュールをファイルとして作成して、これを前記スレーブノードに送信する機能を備えたこと、を特徴とする請求項2に記載の分散処理システム。
  4. 前記各コンピュータから共通して参照可能な分散共有メモリを備えると共に、前記メタデータ管理部が前記メタデータによって参照される共通ファイルを前記分散共有メモリに記憶させる機能を備えたこと、を特徴とする請求項1に記載の分散処理システム。
  5. 複数台が相互に接続されることによって分散バッチアプリを協調して分散実行する分散処理システムを構成する分散処理装置であって、
    前記分散バッチアプリを構成する各モジュールを読み込んで初期化処理を行うモジュールローダと、
    前記各モジュールのうち前記初期化処理のコマンドを含むメタデータを予め備えられた記憶手段もしくは他のコンピュータから取得するメタデータ管理部と、
    前記記憶手段もしくは他のコンピュータにあるファイルを読み書きするファイル管理部と、
    前記分散バッチアプリを実行する実行コンテナと
    を備えると共に、
    前記ファイル管理部が、前記モジュールローダが前記メタデータによって前記初期化処理を行った後で当該モジュールの実行コードを含む実行領域が前記記憶手段に存在するか否かを調べ、存在しない場合は他のコンピュータから前記実行コードを読み込んでこれを前記実行領域として書き込む機能を備えたこと、を特徴とする分散処理装置。
  6. 前記ファイル管理部が、前記メタデータのみの前記モジュールをファイルとして作成して、これを前記メタデータ管理部によって他のコンピュータと共有する機能を備えたこと、を特徴とする請求項5に記載の分散処理装置。
  7. 複数台のコンピュータが相互に接続され、これらのコンピュータによって分散バッチアプリを協調して分散実行する分散処理システムにあって、
    前記分散バッチアプリを構成する各モジュールのうち初期化処理のコマンドを含むメタデータをメタデータ管理部が取得し、
    前記メタデータによってモジュールローダが初期化処理を行い、
    前記初期化処理の後で、当該モジュールの実行コードを含む実行領域が前記記憶手段に存在するか否かをファイル管理部が調べ、
    前記実行コードを含む実行領域が前記記憶手段に存在しない場合、前記ファイル管理部が他のコンピュータから前記実行コードを読み込んでこれを前記実行領域として書き込み、
    前記実行コードを含む当該モジュールを実行コンテナが実行すること、を特徴とする分散処理方法。
  8. 前記初期化処理の後で、前記メタデータのみの前記モジュールを前記ファイル管理部がファイルとして作成して、これを前記メタデータ管理部によって他のコンピュータと共有すること、を特徴とする請求項7に記載の分散処理方法。
  9. 前記複数台のコンピュータのうちの1台が前記分散バッチアプリの分散実行を管理するマスターノードであり、前記マスターノードを除く他のコンピュータがスレーブノードであると共に、
    前記初期化処理の後で、前記メタデータのみの前記モジュールを前記マスターノードのファイル管理部がファイルとして作成して、これを前記スレーブノードに送信すること、を特徴とする請求項8に記載の分散処理方法。
  10. 複数台のコンピュータが相互に接続され、これらのコンピュータによって分散バッチアプリを協調して分散実行する分散処理システムにあって、
    前記コンピュータに、
    前記分散バッチアプリを構成する各モジュールのうち初期化処理のコマンドを含むメタデータを取得する手順、
    前記メタデータによって初期化処理を行う手順、
    前記初期化処理の後で、当該モジュールの実行コードを含む実行領域が前記記憶手段に存在するか否かを調べる手順、
    前記実行コードを含む実行領域が前記記憶手段に存在しない場合、他のコンピュータから前記実行コードを読み込んでこれを前記実行領域として書き込む手順、
    および前記実行コードを含む当該モジュールを実行する手順
    を実行させること、を特徴とする分散処理プログラム。
JP2015519933A 2013-05-31 2014-05-29 分散処理システム、分散処理装置、分散処理方法および分散処理プログラム Active JP6052406B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013115527 2013-05-31
JP2013115527 2013-05-31
PCT/JP2014/064257 WO2014192867A1 (ja) 2013-05-31 2014-05-29 分散処理システム、分散処理装置、分散処理方法および分散処理プログラム

Publications (2)

Publication Number Publication Date
JP6052406B2 JP6052406B2 (ja) 2016-12-27
JPWO2014192867A1 true JPWO2014192867A1 (ja) 2017-02-23

Family

ID=51988890

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015519933A Active JP6052406B2 (ja) 2013-05-31 2014-05-29 分散処理システム、分散処理装置、分散処理方法および分散処理プログラム

Country Status (4)

Country Link
US (1) US9733977B2 (ja)
JP (1) JP6052406B2 (ja)
CN (1) CN105474177B (ja)
WO (1) WO2014192867A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106383846A (zh) * 2016-08-31 2017-02-08 天津南大通用数据技术股份有限公司 一种分布式数据库系统数据的加载方法及装置
CN108170820B (zh) * 2018-01-02 2022-04-22 联想(北京)有限公司 一种容器处理方法、控制服务器及分布式集群
CN108919756B (zh) * 2018-06-25 2020-07-28 首都师范大学 一种cps节点功能处理方法的加载与调用方法
CN108829624B (zh) * 2018-06-25 2021-04-06 首都师范大学 一种cps节点属性数据与功能方法代码的存储组织方法
US11150926B2 (en) * 2019-02-22 2021-10-19 International Business Machines Corporation Native code generation for cloud services
KR102090911B1 (ko) * 2019-12-16 2020-03-19 주식회사 케이비시스 컨테이너 기반의 클라우드 서비스 제공 시스템
CN111625374B (zh) * 2020-05-15 2023-06-27 北京达佳互联信息技术有限公司 一种任务处理方法、终端和存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3845497B2 (ja) * 1997-07-29 2006-11-15 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システム
US6574635B2 (en) 1999-03-03 2003-06-03 Siebel Systems, Inc. Application instantiation based upon attributes and values stored in a meta data repository, including tiering of application layers objects and components
US7325047B2 (en) 2001-05-23 2008-01-29 International Business Machines Corporation Dynamic undeployment of services in a computing network
JP2004342042A (ja) 2003-05-19 2004-12-02 Will Being:Kk 分散環境における通信方法及び通信システム
US7415704B2 (en) * 2004-05-20 2008-08-19 Sap Ag Sharing objects in runtime systems
JP2006155187A (ja) 2004-11-29 2006-06-15 Sony Corp 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム。
US7831972B2 (en) * 2005-11-03 2010-11-09 International Business Machines Corporation Method and apparatus for scheduling jobs on a network
US9390015B2 (en) * 2006-03-16 2016-07-12 International Business Machines Corporation Method for performing cacheline polling utilizing a store and reserve instruction
CN101206589B (zh) * 2006-12-19 2010-09-01 国际商业机器公司 用于执行库存扫描的方法与系统
JP2008171277A (ja) 2007-01-12 2008-07-24 Canon Inc メタデータ配置装置及びその制御方法、コンピュータプログラム
US20090007096A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Secure Software Deployments
US7503047B1 (en) * 2008-04-08 2009-03-10 International Business Machines Corporation System and method for enhancing the sharing of application libraries between different JVM's and systems with a dynamic relocation based on usage patterns
US8181178B2 (en) * 2008-08-14 2012-05-15 Yahoo! Inc. Online batch execution
JP2011034137A (ja) 2009-07-29 2011-02-17 Toshiba Corp 分散処理装置及び分散処理方法
JP2012063832A (ja) 2010-09-14 2012-03-29 Nec Corp 分散処理システム、分散処理方法、及びコンピュータプログラム
CN102567042B (zh) * 2010-12-14 2015-04-15 国际商业机器公司 利用引导块重定位来管理多个软件镜像的方法和系统
JP6051733B2 (ja) * 2012-09-25 2016-12-27 日本電気株式会社 制御システム、制御方法、及び、制御プログラム

Also Published As

Publication number Publication date
CN105474177B (zh) 2019-06-04
US9733977B2 (en) 2017-08-15
JP6052406B2 (ja) 2016-12-27
WO2014192867A1 (ja) 2014-12-04
CN105474177A (zh) 2016-04-06
US20160070591A1 (en) 2016-03-10

Similar Documents

Publication Publication Date Title
JP6052406B2 (ja) 分散処理システム、分散処理装置、分散処理方法および分散処理プログラム
CN107515776B (zh) 业务不间断升级方法、待升级节点和可读存储介质
KR102310187B1 (ko) 복수의 엣지와 클라우드를 포함하는 분산 컴퓨팅 시스템 및 이의 적응적 지능 활용을 위한 분석 모델 제공 방법
KR102184512B1 (ko) 관리 방법 및 디바이스
US20170249177A1 (en) Extending user interface of a web console
CN112698921A (zh) 一种逻辑代码运行方法、装置、计算机设备和存储介质
US10203976B2 (en) Virtual appliance management in a virtualized computing environment based on operational modes associated with virtual appliance
Hardikar et al. Containerization: cloud computing based inspiration Technology for Adoption through Docker and Kubernetes
US9940329B2 (en) System and method for providing a climate data persistence service
KR20200102293A (ko) Sql 쿼리에 해당하는 동작을 수행할 수 있는 블록체인 소프트웨어, 블록체인 시스템, 및 이의 동작 방법
Alam et al. Software defined networks: Review and architecture
US10884774B2 (en) Virtual node deployments of cluster-based applications modified to exchange reference to file systems
Osrael et al. Axis2-based replication middleware forweb services
US20180341475A1 (en) Just In Time Deployment with Package Managers
CN110837394B (zh) 一种高可用配置版本仓库配置方法、终端及可读介质
Jang et al. A Framework for Model-Sharing of Augmented Intelligence in Container-based Modular Robot Using Cloud System
US20180217870A1 (en) System And Method For Multi-Tiered Real Time Processing Using Configurable Platform Instances
WO2022057698A1 (en) Efficient bulk loading multiple rows or partitions for single target table
KR102405890B1 (ko) 데이터 초기 복제 방법 및 이를 수행하기 위한 컴퓨팅 장치
CN115858013B (zh) 一种多研发项目并行的资源配置方法、系统、装置及介质
CN117827363A (zh) 一种容器创建方法、系统及节点
CN116094897A (zh) 一种网页配置方法、装置及存储介质
CN117992419A (zh) 一种基于hdfs系统的数据处理方法及装置
KR101345802B1 (ko) 룰 데이터 처리 시스템 및 그 방법
CN117251182A (zh) 基于Kubernetes容器化的持续集成部署方法、装置、设备及介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161005

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: 20161101

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161114

R150 Certificate of patent or registration of utility model

Ref document number: 6052406

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150