JPWO2011074699A1 - 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法 - Google Patents

分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法 Download PDF

Info

Publication number
JPWO2011074699A1
JPWO2011074699A1 JP2011546196A JP2011546196A JPWO2011074699A1 JP WO2011074699 A1 JPWO2011074699 A1 JP WO2011074699A1 JP 2011546196 A JP2011546196 A JP 2011546196A JP 2011546196 A JP2011546196 A JP 2011546196A JP WO2011074699 A1 JPWO2011074699 A1 JP WO2011074699A1
Authority
JP
Japan
Prior art keywords
data
processing
load
server
complete data
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
JP2011546196A
Other languages
English (en)
Other versions
JP5929196B2 (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
Publication of JPWO2011074699A1 publication Critical patent/JPWO2011074699A1/ja
Application granted granted Critical
Publication of JP5929196B2 publication Critical patent/JP5929196B2/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Logic Circuits (AREA)

Abstract

データを記憶する複数の装置と、データを処理可能な複数の装置を含むシステムで、どの装置間でデータを転送するのが適切であるか決定できない。管理装置は、複数の処理装置の識別子jと、一以上の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上のデータ装置の識別子(データ装置リストi)、を取得して、取得した各処理装置と各データ装置間の単位データ量毎の通信負荷に基づいて、各処理装置が、各完全データ集合の単位データ量を、データ装置リスト内のデータ装置から受信する通信負荷cijを含むc’ijを算出する負荷算出部と、各処理装置が各完全データ集合を受信する0以上の通信量fijを、fijc’ijを含む値の所定和が最小となるように決定する処理割当部、を備える。

Description

本発明は、分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法に関する。
非特許文献1乃至3は、複数の計算機に格納されたデータを、どの複数の計算サーバに送信し、処理させるかを決定する分散システムを開示する。同システムは、個々のデータを格納するサーバから最も近傍な利用可能計算サーバを逐次決定して、全体の通信を決定する。
特許文献1は、一台の計算機に格納されたデータを一台のクライアント300に転送するに際して、データ転送時間が最小となるように中継サーバを移動させるシステムを開示する。
特許文献2は、ファイル転送元マシンからファイル転送先マシンへのファイル転送時に、各転送経路の回線速度と負荷状況に応じて、分割転送するシステムを開示する。
特許文献3は、一台のジョブ分散装置が、ジョブの実行に必要なデータを分割して、複数のネットワークセグメントのそれぞれに複数配置される計算サーバに送信するシステムを開示する。本システムは、データを各ネットワークセグメント単位に一旦蓄積させることで、ネットワーク負荷を低減する。
特許文献4は、プロセッサ間の距離を示す通信グラフを作成し、当該グラフに基づいて、通信スケジュールを作成する技術を開示する。
Jeffrey Dean and Sanjay Ghemawat,"MapReduce:Simplified Data Processing on Large Clusters″,Proceedings of the sixth Symposium on Operating System Design and Implementation(OSDI’04),2004年12月6日 Sanjay Ghemawat,Howard Gobioff,and Shun−Tak Leung,"The Google File System″,Proceedings of the nineteenth ACM symposium on Operating systems principles(SOSP’03),2003年10月19日 西田圭介,Googleを支える技術,p.74、p136−p163,2008年4月25日 特開平8−202726 特開2001−320439 特開2006−236123 特開平9−330304
上記特許文献の技術は、データを記憶する複数のサーバと、当該データを処理可能な複数のサーバが分散配置されるシステムに於いて、どのサーバからどのサーバにデータを転送するのが適切であるかを決定できない。
特許文献1及び2の技術は、一対一のデータ転送を最適化しているに過ぎない。非特許文献1乃至3の技術も、一対一のデータ転送を逐次的に最適化しているに過ぎない(図2Aを参照)。特許文献3の技術は、一対Nのデータ転送技術を開示するに過ぎない。特許文献4の技術は、データ転送コストを小さくしない。
本発明の目的は、上記課題を解決する分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法を提供することである。
本発明の一実施形態の分散処理管理サーバは、複数の処理サーバの識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータサーバの識別子(データサーバリストi)、を取得して、取得した各処理サーバと各データサーバ間の単位データ量毎の通信負荷(サーバ間通信負荷)に基づいて、各処理サーバが、各完全データ集合の単位データ量を、各完全データ集合のデータサーバリスト内のデータサーバから受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出する負荷算出手段と、各処理サーバが各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する処理割当手段、を備える。
本発明の一実施形態のコンピュータ読み取り可能な記録媒体に格納された分散処理管理プログラムは、コンピュータに、複数の処理サーバの識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータサーバの識別子(データサーバリストi)、を取得して、取得した各処理サーバと各データサーバ間の単位データ量毎の通信負荷(サーバ間通信負荷)に基づいて、各処理サーバが、各完全データ集合の単位データ量を、各完全データ集合のデータサーバリスト内のデータサーバから受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出する負荷算出処理と、各処理サーバが各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する処理割当処理、を実行させる。
本発明の一実施形態の分散処理管理方法は、複数の処理サーバの識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータサーバの識別子(データサーバリストi)、を取得して、取得した各処理サーバと各データサーバ間の単位データ量毎の通信負荷(サーバ間通信負荷)に基づいて、各処理サーバが、各完全データ集合の単位データ量を、各完全データ集合のデータサーバリスト内のデータサーバから受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出し、各処理サーバが各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する。
本発明は、複数のデータ格納サーバと複数の処理可能サーバが与えられた際に、全体として適切なサーバ間のデータ送受信を実現出来る。
図1Aは、第1の実施形態にかかる分散システム340の構成図である。 図1Bは、分散システム340の構成例を示す。 図2Aは、分散システム340の非効率な通信例を示す。 図2Bは、分散システム340の効率的な通信例を示す。 図3は、クライアント300、分散処理管理サーバ310、処理サーバ320及びデータサーバ330の構成を示す。 図4はクライアント300に入力される利用者プログラムを例示する。 図5Aは、データ集合とデータ要素の例を示す。 図5Bは、データ集合の分散形態を示す。 図6Aは、データ所在格納部3120に格納される情報を例示する。 図6Bは、サーバ状態格納部3110に格納される情報を例示する。 図6Cは決定情報の構成を例示する。 図6Dは、通信負荷行列Cの一般的な構成を例示する。 図6Eは、第1の実施の形態に於ける通信負荷行列Cを例示する。 図7Aは、本実施の形態が説明する、データサーバ330が格納するデータ量と分割処理の組み合わせを示す(1/2)。 図7Bは、本実施の形態が説明する、データサーバ330が格納するデータ量と分割処理の組み合わせを示す(2/2)。 図8は、分散システム340の全体動作フローチャートである。 図9は、ステップ801のクライアント300の動作フローチャートである。 図10は、ステップ802の分散処理管理サーバ310の動作フローチャートである。 図11は、ステップ803の分散処理管理サーバ310の動作フローチャートである。 図12は、ステップ805の分散処理管理サーバ310の動作フローチャートである。 図13は、第3の実施の形態のクライアント300に入力される利用者プログラムを例示する。 図14は、第3の実施の形態のクライアント300に入力される他の利用者プログラムを例示する。 図15は、第3の実施の形態のステップ802及び803の分散処理管理サーバ310の動作フローチャートである。 図16は、データ要素の出現順で関連付けるassociated指定時のデータサーバリストの集合を例示する。 図17は、第4の実施の形態のステップ803の分散処理管理サーバ310の動作フローチャートである。 図18Aは、第1の実施の形態等の具体例で使用される分散システム340の構成を示す。 図18Bは、分散処理管理サーバ310が備える、サーバ状態格納部3110に格納される情報を示す。 図18Cは、分散処理管理サーバ310が備える、データ所在格納部3120に格納される情報を示す。 図18Dは、クライアント300に入力される利用者プログラムを示す。 図18Eは通信負荷行列Cを示す。 図18Fは流量行列Fを示す。 図18Gは、図18Fの流量行列Fに基づいて決定される、データ送受信を示す。 図19Aは、第2の実施の形態の具体例で入力される利用者プログラムを示す。 図19Bは、第2の実施の形態の第1例におけるデータ所在格納部3120に格納されている情報を示す。 図19Cは通信負荷行列Cを示す。 図19Dは流量行列Fを示す。 図19Eは、図19Dの流量行列Fに基づいて決定される、データ送受信を示す。 図19Fは、処理割当部314による流量行列F作成の動作フローチャート例である。 図19Gは、目的関数最小化における行列変換過程を示す。 図19Hは、第2の実施の形態の第2例におけるデータ所在格納部3120に格納されている情報を示す。 図19Iは通信負荷行列Cを示す。 図19Jは示す流量行列Fを示す。 図19Kは、図19Jの流量行列Fに基づいて決定される、データ送受信を示す。 図20Aは、第3の実施の形態の第1例のデータ所在格納部3120が格納する情報を示す。 図20Bは、第1例の分散システム340の構成を示す。 図20Cは通信負荷行列Cを示す。 図20Dは流量荷行列Fを示す。 図20Eは、第3の実施の形態の第2例のデータ所在格納部3120が格納する情報を示す。 図20Fは、第2例の分散システム340の構成を示す。 図20Gは、負荷算出部313のデータサーバリスト取得の動作フローチャートである。 図20Hは、図20Gの処理で使用される第1のデータ集合(MyDataSet1)用の作業表を示す。 図20Iは、図20Gの処理で使用される第2のデータ集合(MyDataSet2)用の作業表を示す。 図20Jは、図20Gの処理で作成される出力リストを示す。 図20Kは通信負荷行列Cを示す。 図20Lは流量荷行列Fを示す。 図21Aは、第4の実施形態の具体例の分散システム340の構成を示す。 図21Bは、データ所在格納部3120に格納されている情報を示す。 図21Cは、符号化された部分データの復元例を示す。 図21Dは通信負荷行列Cを示す。 図21Eは流量行列Fを示す。 図22Aは、第5の実施の形態の第1例の具体例のステム構成を示す。 図22Bは通信負荷行列Cを示す。 図22Cは流量行列Fを示す。 図22Dは、サーバ間負荷取得部318等が計測したサーバ間帯域を示す。 図22Eは通信負荷行列Cを示す。 図22Fは流量行列Fを示す。 図23は、分散処理管理サーバ310、複数のデータサーバ330、複数の処理サーバ320に加え、複数のアウトプットサーバ350を包含する分散システム340を示す。 図24は、基本構成の実施の形態を示す。
300 クライアント
301 構造プログラム格納部
302 処理プログラム格納部
303 処理要求部
304 処理要件格納部
310 分散処理管理サーバ
313 負荷算出部
314 処理割当部
315 メモリ
316 作業域
317 分散処理管理プログラム
318 サーバ間負荷取得部
320 処理サーバ
321 Pデータ格納部
322 Pサーバ管理部
323 プログラムライブラリ
330 データサーバ
331 Dデータ格納部
332 Dサーバ管理部
340 分散システム
350 アウトプットサーバ
3110 サーバ状態格納部
3111 PサーバID
3112 負荷情報
3113 構成情報
3120 データ所在格納部
3121 データ集合名
3122 分散形態
3123 部分データ記述
3124 ローカルファイル名
3125 DサーバID
3126 データ量
3127 部分データ名
図1Aは、第1の実施形態にかかる分散システム340の構成図である。分散システム340は、ネットワーク350で接続された分散処理管理サーバ310、複数の処理サーバ320、複数のデータサーバ330を包含する。分散システム340は、クライアント300や図示されない他のサーバを包含していても良い。
分散処理管理サーバ310は分散処理管理装置、処理サーバ320は処理装置、データサーバ330はデータ装置、クライアント300は端末装置とも呼ばれる。
各データサーバ330は、処理の対象となるデータを記憶している。各処理サーバ320は、データサーバ330からデータを受信して処理プログラムを実行し、当該データを処理する処理能力を有する。
クライアント300は、データ処理開始を分散処理管理サーバ310に要求する。分散処理管理サーバ310は、どの処理サーバ320がどのデータサーバ330からどれだけデータを受信するかを決定して決定情報を出力する。各データサーバ330及び処理サーバ320は、当該決定情報に基づくデータ送受信を行う。処理サーバ320は受信したデータを処理する。
ここで、分散処理管理サーバ310、処理サーバ320、データサーバ330、クライアント300は、専用の装置であっても汎用のコンピュータであっても良い。また、一台の装置又はコンピュータ(コンピュータ等)が、分散処理管理サーバ310、処理サーバ320、データサーバ330、クライアント300(分散処理管理サーバ310等)のうちの複数の機能を有しても良い。多くの場合、一台のコンピュータ等が処理サーバ320及びデータサーバ330の両者として機能する。
図1B、図2A、及び、図2Bは、分散システム340の構成例を示す。これらの図に於いては、処理サーバ320及びデータサーバ330は、コンピュータとして記述されている。ネットワーク350は、スイッチを経由するデータ送受信経路として記述されている。分散処理管理サーバ310は明記されていない。
図1Bにおいて、分散システム340は、例えば、コンピュータ113〜115と、それらを接続するスイッチ104及び107〜109とを包含する。コンピュータ及びスイッチは、ラック110〜112に収容され、さらにそれらはデータセンタ101〜102に収容され、データセンタ間は拠点間通信103にて接続されている。
図1Bは、スイッチとコンピュータをスター型に接続した分散システム340を例示する。図2A及び図2Bは、カスケード接続されたスイッチにより構成された分散システム340を例示する。
図2A及び図2Bは、それぞれ、データサーバ330と処理サーバ320間のデータ送受信の一例を示す。両図に於いて、コンピュータ205と206がデータサーバ330として機能し、コンピュータ207と208が処理サーバ320として機能する。なお、本図に於いて、例えばコンピュータ220が、分散処理管理サーバ310として機能している。
図2A及び図2Bに於いて、スイッチ202〜204で接続されたコンピュータのうち、207及び208以外は他の処理を実行中で利用不可能である。その利用不可能なコンピュータのうちコンピュータ205及び206は、それぞれ処理対象のデータ209及び210を記憶している。利用可能なコンピュータ207及び208は、処理プログラム211及び212を備えている。
図2Aにおいて、処理対象のデータ209は、データ送受信経路213で伝送されて、利用可能コンピュータ208で処理される。処理対象データ210は、データ送受信経路214で伝送されて、利用可能コンピュータ207で処理される。
一方、図2Bにおいては、処理対象データ209は、データ送受信経路234で伝送され、利用可能コンピュータ207で処理される。処理対象データ210は、データ送受信経路233で伝送され、利用可能コンピュータ208で処理される。
図2Aにおけるデータ送受信ではスイッチ間通信が3回あるのに対して、図2Bにおけるデータ送受信では1回である。図2Bにおけるデータ送受信は、図2Aにおけるデータ送受信に較べて通信負荷が低く、効率的である。
各処理対象データについて逐次的に、構成的な距離に基づいていてデータ送受信を行うコンピュータを決定するシステムは、図2Aに示したような非効率な送受信を行うことがある。例えば、先に処理対象データ209に注目し、利用可能コンピュータとして207と208を検出し、構成的に近いコンピュータ208を処理サーバ320として選択するシステムは、結果的に図2Aに示した送受信を行う。
本実施形態の分散システム340は、図2A及び図2Bに例示した状況において、図2Bで示した効率的なデータ送受信を行う可能性を高める。
図3は、クライアント300、分散処理管理サーバ310、処理サーバ320及びデータサーバ330の構成を示す。一台のコンピュータ等が、分散処理管理サーバ310等のうちの複数の機能を有するとき、当該コンピュータ等が有する構成は、例えば、分散処理管理サーバ310等の複数の構成を足し合わせたものとなる。この場合、コンピュータ等は、共通的な構成要素を重複して持たず、共用しても良い。
例えば、分散処理管理サーバ310が、処理サーバ320としても動作する場合、当該サーバの構成は、例えば、分散処理管理サーバ310と処理サーバ320の各々の構成を足し合わせたものとなる。Pデータ格納部321とDデータ格納部331は、共通の格納部で有っても良い。
処理サーバ320は、Pデータ格納部321、Pサーバ管理部322、プログラムライブラリ323を包含する。Pデータ格納部321は、分散システム340において一意に識別されるデータを格納する。このデータの論理的な構成は後述される。Pサーバ管理部322は、Pデータ格納部321に格納されたデータを対象に、クライアント300が要求した処理を実行する。Pサーバ管理部322は、プログラムライブラリ323に格納された処理プログラムを実行して、当該処理を実行する。
処理対象のデータは、分散管理サーバ310から指定されたデータサーバ330から受信されてPデータ格納部321に格納される。処理サーバ320がデータサーバ330と同一のコンピュータ等である場合、処理対象のデータは、クライアント300が処理依頼をする以前から予めPデータ格納部321に格納されていても良い。
処理プログラムは、クライアント300の処理依頼時にクライアント300から受信してプログラムライブラリ323に格納される。処理プログラムは、データサーバ330、又は分散処理管理サーバ310から受信されても良いし、クライアント300の処理依頼以前から予めプログラムライブラリ323に格納されていても良い。
データサーバ330は、Dデータ格納部331、Dサーバ管理部332を包含する。Dデータ格納部331は、分散システム340において一意に識別されるデータを格納する。データは、データサーバ330が出力したもの又は出力中のものであっても、他のサーバ等から受信したものでも、記憶媒体等から読み込んだものでも良い。
Dサーバ管理部332は、Dデータ格納部331に格納されたデータを分散処理管理サーバ310から指定された処理サーバ320に送信する。データの送信要求は、処理サーバ320又は分散処理管理サーバ310から受信する。
クライアント300は、構造プログラム格納部301、処理プログラム格納部302、処理要求部303、処理要件格納部304を包含する。
構造プログラム格納部301は、データに対する処理の与え方や処理によって得られるデータの構造情報を格納する。クライアント300の利用者が、これらの情報を指定する。
構造プログラム格納部301は、指定したデータの集合に対して各々に同一処理を施すといった構造に関する情報、同一処理を施して得られるデータ集合の格納先に関する情報、又は得られたデータ集合を別の後段の処理が受け取るといった構造情報を格納する。構造情報は、例えば、指定入力データ集合に対して指定した処理を前段で実行し、後段で前段処理の出力データを集約する等の構造を規定する情報である。
処理プログラム格納部302は、指定されたデータ集合やそれに含まれるデータ要素に対して、どのような処理を施すかを記した処理プログラムを格納するものである。ここに格納された処理プログラムが、例えば、処理サーバ320に配布実行されて、当該処理が行われる。
処理要件格納部304は、当該処理を分散システム340で実行する際に、利用する処理サーバ320の量に関する要求を格納する。処理サーバ320の量は、台数で指定されても、CPU(Central Processing Unit)クロック数に基づく処理能力換算値で指定されても良い。さらに、処理要件格納部304は、処理サーバ320の種別に関する要求も格納しても良い。処理サーバ320の種別とは、OS(Operating System)、CPU、メモリ、周辺装置に関する種別であっても、メモリ量等、それらに関する定量的な指標であっても良い。
構造プログラム格納部301、処理プログラム格納部302、及び、処理要件格納部304に格納される情報は、利用者プログラム、又は、システムパラメータとしてクライアント300に与えられる。
図4はクライアント300に入力される利用者プログラムを例示する。利用者プログラムは、(a)構造プログラムと(b)処理プログラムから構成される。構造プログラムと処理プログラムは、利用者により直接記述されることもあるし、利用者が記述したアプリケーションプログラムがコンパイル等された結果、コンパイラ等により生成されることもある。構造プログラムは、処理対象データ名、処理プログラム名、処理要件を記述する。処理対象データ名は、例えば、set_data句の引数として記述される。処理対象プログラム名は、例えば、set_map句又はset_reduce句の引数として記述される。処理要件は、例えば、set_config句の引数として記述される。
図4に於ける構造プログラムは、例えば、MyDataSetというデータ集合に対してMyMapという処理プログラムを、その出力結果に対してMyReduceという処理プログラムを適用することを記述している。さらに、構造プログラムは、MyMapは4台、MyReduceは2台の処理サーバ320で並列に処理すべきであることを記述している。図4の(c)構造図は利用者プログラムの構造を表現した図である。
この構造図は明細書の理解を容易にする目的で追記されたものであり、利用者プログラムに含まれない。このことは、以降の図に記述される利用者プログラムについても当てはまる。
処理プログラムはデータ処理手順を記述する。図4に於ける処理プログラムは、例えば、MyMap及びMyReduceという処理手続きをプログラム言語で具体的に記述する。
分散処理管理サーバ310は、データ所在格納部3120、サーバ状態格納部3110、負荷算出部313、サーバ間負荷取得部318及び処理割当部314、メモリ315を包含する。
データ所在格納部3120には、分散システム340において一意に識別されるデータ集合の名称に対して、そのデータ集合に所属するデータを格納しているデータサーバ330の識別子が一以上格納されている。
データ集合は、一以上のデータ要素の集合である。データ集合は、データ要素の識別子の集合、データ要素群の識別子の集合、共通条件を満足するデータの集合として定義されても良いし、これらの集合の和集合や積集合として定義されても良い。
データ要素は、一つの処理プログラムの入力又は出力の単位となる。データ集合は構造プログラムにおいて、図4の構造プログラムに示したように、識別名で明示的に指定されても、指定した処理プログラムの出力結果等、他の処理との関係により指定されても良い。
データ集合とデータ要素は、典型的にはファイルとファイル内のレコードに対応するが、この対応に限られない。図5Aは、データ集合とデータ要素の例を示す。同図は、分散ファイルシステムにおける対応を例示する。
処理プログラムが引数として受け取る単位が個々の分散ファイルである場合、データ要素は各分散ファイルである。この場合、データ集合は分散ファイルの集合であり、例えば、分散ファイルディレクトリ名、複数の分散ファイル名の列挙、あるいは、ファイル名に対する共通条件指定によって特定される。データ集合は、複数の分散ファイルディレクトリ名の列挙であっても良い。
処理プログラムが引数として受け取る単位が行又はレコードである場合、データ要素は分散ファイル中の各行又は各レコードとなる。この場合、データ集合は、例えば、分散ファイルである。
データ集合がリレーショナル・データベースにおけるテーブルであって、データ要素が当該テーブルの各行であっても良い。データ集合がC++やJava(登録商標)等のプログラムのMapやVector等のコンテナであって、データ要素がコンテナの要素であってもよい。さらに、データ集合が行列であって、データ要素が、行、列、あるいは行列要素であっても良い。
このデータ集合と要素の関係は、処理プログラムの内容で規定される。この関係は、構造プログラムに記述されていても良い。
データ集合及びデータ要素が何れの場合であっても、データ集合の指定やデータ要素の複数登録により、処理対象のデータ集合が定まり、これを格納するデータサーバ330との対応付けが、データ所在格納部3120に格納される。
各データ集合は、複数の部分集合(部分データ)に分割されて、複数のデータサーバ330に分散配置されていても良い(図5B(a))。図5Bにおいて、サーバ501〜552は、データサーバ330である。
ある分散データが各々2以上のデータサーバ330に多重化されて配置されていても良い(図5B(b))。処理サーバ320は、多重化されたデータ要素を処理するために、多重化された分散データの何れかの一つからデータ要素を入力すれば良い。
ある分散データが各々n(3以上)台のデータサーバ330に符号化されて配置されていても良い(図5B(c))。ここで、符号化は、公知のErasure符号あるいはQuorum方式等を用いて行われる。処理サーバ320は、データ要素を処理するために、符号化された分散データの最低取得数k個(kはnより小さい)からデータ要素を入力すれば良い。
図6Aは、データ所在格納部3120に格納される情報を例示する。データ所在格納部3120は、データ集合名3121又は部分データ名3127毎の複数の行を格納する。データ集合(例えば、MyDataSet1)が分散配置されている場合、当該データ集合の行は、その旨の記述(分散形態3122)、並びに当該データ集合に属する部分データ毎に部分データ記述3123を包含する。
部分データ記述3123は、ローカルファイル名3124、DサーバID3125、及びデータ量3126の組を包含する。DサーバID3125は、当該部分データを格納するデータサーバ330の識別子である。当該識別子は、分散システム340内一意の名称でも良いしIPアドレスでも良い。ローカルファイル名3124は、当該部分データが格納されるデータサーバ330内で一意のファイル名である。データ量3126は、当該部分データの大きさを示すギガバイト(GB)数等である。
データ集合(MyDataSet5等)の一部又は全ての部分データが多重化あるいは符号化等されているとき、当該データ集合に対応する行は、分散配置の記述(分散形態3122)、並びに当該部分データの部分データ名3127(SubSet1、SubSet2等)が格納される。このとき、データ所在格納部3120は、当該部分データ名3127対応の行(例えば、図6Aの6、7行目)を格納する。
部分データ(例えば、SubSet1)が多重化(例えば二重化)されている場合、当該部分データの行は、その旨の記述(分散形態3122)、並びに、部分データの多重化データ毎に部分データ記述3123を包含する。当該部分データ記述3123は、部分データの多重化データを格納するデータサーバ330の識別子(DサーバID3125)、データサーバ330内で一意のファイル名(ローカルファイル名3124)及びデータの大きさ(データ量3126)を格納する。
部分データ(例えば、SubSet2)が符号化されている場合、当該部分データの行は、その旨の記述(分散形態3122)、並びに、部分データの符号化データ毎に部分データ記述3123を包含する。当該部分データ記述3123は、部分データの符号化データを格納するデータサーバ330の識別子(DサーバID3125)、データサーバ330内で一意のファイル名(ローカルファイル名3124)及びデータの大きさ(データ量3126)を格納する。分散形態3122は、符号化されたn個のデータ中、任意のk個のデータを取得すれば部分データが復元できる旨の記述も包含している。
データ集合(例えば、MyDataSet2)は、部分データに分割されずに多重化されても良い。この場合、当該データ集合の行の部分データ記述3123は、データ集合の多重化データ対応に存在する。当該部分データ記述3123は、多重化データを格納するデータサーバ330の識別子(DサーバID3125)、データサーバ330内で一意のファイル名(ローカルファイル名3124)及びデータの大きさ(データ量3126)を格納する。
データ集合(例えば、MyDataSet3)は、部分データに分割されずに符号化されても良い。データ集合(例えば、MyDataSet4)は、部分データに分割も、冗長化も、符号化もされていなくても良い。
なお、分散システム340が扱うデータ集合の分散態様が単一である場合、データ所在格納部3120は、分散形態3122の記述を包含しなくても良い。簡単のため、以降の実施形態の説明は、原則的にデータ集合の分散態様が上述した何れか単一の態様であることを仮定して与えられる。複数の形態の組み合わせに対応するためには、分散処理管理サーバ310等は、分散形態3122の記述に基づいて、以降説明する処理を切り替える。
処理対象のデータは、クライアント300がデータ処理を要求するより以前に、Dデータ格納部331格納されている。処理対象のデータは、クライアント300がデータ処理を要求するときに、クライアント300やその他のサーバ等がデータサーバ330に与えても良い。
なお、図3は、この分散処理管理サーバ310が、特定の一台のコンピュータ等内に存在する場合を示しているが、サーバ状態格納部3110やデータ所在格納部3120が分散ハッシュテーブル等の技術にて分散した装置に格納されていても良い。
図6Bは、サーバ状態格納部3110に格納される情報を例示する。サーバ状態格納部3110は、分散システム340内で運転されている処理サーバ320毎に、PサーバID3111、負荷情報3112及び構成情報3113を格納する。PサーバID3111は、処理サーバ320の識別子である。負荷情報3112は、処理サーバ320の処理負荷に関する情報、例えば、CPU利用率、入出力ビジー率を包含する。構成情報3113は、処理サーバ320の構成や設定の状態情報、例えば、OSやハードウェアの仕様を包含する。
サーバ状態格納部3110やデータ所在格納部3120に格納される情報は、処理サーバ320やデータサーバ330からの状態通知によって更新されても、分散処理管理サーバ310が状態を問い合わせて得られた応答情報によって更新されても良い。
処理割当部314は、クライアント300の処理要求部303からデータ処理要求を受け付ける。処理割当部314は、当該処理のために利用する処理サーバ320を選択し、どの処理サーバ320がどのデータサーバ330からデータ集合を取得して処理すべきかを決定し、決定情報を出力する。
図6Cは決定情報の構成を例示する。図6Cに例示される決定情報は、処理割当部314により各処理サーバ320に送信される。決定情報は、受信した処理サーバ320が、どのデータサーバ330から、どのデータ集合を受信すべきかを特定する。一台のデータサーバ330のデータを複数の処理サーバ320が受信するような場合(図7Aの704で後述)、決定情報は受信データ特定情報も包含する。受信データ特定情報は、データ集合内のどのデータが受信対象であるかを特定する情報であり、例えば、データの識別子集合、データサーバ330のローカルファイル内の区間指定(開始位置、転送量)である。受信データ特定情報は、間接的にデータ転送量を規定する。決定情報を受信した各処理サーバ320は、当該情報で特定されたデータサーバ330にデータ送信を要求する。
なお、決定情報は、処理割当部314により各データサーバ330に送信されても良い。この場合、決定情報は、どの処理サーバ320へ、どのデータ集合のどのデータを送信すべきかを特定する。
処理割当部314がクライアント300から受け付けるデータ処理要求は、データ処理対象のデータ集合名3121、処理内容を表す処理プログラム名、処理プログラムとデータ集合間の関係を記述する構造プログラム、並びに、処理プログラム実体を包含する。分散処理管理サーバ310又は処理サーバ320が処理プログラムを既に備えている場合、データ処理要求は、処理プログラムの実体を含まなくても良い。また、データ処理対象のデータ集合名3121、処理内容を表す処理プログラム名、処理プログラムとデータ集合間の関係が固定的であれば、データ処理要求は構造プログラムを含まなくても良い。
また、データ処理要求は、当該処理に利用する処理サーバ320の処理要件として、制約と数量を包含しても良い。制約は、選択する処理サーバ320のOSやハードウェア仕様等である。数量は、利用するサーバ台数やCPUコア数、あるいはそれに類する数量である。
データ処理要求を受け付けると、処理割当部314は負荷算出部313を起動する。負荷算出部313は、データ所在格納部3120を参照して、完全データ集合に所属するデータを格納したデータサーバ330のリスト、例えばデータサーバ330の識別子のリスト(データサーバリスト)の集合を取得する。
完全データ集合は、処理サーバ320が処理を実行するために必要となるデータ要素の集合である。完全データ集合は構造プログラムの記述(set_data句)等から決定される。例えば、図4の(a)に示す構造プログラムは、MyMap処理の完全データ集合がMyDataSetのデータ要素の集合であることを示している。
構造プログラムが処理対象として一つのデータ集合を指定し、当該データ集合が、分散配置されて各分散データが多重化も符号化もなされていないとき(例えば、図6AのMyDataSet1)は、各部分データ又は各部分データの一部が完全データ集合となる。このとき、各データサーバリストは、各部分データを格納する一台のデータサーバ330の識別子(DサーバID3125)であり、要素数が1のリストとなる。例えば、MyDataSet1の最初の完全データ集合、即ち部分データ(d1,j1,s1)のサーバリストはj1という要素数が1のリストである。MyDataSet1の2番目の完全データ集合、即ち部分データ(d2,j2,s2)のサーバリストはj2という要素数が1のリストである。従って、負荷算出部313は、データサーバリストの集合として、j1、j2を取得する。
なお、他の分散形態3122のデータ集合を対象にした処理は、後続する実施形態で説明される。
次に、負荷算出部313は、サーバ状態格納部3110を参照してデータ処理に利用可能な処理サーバ320を選択して、その識別子集合を取得する。ここで、負荷算出部313は、負荷情報3112を参照して、処理サーバ320がデータ処理に利用可能か否かを判断しても良い。例えば、負荷算出部313は、他の計算処理で利用中(CPU使用率が所定閾値以上)であれば、その処理サーバ320は利用可能でないと判断しても良い。
さらに、負荷算出部313は、構成情報3113を参照して、クライアント300から受信したデータ処理要求に含まれる処理要件を満足しない処理サーバ320を利用可能でないと判断しても良い。例えば、データ処理要求が特定のCPU種別やOS種別を指定しており、ある処理サーバ320の構成条件3113が他のCPU種別やOS種別を包含するとき、負荷算出部313は、当該処理サーバ320は利用可能でないと判断しても良い。
なお、サーバ状態格納部3110は、構成情報3113に図示されない優先度を包含しても良い。サーバ状態格納部3110格納される優先度は、例えば、処理サーバ320がクライアント300から要求されたデータ処理以外の処理(他の処理)の優先度である。優先度は、他の処理実行中に格納されている。
負荷算出部313は、処理サーバ320が他の処理を実行中であってCPU使用率が高い場合であっても、当該優先度がデータ処理要求に含まれる優先度より低い場合は、当該処理サーバ320を利用可能として取得しても良い。同部は、このように取得された処理サーバ320に、実行中処理中止要求を送信等する。
なお、データ処理要求に含まれる優先度は、クライアント300に入力されるプログラム等から取得される。例えば、構造プログラムがSet_config句内に優先度指定を包含する。
負荷算出部313は、上述で取得した各処理サーバ320とデータサーバ330間の通信に関する負荷(サーバ間通信負荷)を基に、完全データ単位取得負荷cijを要素とする通信負荷行列Cをメモリ315の作業域316等に作成する。
サーバ間通信負荷は、2つのサーバ間の通信を避けたい度合い(忌避度)を単位通信データ量あたりの値として表現した情報である。
サーバ間通信負荷は、例えば、一単位通信量あたりの通信時間、又は通信路上にあるバッファ量(滞留データ量)である。通信時間は、1パケットの往来に要する時間、あるいは、一定のデータ量の転送に要する時間(リンク層の帯域の逆数や、その時点における利用可能帯域の逆数等)であっても良い。負荷は実測値であっても推測値であっても良い。
例えば、サーバ間負荷取得部318が、分散処理管理サーバ310の図示されない記憶装置等に格納されている、二つのサーバ間あるいは当該サーバを収容しているラック間の通信の実績データの平均等の統計値を算出する。同部は、算出した値をサーバ間通信負荷として作業域316等に格納する。負荷算出部313は作業域316等を参照してサーバ間通信負荷を得る。
また、サーバ間負荷取得部318が、前述の実績データから時系列予測技術を用いてサーバ間通信負荷の予測値を算出しても良い。更に同部は、各サーバに対して有限の次数座標を割り当て、当該座標間のユークリッド距離から推測される遅延値を求めて、サーバ間通信負荷としても良い。同部は、各サーバに割り当てられたIPアドレスの先頭からの一致長から推測される遅延値を求めて、サーバ間通信負荷としても良い。
更に、サーバ間通信負荷は、一単位通信量あたりに発生する通信業者への支払金額等であってもよい。この場合等、各処理サーバ320とデータサーバ330間のサーバ間通信行列が、分散システム340の管理者等からシステムパラメータ等として負荷算出部313に与えられる。このような場合、サーバ間負荷取得部318は不要となる。
通信負荷行列Cは、上記で取得した処理サーバ320を列に、データサーバリストを行に並べた、完全データ単位取得負荷cijを要素とした行列である。完全データ単位取得負荷cijは、処理サーバjが完全データ集合iの単位通信量を得るための通信負荷である。
なお、以降の実施の形態で示されるように通信負荷行列Cは、cijに処理サーバjの処理能力指標値が加算された値(完全データ単位処理負荷c’ij)を要素としても良い。図6Dは、通信負荷行列Cを例示する。
本実施の形態で対象とするデータ集合の場合、上記で説明の通り各部分データが完全データ集合である為、完全データ単位取得負荷cijは部分データiを格納するデータサーバiだけから単位通信量を受信する負荷となる。即ち、完全データ単位取得負荷cijはデータサーバiと処理サーバjの間のサーバ間通信負荷そのものとなる。図6Eは、本実施の形態に於ける通信負荷行列Cを例示する。
処理割当部314は、目的関数を最小化するような流量行列Fを算出する。流量行列Fは、得られた通信負荷行列Cと対応する行及び列を持った通信量(流量)の行列である。目的関数は、通信負荷行列Cを定数として持ち流量行列Fを変数として持つ。
目的関数は、分散システム340全体に与える総通信負荷量の最小化が目的であれば総和(Sum)関数であり、データ処理の最長実行時間を最小にすることが目的であれば最大(Max)関数となる。
処理割当部314が最小化対象とする目的関数とその最小化時に使用する制約式は、分散システム340において、各データサーバ330にどのようにデータが分散しているか、またそのデータを処理する方法に依存する。目的関数や制約式は、分散システム340に応じて、システムパラメータ等としてシステム管理者等により分散処理管理サーバ310に与えられる。
各データサーバ330のデータ量は、メガバイト(MB)等のバイナリ量や、予め一定量に区切られたブロックの数量で計測される。図7Aに示すように、各データサーバ330が格納するデータの量は、データサーバ330毎に異なる場合と同一である場合がある。また一つのデータサーバ330が格納するデータが、異なる処理サーバ320で分割して処理可能な場合と不可能な場合もある。負荷算出部313は、図7Aに示す場合に応じた目的関数と制約式を使用する。
まず、対象とするデータ集合がデータサーバ330に分散する量が、均一である場合(701)と、不均一である場合(702)がある。不均一である場合(702)には、そのデータを保持するデータサーバ330と複数の処理サーバ320が対応づけられる場合(704)と、1つの処理サーバ320しか対応づかない場合(703)とがある。複数の処理サーバ320と対応づく場合とは、例えば、データが分割されて、複数の処理サーバ320はその一部を処理する場合である。なお、均一な場合の分割は、例えば、不均一な場合(704)に含めて処理される。また、分散処理管理サーバ310は、図7Bに示すように、不均一な場合(705)も、本来同一のデータサーバ330を処理上は複数の別サーバと捉えて、均一な場合(706)に含めて扱う。
本実施の形態は、この3モデルについて目的関数と制約式を示す。第2以降の実施の形態は上述の3つのモデルのうちの一つを使用するが、対象とする分散システム340に応じて他のモデルを採用しても良い。
式中で用いる記号は下記の通りである。VDはデータサーバ330の集合であり、VNは利用可能な処理サーバ320の集合である。cijは完全データ単位取得負荷であり、本実施例に於いては、VDの要素であるiとVNの要素であるjとの間のサーバ間通信負荷であって、通信負荷行列Cの要素である。fijは流量行列Fの要素であり、VDの要素であるiとVNの要素であるjとの間の通信量である。diは、VDに属する全てのサーバiに格納されるデータ量である。Σは指定した集合について加算をとり、Maxは指定した集合について最大の値をとる。また、minは最小化を表し、s.t.は制約を表す。
図7Aの701のモデルに対する目的関数の最小化式は、式1あるいは式2の目的関数をとり、制約式は式3かつ式4である。
min. Σi∈VD,j∈VN cijfij ...(1)
min. Maxj∈VN Σi∈VD cijfij ...(2)
s.t. fij∈{0,1}(∀i∈VD,∀j∈VN) ...(3)
s.t. Σj∈VN fij=1(∀i∈VD) ...(4)
すなわち、処理割当部314は、データサーバiと処理サーバjとの間のサーバ間通信負荷とその間の通信量との積(完全データ処理負荷)について、式1では全組み合わせについての加算を最小化するようなサーバ間の通信量を算出する。同部は、式2では各処理サーバ320の中で、当該積を全データサーバ330に渡って加算した数の最大値を最小化するようなサーバ間の通信量を算出する。通信量は、送信するかしないかで0か1の値を取り、また、いずれのデータサーバ330についても、全処理サーバ320に渡っての通信量の和は1である。
図7Aの703のモデルでは、処理割当部314は、式5あるいは式6の目的関数を使用し、式3かつ式4の制約式を使用する。式5及び式6は、di=1(∀i∈VD)として式1及び式2に一致する。
min. Σi∈VD,j∈VN dicijfij ...(5)
min. Maxj∈V N Σi∈VD dicijfij ...(6)
すなわち、処理割当部314は、式1及び式2における各データサーバiからの通信負荷に、各データサーバiにおけるデータ量diを乗じる。
次に、図7Aの704のモデルでは、処理割当部314は、式1あるいは式2の目的関数を使用し、式7かつ式8の制約式を使用する。
s.t. fij≧0(∀i∈VD,∀j∈VN) ...(7)
s.t. Σj∈VN fij=di(∀i∈VD) ...(8)
処理割当部314は、式3ではデータサーバiから転送するか否か(0又は1)であった流量を、データサーバiからの通信量の総和が当該サーバiにおけるデータ量に一致するとの制約の下、連続値として算出する。
目的関数の最小化は、線形計画法や非線形計画法、あるいは二部グラフマッチングにおけるハンガリー法、最小費用流問題における負閉路除法や、最大流問題におけるフロー増加法やプリフロープッシュ法等を用いて実現できる。処理割当部314は、上述の何れか又はその他の解法を実行するように実現される。
処理割当部314は、流量行列Fが決定されると、データ処理に利用する(通信量fijが0でない)処理サーバ320を選択し、流量行列Fに基づいて図6Cに例示したような決定情報を生成する。
続いて、処理割当部314は、利用する処理サーバ320のPサーバ管理部322に対して決定情報を送信する。処理サーバ320が予め処理プログラムを備えていない場合、処理割当部314は、同時に、例えばクライアント300から受信した処理プログラムを配布しても良い。
クライアント300、分散処理管理サーバ310、処理サーバ320及びデータサーバ330内の各部は、専用ハードウェア装置として実現されても良いし、コンピュータでもあるクライアント300等のCPUがプログラムを実行することで実現されても良い。例えば、分散管理サーバ310の処理割当部314及び負荷算出部313は専用ハードウェア装置として実現されても良い。これらは、コンピュータでもある分散処理管理サーバ310のCPUがメモリ315にロードされている分散処理管理プログラム317を実行することで実現されても良い。
また、上述したモデル、制約式、目的関数の指定は、構造プログラム等に記述されて、クライアント300から分散処理管理サーバ310に与えられても良いし、起動パラメータ等として分散処理管理サーバ310に与えられても良い。さらに、分散処理管理サーバ310が、データ所在格納部3120等を参照してモデルを決定しても良い。
分散処理管理サーバ310は、全てのモデル、制約式、目的関数に対応するように実装されていても良いし、特定のモデル等だけに対応するように実装されていても良い。
次に、フローチャートを参照して、分散システム340の動作を説明する。
図8は、分散システム340の全体動作フローチャートである。利用者プログラムを入力されると、クライアント300はそのプログラムを解釈し、データ処理要求を分散処理管理サーバ310に送信する(ステップ801)。
分散処理管理サーバ310は、処理対象データ集合の部分データを格納するデータサーバ330及び利用可能な処理サーバ320の集合を取得する(ステップ802)。分散処理管理サーバ310は、取得した各処理サーバ320と各データサーバ330間のサーバ間通信負荷を基に、通信負荷行列Cを作成する(ステップ803)。分散処理管理サーバ310は、通信負荷行列Cを入力して、各処理サーバ320と各データサーバ330間の通信量を、所定制約条件下で所定の目的関数を最小化するように決定する(ステップ804)。
分散処理管理サーバ310は、各処理サーバ320と各データサーバ330に当該決定に従ったデータ送受信を実施させ、各処理サーバ320に受信したデータを処理させる(ステップ805)。
図9は、ステップ801のクライアント300の動作フローチャートである。クライアント300の処理要求部303は、構造プログラムから処理対象データ集合と処理プログラム間の入出力関係等を抽出し、抽出情報を構造プログラム格納部301に格納する(ステップ901)。同部は、処理プログラムの内容、インターフェース情報等を処理プログラム格納部302に格納する(ステップ902)。更に、同部は、データ処理に必要なサーバ資源量あるいはサーバ資源の種別等について、構造プログラムあるいは予め与えられた設定情報等から抽出し、抽出情報を処理要件格納部304に格納する(ステップ903)。
処理対象データ集合が、当該クライアント300から与えられる場合、処理要求部303は、データ集合に所属するデータを通信帯域や記憶容量等の所定基準で選択したデータサーバ330のDデータ格納部331に格納する(ステップ904)。同部は、構造プログラム格納部301、処理プログラム格納部302、及び、処理要件格納部304を参照してデータ処理要求を生成し、分散処理管理サーバ310の処理割当部314に送信する(ステップ905)。
図10は、ステップ802の分散処理管理サーバ310の動作フローチャートである。負荷算出部313は、データ所在格納部3120を参照して、クライアント300から受信したデータ処理要求で指定された処理対象データ集合の各部分データを格納するデータサーバ330の集合を取得する(ステップ1001)。データサーバ330の集合とは、データサーバ330の識別子の集合等を意味する。次に、同部は、データ処理要求で指定された処理要件を満たす利用可能な処理サーバ320の集合を、サーバ状態格納部3110を参照して取得する(ステップ1002)。
図11は、ステップ803の分散処理管理サーバ310の動作フローチャートである。分散処理管理サーバ310の負荷算出部313が、サーバ間負荷取得部318等を経由して、取得した各データサーバ330と各処理サーバ320間のサーバ間通信負荷を求め、通信負荷行列Cを作成する(ステップ1103)。
負荷算出部313は、ステップ804において通信負荷行列Cを基に目的関数を最小化する。この最小化は線形計画法やハンガリー法等を用いて行う。ハンガリー法を用いた動作具体例が図19F、図19Gを参照して後述される。
図12は、ステップ805の分散処理管理サーバ310の動作フローチャートである。分散処理管理サーバ310の処理割当部314は、取得された処理サーバ320集合内の処理サーバjについて(ステップ1201)、処理サーバjが受信する全通信量の和を算出する(ステップ1202)。その値が0出ない場合(ステップ1203でNO)、処理割当部314は、処理サーバjに処理プログラムを送付する。
さらに、同部は、処理サーバjに、『自身と通信量が0でないようなデータサーバiにデータ取得要求を出し、データ処理の実行をする』ように指示する(ステップ1204)。例えば、処理割当部314は、図6Cに例示した決定情報を作成して、処理サーバjに送信する。
なお、本実施の形態の処理割当部314は、式9Aが示すように、処理サーバjについての通信量の総和に一定の制約d’jを課しても良い。
s.t. Σi∈VD fij≦d’j(∀j∈VN) ...(9A)
ただし、処理割当部314は、d’jが式9Bを満たすように設定する。
Σi∈VD di ≦ Σj∈VN d’j...(9B)
本実施の形態の分散システム340の第1の効果は、複数のデータサーバ330と複数の処理サーバ320が与えられた際に、全体として適切なサーバ間のデータ送受信を実現出来ることである。
その理由は、分散処理管理サーバ310が、各データサーバ330と各処理サーバ320の任意の組み合わせ全体の中から、送受信を行うデータサーバ330と処理サーバ320を決定するからである。換言すれば、分散処理管理サーバ310は、個別のデータサーバ330と処理サーバ320注目して逐次的にサーバ間のデータ送受信を決定しないからである。
本分散システム340のデータ送受信は、ネットワーク帯域不足による計算処理の遅れや、他のネットワークを共有するシステムへの悪影響を低減する。
本分散システム340の第2の効果は、サーバ間の通信遅延の大きさや、帯域の狭さ、故障頻度の多さ、同じ通信路を共有する他のシステムと比較した優先度の低さ等、種々の観点の通信負荷を低減出来ることである。
その理由は、分散処理管理サーバ310は、負荷の性質に依存しない手法で、適切なサーバ間のデータ送受信を決定するからである。負荷算出部313は、サーバ間通信負荷として、伝送時間の実測値や推定値、通信帯域、優先度等を入力できる。
本分散システム340の第3の効果は、通信負荷の総量を低減するのか、あるいは最も通信負荷の大きな経路の通信負荷を下げるのか等を、使用者のニーズに合わせて選択できることである。その理由は、分散処理管理サーバ310の処理割当部314は、式1、式2等、複数のなかから選択された目的関数を最小化出来るからである。
本分散システム340の第4の効果は、処理サーバ320で他の処理が実行されていても、依頼を受けたデータ処理の優先度が高ければ、他の処理を中断してデータに近い処理サーバ320で処理させることが可能なことである。その結果、分散システム340は、優先度の高い処理の全体として適切なサーバ間のデータ送受信を実現出来る。
その理由は、サーバ状態格納部3110に処理サーバ320の実行中処理の優先度を格納し、データ処理要求に依頼された新たなデータ処理の優先度を包含し、後者の優先度が高ければ、負荷にかかわらず処理サーバ320にデータを送信させるからである。
[第2の実施の形態]第2の実施の形態について図面を参照して詳細に説明する。本実施の形態の分散処理管理サーバ310は、各処理サーバ320が処理するデータ量の平準化効果も備えた処理割当決定を行う。
本実施の形態の処理割当部314は、サーバ状態格納部3110に格納された処理サーバ320の処理能力の情報を利用する。処理能力の情報とは、CPUのクロック数やコア数、あるいはそれに類する定量化された指標である。
本実施形態の処理割当部314が用いる方法としては、処理能力指標を制約式に含める方式と、目的関数に含める方式とがある。本実施の形態の処理割当部314は、どちらの方式を用いて実現されても良い。
以下の式中において、pjはVNに属する処理サーバjの処理能力の比であり、Σj∈VNpj=1である。処理割当部314は、サーバ状態格納部3110の負荷情報3112及び構成情報3113を参照して、負荷算出部313により取得された利用可能な各処理サーバjの利用可能な処理能力比pjを計算する。
制約式に含める場合、処理サーバjにおいて処理するデータ量の最大許容値d’jを用いた式10Bが処理割当部314に与えられる。処理割当部314は、d’jを、例えば、式10Aに基づいて算出する。ここで、正の係数α(>0)は、サーバ間通信負荷を考慮して、処理能力比に応じた割当からの誤差を許容する程度を規定する値であり、システムパラメータ等として処理割当部314に与えられる。
d’j=(1+α)pj Σi∈VD di(∀j∈VN)..(10A)
s.t. Σi∈VD fij≦d’j(∀j∈VN)....(10B)
すなわち、処理割当部314は、全データサーバ330の総データ量を処理サーバ320の処理能力比で分配し、各処理サーバ320のデータ送受信量の総量は、これと同程度のデータ量までしか受けないものように制約する。
厳密に能力比割当である必要がない場合、システム管理者等は処理割当部314に大きなαの値を与える。この場合、処理割当部314は、多少能力比以上のデータ量を受信する処理サーバ320の存在を許容して、目的関数を最小化する。なお、VNの要素数を|VN|として、α=0かつpj=1/|VN|(∀j∈VN)の時、各処理サーバ320は均一な量のデータ処理を行う。
目的関数に含める場合には、負荷算出部313は、完全データ単位量処理負荷c’ijを要素として、式1、式2、式5、式6に示した目的関数における通信負荷行列Cを作成する。完全データ単位量処理負荷c’ijは、完全データ単位量処理負荷cijにサーバ処理負荷を加算した値であり、式11で与えられる。
ここで、βは、単位データ量当たりの処理時間であり、例えば、データ処理(処理プログラム)ごとに、構造プログラムに記述されたり、分散処理管理サーバ310のシステムパラメータに指定されたりして、処理割当部314に与えられる。サーバ処理負荷は、このβを各サーバの処理能力pjについて規格化した値である。
c’ij ∝ cij + β/pj(∀i∈VD,∀j∈VN)..(11)
すなわち、データサーバiから処理サーバjへの通信量を増やすに応じて、目的関数の値には、cijが加算されるのと同時に、処理サーバjの処理能力の逆数に比例した負荷が加わる。
本方式は、目的関数が式2である場合等、処理サーバ320当たりの合計完全データ処理負荷の最大値を最小化する場合に、特に有用である。例えば、cijがネットワーク帯域の逆数である場合、処理割当部314は、処理サーバjが受けるデータ総量の受信時間と受信後の処理時間の和が、最も大きな処理サーバ320の時間を短くするように、サーバ間のデータ送受信を決定する。
本分散システム340の追加的な効果は、処理サーバ320がデータを受信する通信負荷だけでなく処理サーバ320の処理能力も考慮して目的関数を最小化できることである。その結果、例えば、各処理サーバ320のデータ受信と処理の両方の完了時点の平準化が出来る。
その効果が発生する理由は、目的関数を最小化において、処理サーバ320毎の計算能力を制約式や目的関数に含めるからである。
[第3の実施の形態]第3の実施の形態について図面を参照して説明する。本実施の形態のデータ処理サーバ320は、複数(N個)のデータ集合からデータ要素を入力してデータ処理を行う。
図13は、本実施の形態のクライアント300に入力される利用者プログラムを例示する。図13の構造プログラムは、MyDataSet1とMyDataSet2という2つのデータ集合の直積(set_data句のcartesian指定で指定)を処理することを記述している。本構造プログラムは、先ずMyMapという処理プログラムを実行し、その出力結果に対してMyReduceという処理プログラムを適用することを記述している。さらに、構造プログラムは、MyMapは4台、MyReduceは2台の処理サーバ320で並列に処理すべきであることを記述(set_config句のServer指定)している。図13の(c)はこの構造を表現した図である。
MyDataSet1とMyDataSet2という2つのデータ集合の直積からなるデータとは、前者に含まれるデータ要素11及び12と、後者に含まれるデータ要素21及び22とからなる組み合わせデータである。具体的には、(要素11と要素21)、(要素12と要素21)、(要素11と要素22)、(要素12と要素22)の4組のデータがMyMapに入力される。
本実施形態の分散システム340は、集合間の直積演算を要する任意の処理に利用することができる。例えば、処理がリレーショナル・データベースにおける複数テーブル間のJOINである場合、2つのデータ集合はテーブルであり、データ要素11〜12と21〜22はテーブルに含まれる行である。複数のデータ要素の組を引数とするMyMap処理は、例えば、SQLのWhere節で宣言されるテーブル間の結合処理である。
MyMapの処理は、行列やベクトルの演算処理であってもよい。この場合、行列やベクトルがデータ集合であり、行列やベクトル内の値がデータ要素となる。
本実施形態に於いて、各データ集合は、単純な分散配置、冗長化された分散配置、符号化された分散配置等(図5B、図6A参照)の何れの分散形態3122をとっていても良い。以降の説明は、単純な分散配置の場合についてのものである。
本実施の形態に於いて、構造プログラムで指定された複数データ集合から得られた要素の組の集合が完全データ集合となる。従って、データサーバリストは、各データ集合の何れかの部分データを格納したデータサーバ330のリストとなる。図13で指示された如く複数データ集合の直積を処理する場合、データリストの集合は、各データ集合の何れかの部分データを格納したデータサーバ330のリストの全組み合わせとなる。
換言すれば、データサーバリストの集合は、複数の処理対象データ集合の部分データを格納したデータサーバ330の集合の直積で得られるデータサーバ330のリストからなる集合となる。
また、本実施形態における完全データ単位量取得負荷cijは、処理サーバjがサーバリストiに属する各データサーバ330から各々単位データ量(例えば、1データ要素)を取得する為の通信負荷となる。従って、cijは、処理サーバjとサーバリストiに属する各データサーバ330の間のサーバ間通信負荷の和となる。
図15は、第3の実施の形態のステップ802及び803(図8)の分散処理管理サーバ310の動作フローチャートである。即ち、本実施の形態に於いては、本図が図10、図11を置き換える。
負荷算出部313は、処理対象となるN個のデータ集合の各々について、そのデータ集合の部分データを格納したデータサーバ330の集合をデータ所在格納部3120の部分データ記述3123から取得する。次に、同部は、これらN個のデータサーバ330の集合の直積を求め、当該直積の各要素をデータサーバリストとする(ステップ1501)。
同部は、データ処理要求の処理要件を満たす利用可能な処理サーバ320の集合を、サーバ状態格納部3110を参照して取得する(ステップ1502)。
同部は、上記ステップで取得した各データサーバリストi(ステップ1503)と、処理サーバ320集合内の各サーバj(ステップ1504)の組み合わせについて以下の処理を実行する。
同部は、データサーバリストiを構成する各データサーバkと処理サーバjとのサーバ間通信負荷を算出し、サーバ間通信負荷のリスト{bkj}i(k=1〜N)を求める(ステップ1505)。なお、各部分データが多重化や符号化をされている場合、同部は、後述の第4の実施形態で示される方法で各サーバ間通信負荷を算出する。
同部は、求めたサーバ間通信負荷のリスト{bkj}iのkについての和Σbijを、データサーバリストiと処理サーバjとの間の完全データ単位量取得負荷cijとする通信負荷行列Cを生成する(ステップ1506)。
なお、各データ集合のデータ量の総和が均一でない場合は、負荷算出部313は、データ集合毎にデータ要素のサイズ比で重み付けた和を完全データ単位量取得負荷cijとする。各データ集合のデータ要素数が同一である場合は、データ要素のサイズ比で重み付けする代わりに、データ集合のデータ量比で重み付けても良い。
処理割当部314は、ここで生成された通信負荷行列Cを用いて目的関数の最小化等(図8のステップ804以降)を行う。
本実施形態の分散システム340が入力する利用者プログラムは、複数のデータ集合の直積を処理するプログラムに限られない。利用者プログラムは、例えば、複数のデータ集合の各々から、同一順序、同一識別子を有する等により関連付けられたデータ要素を1つずつ選択して、選択されたデータ要素で構成される組を処理する処理プログラムを包含するものでも良い。
このような利用者プログラムは、例えば、MyDataSet1とMyDataSet2という2つのデータ集合の同一順番のデータ要素組(この場合は、対)を処理するようなプログラムである。図14は、このようなプログラムの例である。このような利用者プログラムにおける構造プログラムは、例えば、指定された2つのデータ集合の関連データ要素組を処理対象(set_data句のassociated指定で指定)とすることを記述している。
図14のプログラムに於いても、図13のプログラムに於ける場合と同様、構造プログラムで指定された複数データ集合から得られた要素の組の集合が完全データ集合となる。従って、データサーバリストは、各データ集合の何れかの部分データを格納したデータサーバ330のリストとなる。
ただし、図14で示された如く複数データ集合の関連データ要素対を処理する場合、データサーバリストの集合は、図13の利用者プログラムの場合とは異なる。負荷算出部313は、図15のステップ1501に代えて、例えば、処理対象となる複数のデータ集合の各々をデータ量に比例する大きさの部分データに分割して、同順位の各部分データの組を格納するデータサーバ330のリストの集合を取得する。取得したリストの集合が、データサーバリストの集合である。
図16は、データ要素の出現順で関連付けるassociated指定時のデータサーバリストの集合を例示する。同図に於いて、8GBのデータ量を有するMyDataSet1は、データサーバn1上に格納されている6GBの部分データ11と、データサーバn2上に格納されている2GBの部分データ12から構成される。
4GBのデータ量を有するMyDataSet2は、データサーバn3上に格納されている2GBの部分データ21と、データサーバn4上に格納されている2GBの部分データ22から構成される。
この場合、負荷算出部313は、MyDataSet1とMyDataSet2をそのデータ容量比(8:4=2:1)のセグメントに分割し、順番に対を構成する(ステップ1501)。この結果同部は、(部分データ11の前半4GB、部分データ21)、(部分データ11の後半2GB、部分データ22の前半1GB)、(部分データ12、部分データ22の後半1GB)の3つの部分データの対を得る。同部は、これらの部分データ対を格納するデータサーバリストの集合として、(n1,n3)、(n1,n4)、(n2,n4)との集合を得る。
以降の処理は、図15と同じである。
本実施の形態の分散システム340の追加的な効果は、処理サーバ320が複数のデータ集合の各々に属する複数のデータ要素の組を入力して処理する際にも、ネットワーク負荷の所定和を低減するような処理配置を実現できることである。
その理由は、処理サーバ320がデータ要素のN個の組を取得する通信負荷cijを算出して、そのcijを基に目的関数の最小化を実施するからである。
[第4の実施の形態]第4の実施の形態について図面を参照して説明する。本実施の形態の分散システム340は、多重化又は符号化されたデータを扱う。
本実施の形態のクライアント300に入力されるプログラム例は、図4、図13又は図14に示した何れでも良い。説明の簡単のため、以降では、入力される利用者プログラム例は図4で示したものであるとする。但し、set_data句で指定される処理対象データ集合は、図6Aに例示するMyDataSet5であるとする。
MyDataSet5が例示する如く、処理対象のデータ集合はその部分データ毎に異なるデータサーバ330に格納される。データ集合の一部の部分データが、多重化されている場合(図6AのSubSet1等)、同一のデータが複数のデータサーバ330(例えば、データサーバjd1、jd2)に複製され分散格納される。多重化は二重化に限られない。図6Aにおけるデータサーバjd1、jd2は、例えば、図5Bのサーバ511、512に相当する。
データ集合の一部の部分データ(図6AのSubSet2等)が、Erasure符号化等を用い、データが分割・冗長化され、一つの部分データを構成する同サイズの異なるチャンクが互いに異なるデータサーバ330(例えば、データサーバje1〜jen)に格納される。図6Aにおけるデータサーバje1〜jenは、例えば、図5Bのサーバ531〜551に相当する。
この場合、部分データ(SubSet2等)は、ある一定の冗長数nに分割され、そのうち一定の最低取得数k(k<n)以上を取得した場合に部分データを復元できる。多重化の場合、全体としてデータ量は元のデータ量の多重度倍必要であるが、Erasure符号化の場合は、元の部分データ量の数割増し程度で良い。
また、負荷算出部313は、Quorumによって複製を分散配置されている部分データも、符号化されている部分データと同様に扱うように実現されても良い。Quorumは、分散したデータに対して一貫性を保って読み書きを行う方式である。複製数n及び読み込み定数及び書き込み定数kが、分散形態3122に格納されて負荷算出部313に与えられる。負荷算出部313は、複製数を冗長数、読み込み定数及び書き込み定数を最低取得数と置き換えて扱う。
図4の利用者プログラムの場合、各部分データが完全データ集合である。部分データiがn重化されている場合、完全データ単位取得負荷cijは、部分データiの多重化データを格納するn個のデータサーバi1〜データサーバin(データサーバリスト)の任意の一つから単位通信量を受信する負荷となる。そこで、負荷算出部313は、完全データ単位取得負荷cijをデータサーバi1〜データサーバinの各々と処理サーバjの間のサーバ間通信負荷のうち、最小のものとする。
部分データiがErasure符号化又はQuorumで冗長化されている場合、完全データ単位取得負荷cijは、部分データiの冗長化データを格納するn個のデータサーバi1〜データサーバin(データサーバリスト)の任意のk個から単位通信量を受信する負荷となる。そこで、負荷算出部313は、完全データ単位取得負荷cijをデータサーバi1〜データサーバinの各々と処理サーバjの間のサーバ間通信負荷のうち、小さい方からk個を加算したものとする。
図17は、第4の実施の形態のステップ803(図8)の分散処理管理サーバ310の動作フローチャートである。即ち、本実施の形態に於いては、本図が図11を置き換える。なお、本図は、各部分データがErasure符号化又はQuorumで冗長化されている場合のフローチャートである。kを1に置換すると、本図は多重化された部分データに対応するフローチャートとなる。
負荷算出部313は、処理対象データ集合の各部分データiについて(ステップ1701)、部分データiを冗長格納しているデータサーバ330の識別子リスト(データサーバリスト)を、データ所在格納部3120から取得する(ステップ1702)。
同部は、利用可能な処理サーバ320集合に含まれる各処理サーバjについて(ステップ1703)、部分データiのデータサーバリストを構成する各データサーバmとの間のサーバ間通信負荷リスト{bmj}i(m=1〜n)を求める(ステップ1704)。同部は、サーバ間通信負荷リスト{bmj}iのうち、小さい方からk個分の値を取り出して加算し、その加算値をi行j列の要素cij(部分データiと処理サーバjの間の完全データ単位量取得負荷)とする通信負荷行列Cを生成する(ステップ1705)。
同部は、部分データiと処理サーバj毎に、サーバ間通信負荷リスト{bmj}iのうちどのサーバを選んだかについて、作業域316に記憶する(ステップ1706)。
処理割当部314は、ここで生成された通信負荷行列Cを用いて目的関数の最小化等(図8のステップ804以降)を行う。
なお、多重化又は符号化されている部分データiを構成する複数のデータの各々が更に多重化又は符号化されている場合がある。例えば、二重化されている部分データiを構成する一方が多重化され、他の一方が符号化されている場合などである。または、符号化されている部分データiを構成する3個のチャンクのうち、1つのチャンクが二重化され、他の2つのチャンクが各々3個のチャンクに符号化されている場合である。このように、部分データiは、多段階に多重化または符号化されていることがある。各段における多重化または符号化の方式の組み合わせは自由である。段数も二段に限定されない。
このような場合、図6Aの部分データ名3127(例えば、SubSet1)に対応する行は、部分データ記述3123に代えて、下位の段の部分データ名3127(例えば、SubSet11、SubSet12...)を含む。そして、データ所在格納部3120は、それらのSubSet11、SubSet12...に対応する行も包含する。図17のステップ1702において、このようなデータ所在格納部3120を参照した負荷算出部313は、部分データiに対してネスト構造を有するデータサーバリストを取得する。さらに、同部はネストしている各データサーバリストの各々について、ネストの深い順に、ステップ1705のサーバ間通信負荷加算を実行し、最終的に通信負荷行列Cを作成する。
符号化されている部分データを構成するn個のチャンクが、当該部分データが複数に分割されたデータ断片からなるチャンクとパリティ情報からなるチャンクである場合等には、処理サーバ320は、部分データを復元するために、特定のk個のチャンクの集合(復元可能集合)を必要とする。
この場合、負荷算出部313は、ステップ1705において、「{bmj}iのうち、小さい方からk個分の値を取り出して加算し、その加算値をi行j列の要素cijとする」ことは出来ない。代わりに、同部は最小復号可能通信負荷ijをcijとする。最小復号可能通信負荷ijは、部分データiの各復元可能集合iに属する各チャンクを格納するデータサーバmiに関する{bmj}iの要素の加算値のうち、最小のものである。
ここでbmjは断片mのデータ量を考慮した負荷である。また、どのチャンクが、各特定のk個の集合を構成するかは、チャンク化された時点で、各チャンクの属性情報等に記述されている。負荷算出部313は、当該情報を参照して各復元可能集合に属するチャンクを識別する。
例えば、部分データiが、{n1,n2,n3,n4,p1,p2}という6チャンクに符号化されている場合、負荷算出部313は、例えば2つの復元可能集合Vm{n1,n2,n4,p1,p2}および{n1,n2,n3,p1,p2}をチャンクの属性情報から検索する。同部は、この2つの復元可能集合Vmのうちで、Σm∈Vm{bmj}iが最小となるVmに関するΣm∈Vm{bmj}iをcijとする。
なお、特定のk個が任意のk個である場合、どちらの値をcijとしても結果は同じである。即ち、後者の処理は前者を一般化した処理である。
本実施の形態の分散システム340の追加的な効果は、データ集合が冗長化(多重化、符号化)されている場合、冗長化を利用してデータ転送に伴うネットワーク負荷を低減出来ることである。その理由は、分散処理管理サーバ310が、各処理サーバ320へ、当該処理サーバ320との間のサーバ間通信負荷の低いデータサーバ330から優先的に、データ送信するように、サーバ間の通信量を決定するからである。
[第5の実施の形態]第5の実施の形態について図面を参照して説明する。本実施の形態の分散システム340に於いては、各処理サーバjは、全てのデータサーバ330から処理サーバ320毎に決定された同一割合wjのデータを受信する。
本実施の形態のクライアント300に入力されるプログラム例は、図4、図13又は図14に示した何れでも良い。説明の簡単のため、以降では、入力されるプログラム例は図4で示したものであるとする。
図4のプログラムは、MyMapという処理プログラムが出力したデータ集合に対して、MyReduceという処理プログラムを適用することを記述する。MyReduce処理は、例えば、MyMap処理の出力データ集合のデータ要素を入力して、予め定められた、あるいは構造プログラム等で与えられた条件のデータ要素にまとめ、まとまりのある複数のデータ集合を生成する処理である。このような処理は、例えば、ShuffleあるいはGroupByという処理である。
MyMap処理は、例えば、Webページの集合を入力して、各ページから単語を抜き出して、抜きだした単語とともにページ内での発生回数を出力データ集合として出力する処理である。MyReduce処理は、例えば、当該出力データ集合を入力して、全ページでの全単語の発生回数を調べ、同一の単語の結果を全ページに渡って加算する処理である。このようなプログラムの処理に於いて、全単語のうちの一定の割合のShuffleあるいはGroupBy処理を行うMyReduce処理の処理サーバ320は、前段のMyMap処理の処理サーバ320の全てから一定割合のデータを取得する場合がある。
本実施形態の分散処理管理サーバ310は、このような場合に後段処理の処理サーバ320を決定するとき等に用いられる。
なお、本実施形態の分散処理管理サーバ310は、MyMap処理の出力データ集合を、第1の実施の形態乃至第4の実施の形態に於ける入力データ集合と同様に扱うように実現出来る。即ち、本実施形態の分散処理管理サーバ310は、前段処置の処理サーバ320、即ち前段処理の出力データ集合を格納する処理サーバ320を、後段処理のデータサーバ330と見なして機能するように構成され得る。
あるいは、本実施形態の分散処理管理サーバ310は、MyMap処理の出力データ集合のデータ量を、MyMap処理の入力データ集合のデータ量とMyMap処理の入出力データ量比の期待値から推定する等しても求めて良い。分散処理管理サーバ310は、推定値を求めることで、MyMap処理の完了前にMyReduce処理の処理サーバ320を決定することが出来る。
本実施の形態の分散処理管理サーバ310は、Reduce処理実行サーバの決定要求を受けて、第1乃至第4の実施の形態における分散処理管理サーバ310と同様に、式1又は式2の目的関数を最小化する(図8のステップ804)。但し、本実施の形態の分散処理管理サーバ310は、式12、式13の制約を加えて目的関数を最小化する。
式中のdiはデータサーバiのデータ量である。上述したように、この値は、例えば、MyMap処理の出力データ量あるいはその予測値である。wjは処理サーバjが担当する割合を表す。
このような制約の結果、処理割当部314は、すべてのデータサーバiから一定割合wjのデータが処理サーバjに転送されるという条件下で目的関数を最小化する。
s.t. fij/di=wj(∀i∈VD,∀j∈VN) ...(12)
s.t. Σj∈VN wj=1,wj≧0(∀j∈VN) ...(13)
式12を用いて式1及び式2を書き換えると、fijを変数とする目的関数の最小化が式14及び式15のようにwjを変数とする目的関数の最小化となる。処理割当部314は、式14又は式15の最小化によりwjを求め、そこからfijを算出するように実現されても良い。
min. Σj∈VN(Σi∈VD dicij)wj ...(14)
min. Maxj∈VN(Σi∈VD dicij)wj ...(15)
上述(図8のステップ804)以外の点は、本実施形態の分散システム340は、第1の実施の形態乃至第4の実施の形態と同様に動作する(図8等)。即ち、処理割当部314は、算出された結果を用い、どの処理サーバ320でどれだけのデータ量を処理するかを求める。更に、同部は、wjあるいはfijから、通信量が0でない処理サーバjを決定し、その処理サーバjが各データサーバiからどれ程のデータ量を取得するかを決定する。
分散システム340の各処理サーバ320が、予め一定量の負荷を担っている場合がある。本実施の形態の分散処理管理サーバ310は、その負荷を反映して、式2の最小化を行うように実現されても良い。この場合、処理割当部314は、式2の代わりに式16を目的関数として最小化する。即ち、同部は、完全データ処理負荷fijc’ij(サーバ処理負荷を考慮しない場合、fijcij)に処理サーバjの負荷δjも加えた加算値の最大合計値を持つ処理サーバjが、最小の加算値をとるようにfijを決定する。
負荷δjは、処理サーバjを利用するには、予め何らかの通信負荷あるいは処理負荷が必須であるような場合に設定される値である。負荷δjは、システムパラメータ等として処理割当部314に与えられても良い。処理割当部314が、処理サーバjから負荷δjを受信しても良い。
処理サーバ320がShuffle処理のようなデータ集約を行う場合、式12、式13の制約が適用され、式16の目的関数は式17のようにwjを変数とする関数となる。処理割当部314は、式17の最小化によりwjを求め、そこからfijを算出するように実現される。
min. Maxj∈VN Σi∈VD cijfij+δj ...(16)
min. Maxj∈VN(Σi∈VD dicij)wj+δj ...(17)
本実施の形態の分散システム340の追加的な第1の効果は、各データサーバ330のデータを固定割合ずつ、複数の処理サーバ320に配信するという条件下で通信負荷の低減が可能である。その理由は、割合情報を制約条件に加えて、目的関数の最小化を行うからである。
本実施の形態の分散システム340の追加的な第2の効果は、処理サーバ320に処理(受信データ)を割り当てる際に、当該処理サーバ320が予め何らかの負荷を有している場合でも、その負荷も考慮して処理を割り当てることが出来る。このことにより、分散システム340は各処理サーバ320での処理完了時のばらつきを低下できる。
かかる効果が得られる理由は、処理サーバ320が現在負っている負荷を目的関数に含めて、目的関数を最小化、特に、最大負荷の最小化が可能だからである。
本実施の形態の分散システム340は、前段処理の出力結果を受けて後段処理を行うような場合に、前段処理の出力結果を後段処理の処理サーバ320に転送する際の通信負荷低減にも有効である。その理由は、本実施形態の分散処理管理サーバ310は、前段処置の処理サーバ320、即ち前段処理の出力データ集合を格納する処理サーバ320を、後段処理のデータサーバ330と見なして機能できるからである。同様な効果は、第1乃至第4の実施の形態の分散システム340から得ることも出来る。
[[各実施の形態についての具体例に則した説明]]
[第1の実施の形態の具体例]図18Aは、本具体例等で使用される分散システム340の構成を示す。本図を用いて、前述した各実施の形態の分散システム340の動作が説明される。本分散システム340は、スイッチ01〜03で接続されたサーバn1〜n6から構成される。
サーバn1〜n6は、状況に応じ処理サーバ320としてもデータサーバ330としても機能する。サーバn2、n5、n6は、各々、あるデータ集合の部分データd1、d2、d3を格納する。本図に於いて、サーバn1〜n6の何れかが、分散処理管理サーバ310として機能する。
図18Bは、分散処理管理サーバ310が備える、サーバ状態格納部3110に格納される情報を示す。負荷情報3112はCPU使用率を格納する。サーバが他の計算処理を実行していると、当該サーバのCPU使用率は高くなる。分散処理管理サーバ310の負荷算出部313は、各サーバのCPU使用率と所定の閾値(50%以下等)を比較して各サーバが利用可能かを判断する。本例では、サーバn1〜n5が利用可能と判断される。
図18Cは、分散処理管理サーバ310が備える、データ所在格納部3120に格納される情報を示す。当該データは、データ集合MyDataSetの部分データが、5GBずつサーバn2、n5、n6に格納されていることを示す。MyDataSetは、単純に分散配置され(図5B(a))、多重化や符号化(図5B(b)、(c))はされていない。
図18Dは、クライアント300に入力される利用者プログラムを示す。この利用者プログラムは、データ集合MyDataSetをMyMapという処理プログラムで処理すべきことを記述する。
当該利用者プログラムが入力されると、クライアント300は構造プログラム及び処理プログラムを解釈し、分散処理管理サーバ310にデータ処理要求を送信する。このとき、サーバ状態格納部3110が図18B、データ所在格納部3120が図18Cに示す状況であったとする。
分散処理管理サーバ310の負荷算出部313は、図18Cのデータ所在格納部3120を参照して、データサーバ330の集合として{n2、n5、n6}を得る。次に、同部は、図18Bのサーバ状態格納部3110から処理サーバ320の集合として{n1、n2、n3、n4}を得る。
同部は、これら2つのサーバの集合({n2、n5、n6}、{n1、n2、n3、n4})の各々から一つずつ要素を選択した全組み合わせの各々について、サーバ間通信負荷に基づいて通信負荷行列Cを作成する。
図18Eは、作成された通信負荷行列Cを示す。本具体例に於いて、サーバ間負荷はサーバ間の通信経路上に存在するスイッチ数である。サーバ間のスイッチ数は、例えば、システムパラメータとして負荷算出部313に予め与えられている。また、サーバ間負荷取得部318が、構成管理プロトコルを用いて構成の情報を取得し、負荷算出部313に与えても良い。
分散システム340がサーバのIPアドレスからネットワーク接続が分かるようなシステムである場合は、サーバ間負荷取得部318が、n2等のサーバの識別子からIPアドレスを取得し、サーバ間通信負荷を得ても良い。
図18Eは、サーバ間通信負荷を、同一サーバ内は0、同一スイッチ内サーバ間は5、スイッチ間接続は10であると仮定した場合の通信負荷行列Cを示す。
処理割当部314は、図18Eの通信負荷行列Cを基に利用量行列Fを初期化し、式3、式4の制約のもとで、式1の目的関数の最小化を行う。
図18Fは、目的関数最小化の結果得られた流量行列Fを示す。処理割当部314は、得られた流量行列Fに基づき、クライアント300から得られた処理プログラムをn1〜n3に送信し、さらに、処理サーバn1、n2、n3に、決定情報を送信して、データ受信と処理実行を指示する。決定情報を受信した処理サーバn1は、データサーバn5からデータd2を取得し処理する。処理サーバn2は、データサーバn2(同一サーバ)上のデータd1を処理する。処理サーバn3は、データサーバn6上のデータd3を取得して処理する。図18Gは、図18Fの流量行列Fに基づいて決定される、データ送受信を示す。
[第2の実施の形態の具体例]
第2の実施の形態の具体例では、処理対象のデータ集合は複数のデータサーバ330に異なるデータ量で分散している。一つのデータサーバ330のデータが分割されて、複数の処理サーバ320にデータが転送されて処理される。
本具体例では、目的関数の違いと、負荷の均一化条件を制約式に加える方式と目的関数に含める方式の違いを示すため2例が説明される。第1例は全ネットワーク負荷(式1)を低減し、第2例は最も遅い処理のネットワーク負荷(式2)を低減する。また、第1例は、負荷の均一化条件を制約式に含む。第2例は、負荷の均一化条件を目的関数に含む。通信負荷行列について、第1例はスイッチやサーバのトポロジーから類推される遅延を用い、第2例は測定される可用帯域を用いる。
図18Aで示される構成は、第2の実施の形態の具体例でも使用される。但し、データd1〜d3のデータ量は同一ではない。
図19Aは、第2の実施の形態の具体例で入力される利用者プログラムを示す。当該プログラムの構造プログラムは、処理要件の指定(set_config句)を包含する。
第2の実施の形態の具体例におけるサーバ状態格納部3110は、図18Bと同じである。但し、各処理サーバ320対応の構成情報3113は、同一のCPUコア数及び同一のCPUクロック数を包含する。
図19Bは、第2の実施の形態の第1例におけるデータ所在格納部3120に格納されている情報を示す。当該情報は、部分データd1、d2、d3のデータ量が、各々6GB、5GB、5GBであることを示す。
第1例に於いて、分散処理管理サーバ310の負荷算出部313は、処理要件としてサーバ台数=4が指定されているため、サーバ状態格納部3110(図18B)から利用可能な処理サーバ320の集合として{n1、n2、n3、n4}を得る。
続いて、同部は、図19Bのデータ所在格納部3120を参照して、データサーバ330の集合として{n2、n5、n6}を得る。同部は、これら2つの集合と各サーバ間のサーバ間通信負荷とから通信負荷行列Cを得る。図19Cは、第一例の通信負荷行列Cを示す。
処理割当部314は、図19Bのデータ格納部312から、各データサーバ330が格納する、処理対象データ集合に属する部分データのデータ量を得る。同部は、サーバ状態格納部3110から各処理サーバ320の性能の相対値を得る。第1例では、同部は各処理サーバ320のCPUコア数とCPUクロック数から処理能力比1:1:1:1:1を得る。
図19Cの通信負荷行列Cが得られると、同部は、上記で取得したデータ量と性能相対値、さらに予め与えられたパラメータα=0を用いて、式7、式8及び式10Bの制約の下で、式1の目的関数の最小化を行う。各データサーバ330のデータ量は、上述したように、各々6GB、5GB、5GBである。
各処理サーバ320の性能相対値が同一であることから、処理サーバn1〜n4は全て4GBのデータを処理する。この最小化の結果として、同部は、図19Dの流量行列Fを得る。
図19Dの流量行列Fの流量と完全データ単位量処理負荷(この場合、完全データ単位量取得、あるいは負荷サーバ間通信負荷と同じ)の積(完全データ処理負荷)の総和は85である。データサーバ330毎に近傍な処理サーバ320を逐次的に選ぶ方式では、同和が150となることもある。
第1例において、負荷算出部313は処理要件で指定されたサーバ台数を利用可能処理サーバ320の候補としている為、全ての処理サーバn1〜n4上でMyMap処理を実行することとなる。従って、処理割当部314は、クライアント300から得られた処理プログラムを、処理サーバn1〜n4に送信する。
さらに、同部は、各処理サーバn1〜n4に決定情報を送信して、データ受信と処理実行を指示する。
決定情報を受信した処理サーバn1は、データサーバn2からデータd1の2GB分とデータサーバn5からデータd2の2GB分を受信して処理する。処理サーバn2は、同一サーバ上のデータd1の4GB分を処理する。処理サーバn3は、データサーバn5からデータd2の1GB分とデータサーバn6からデータd3の3GB分を受信して処理する。処理サーバn4は、データサーバn6からデータd3の2GB分とデータサーバn5からデータd2の2GB分を受信して処理する。
図19Eは、図19Dの流量行列Fに基づいて決定される、データ送受信を示す。
以降、処理割当部314による目的関数の最小化により、通信負荷行列Cから流量行列Fを作成する動作(図8のステップ804の具体例)が説明される。
図19Fは、処理割当部314による流量行列F作成の動作フローチャート例である。同図は、2部グラフにおけるハンガリー法を用いたフローチャートを例示する。図19Gは、目的関数最小化における行列変換過程を示す。
なお、目的関数最小化の動作フローチャートはここでのみ提示され、以降の例では省略される。そのため図19Fは上述の条件・設定に加え、各データサーバ330が格納するデータ量が異なる場合、処理サーバ320に受信データ量の制約がある場合を例にとる。
まず、処理割当部314は、通信負荷行列Cの各行について、その行の各列の値をその行の最小値で差し引き、各列についても同様の処理を行う(ステップ1801)。この結果、図19Gの行列00(通信負荷行列C)から行列01が得られる。
同部は、行列01においてゼロ要素からなる2部グラフを生成し(ステップ1802)、2部グラフ11を得る。
続いて、同部は、データ量の残る頂点から2部グラフ上の処理頂点を辿り、その処理頂点から既に割り当てられたフローを持つ経路のデータ頂点を順次辿り(ステップ1804)、流れ12を得る。
この状態からフローを割り当てることができないため(ステップ1805でNo)、同部は、データを流しうる辺13を2部グラフに加え、より多くの負荷を許容するように行列01を修正する(ステップ1806)。この結果、同部は行列02を得る。
同部は、行列02から再度2部グラフを生成し(ステップ1802)、データ量の残るデータ頂点からフローを割当可能な処理頂点に至る経路を探索する(ステップ1804)。この時、処理頂点からデータ頂点に至る辺は、既に割り当てられたフローに属す辺に属するものである。探索結果の代替経路14は、データ頂点d1から処理頂点n1、データ頂点d2を経て、処理頂点n4に至る。
同部は、代替経路14上のデータ頂点に残るデータ量、処理頂点で割当可能なデータ量、既に割り当てたフローの量の最小値を求める。同部は、この量を代替経路上のデータ頂点から処理頂点への辺に新たにフローとして追加し、同経路上の処理頂点からデータ頂点への辺上の既に割り当てられたフローから差し引く(ステップ1807)。これにより、同部はフロー15を得る。フロー15がこの条件下における総和(式1)を最小化する流量行列Fとなる。
図19Hは、第2の実施の形態の第2例におけるデータ所在格納部3120に格納されている情報を示す。当該情報は、部分データd1、d2、d3のデータ量が、各々7MB、9MB、8MBであることを示す。
第2例に於いて、負荷算出部313は、図18Bのサーバ状態格納部3110を参照して、利用可能な処理サーバ320の集合{n1,n2,n3,n4}を取得する。続いて同部は、CPUコア数とCPUクロック数に加えて、CPU使用率も参照して各サーバの処理能力比5:4:4:5を得る。
サーバ間負荷取得部318はサーバ間通信路の可用帯域を計測して、計測値に基づいてサーバ間通信負荷(2/サーバij間の最小帯域(Gbps))を求めて負荷算出部313に与える。測定値は、図19K(および図18A)のスイッチ01−02間が200Mbps、スイッチ02−03間が100Mbps、スイッチ内のサーバ間は1Gbpsであったとする。
本具体例では、単位データ量当たりの処理時間β=40が負荷算出部313に与えられる。この値は実測等に基づいてシステム管理者等が決定し、パラメータとして負荷算出部313に与えられる。
負荷算出部313は、完全データ単位量処理負荷c’ijを、完全データ単位量取得負荷(=サーバ間通信負荷)+20/9pjで算出し、図19Iの通信負荷行列Cを作成する。
処理割当部314は、この通信負荷行列Cを用い、式2の目的関数を、式7、式8の制約の下で最小化する。この最小化の結果として、同部は図19Jに示す流量行列Fを得る。
同部は、各処理サーバn1〜n4に決定情報を送信して、データ受信と処理実行を指示する。
決定情報を受信した処理サーバn1は、データサーバn5からデータd2の4.9MB分を受信して処理する。処理サーバn2は、自身が格納するデータd1の7MB分を処理し、さらに、データサーバn5からデータd2の0.9MB分を受信して処理する。処理サーバn3は、データサーバn5からデータd2の2.9MB分を受信して処理する。処理サーバn4は、データサーバn5からデータd2の0.3MBとデータサーバn6からデータd3の8MB分を受信して処理する。
図19Kは、図19Jの流量行列Fに基づいて決定される、データ送受信を示す。
以上のようにすることで、分散処理管理サーバ310は、サーバ処理性能の違いを考慮して処理を平滑化しつつ、通信負荷を低減させる。
[第3の実施の形態の具体例]
第3の実施の形態の具体例は、複数のデータ集合を入力して処理する例を示す。第1例の分散システム340は、複数のデータ集合の直積集合を処理する(cartesian指定)。同システムは、各データ集合を複数のデータサーバ330に同一のデータ量で分散させて保持する。
第2例の分散システム340は、複数のデータ集合の関連付けられたデータ要素の組を処理する(associated指定)。同システムは、各データ集合を複数のデータサーバ330に異なるデータ量で分散する。各データ集合に含まれるデータ要素の数は同一で、データ量(データ要素のサイズ等)は異なる。
第1例の分散システム340が入力する利用者プログラムは、図13で示された利用者プログラムである。同プログラムは、MyDataSet1とMyDataSet2の2つのデータ集合の直積集合に含まれる各要素に対して、MyMapという処理プログラムを適用することを記述している。同プログラムは、MyReduce処理についても記述するが本例では無視する。
図20Aは、第1例のデータ所在格納部3120が格納する情報を示す。即ち、MyDataSet1は、データサーバn2のローカルファイルd1と、データサーバn5のローカルファイルd2に分かれて格納されている。MyDataSet2は、データサーバn2のローカルファイルD1と、データサーバn5のローカルファイルD2に分かれて格納されている。
上述した各部分データは、多重化も符号化もされていない。また、各部分データのデータ量は2GBで同一である。
図20Bは、第1例の分散システム340の構成を示す。本分散システム340は、スイッチで接続されたサーバn1〜n6から構成される。サーバn1〜n6は、状況に応じ処理サーバ320としてもデータサーバ330としても機能する。本図に於いて、サーバn1〜n6の何れかが、クライアント300及び分散処理管理サーバ310として機能する。
先ず、分散処理管理サーバ310がクライアント300からデータ処理要求を受信する。分散処理管理サーバ310の負荷算出部313は、図20Aのデータ所在格納部3120からMyDataSet1及びMyDataSet2を構成するローカルファイル(d1、d2)及び(D1、D2)を列挙する。
同部は、MyDataSet1及びMyDataSet2の直積データ集合を格納するローカルファイル対の集合として、{(d1、D1)、(d1、D2)、(d2、D1)、(d2、D2)}を列挙する。同部は、ローカルファイル対から、データ所在格納部3120を参照してデータサーバリストの集合{(n2、n4)、(n2、n5)、(n6、n4)、(n6、n5)}を取得する。
次に、同部は、サーバ状態格納部3110を参照して、利用可能な処理サーバ320の集合として{n1、n2、n3、n4}を得る。
同部は、サーバ間負荷取得部318の出力結果等を参照して、各処理サーバ320と各データサーバリスト内のデータサーバ330とのサーバ間通信負荷を取得する。同部は、例えば処理サーバn1と各データサーバリスト内データサーバ330間のサーバ間通信負荷{(5、20)、(5、10)、(10、20)、(10、10)}を得る。
同部は、データサーバリスト毎に、サーバ間通信負荷を加算して、通信負荷行列Cにおける、処理サーバn1対応の列{25、15、30、20}を生成する。
同部は、同様の処理を処理サーバ320ごとに実施して、上述のデータサーバリストの集合と処理サーバ320の集合間の通信負荷行列Cを作成する。図20Cは、作成された通信負荷行列Cを示す。
処理割当部314は、当該通信負荷行列Cを入力して、式3乃至式4の制約式のもとで、式1を最小化する流量行列Fを求める。図20Dは、求められた流量荷行列Fを示す。
同部は、得られた流量荷行列Fを基に決定情報を作成して、処理サーバn1乃至n4に送信する。
図20Bは、当該決定情報に従ったデータ送受信を示す。例えば、処理サーバn1は、データサーバn6のデータd2と、データサーバn5のデータD2を受信して処理する。
第2例の分散システム340が入力する利用者プログラムは、図14で示された利用者プログラムである。同プログラムは、MyDataSet1とMyDataSet2の2つのデータ集合の一対一に関連付けられた要素対に対して、MyMapという処理プログラムを適用することを記述している。
図20Eは、第2例のデータ所在格納部3120が格納する情報を示す。第1例と異なり、各ローカルファイルのデータ量は同一ではない。ローカルファイルd1のデータ量は6GBであるが、d2、D1、D2は2GBである。
図20Fは、第2例の分散システム340の構成を示す。本分散システム340は、スイッチで接続されたサーバn1〜n6から構成される。サーバn1〜n6は、状況に応じ処理サーバ320としてもデータサーバ330としても機能する。本図に於いて、サーバn1〜n6の何れかが、クライアント300及び分散処理管理サーバ310として機能する。
先ず、分散処理管理サーバ310がクライアント300からデータ処理要求を受信する。分散処理管理サーバ310の負荷算出部313は、データ所在格納部3120を参照して、MyDataSet1及びMyDataSet2の各要素の組からなる全完全データ集合を得るためのデータサーバリストの集合を取得する。
図20Gは、負荷算出部313のデータサーバリスト取得の動作フローチャートである。この処理は、構造プログラムにassociatedが指定されたときに、図15のステップ1504の処理を置換するものである。図20Hは、本処理で使用される第1のデータ集合(MyDataSet1)用の作業表を示す。図20Iは、本処理で使用される第2のデータ集合(MyDataSet2)用の作業表を示す。図20Jは、本処理で作成される出力リストを示す。作業表や出力リストは、分散管理サーバ310の作業域316等に作成される。
第1のデータ集合MyDataSet1のデータd1には、インデックス1から450までのデータ要素が、データd2にはインデックス451〜600のデータ要素が格納されている。インデックスは、例えば、データ要素のデータ集合内に於ける順番である。
負荷算出部313は、本処理に先立ち図20Hの作業表に第1のデータ集合の各部分集合の最後のインデックスを格納する。同部は、データd1、d2のデータ量からこのデータ集合のデータ量として8GBを算出し、その全体に対する割合の累積した累積割合を図20Hの作業表に格納しても良い。
第2のデータ集合MyDataSet2のデータD1には、インデックス1から300までのデータ要素が、データD2にはインデックス301〜600のデータ要素が格納されている。
同部は、本処理に先立ち図20Iの作業表に第2のデータ集合の各部分データの最後のインデックスを格納する。同部は、データD1、D2のデータ量からこのデータ集合のデータ量として、4GBを算出し、その全体に対する割合の累積した累積割合を図20Iの作業表に格納しても良い。
負荷算出部313は、2つのデータ集合のポインタが各作業表の最初の行を指すように初期化、現在と過去のインデックスを0に初期化し、出力リストを空で初期化する(ステップ2001)。次のステップ2002、2503は最初の実行では意味を持たない。
同部は、2つのポインタが指す第1のデータ集合のインデックスと第2のデータ集合のインデックスを比較する(ステップ2004)。
第1のデータ集合のインデックス450と第2のデータ集合のインデックス300間では、第2のデータインデックスが小さいため、同部は、インデックス300を現在のインデックスに代入する。同部は、過去と現在のインデックス(0、300)の指す範囲のデータ要素で組を構成し、この情報を出力リスト第1行目(図20J)のインデックスおよび割合欄に格納する(ステップ2007)。
この組のデータ量として出力リストに格納される値は、実際にこの組でデータを生成して得られるデータ量である。当該値は、インデックスと同様に処理される累積割合の範囲と2つのデータ集合の和の累積データ量とから概算される値でも良い。
続いて、同部は第2の作業表のポインタだけ進めて、第2のデータ集合のインデックスを600とし(ステップ2007)、現在のインデックス300を過去のインデックスに代入する(ステップ2002)。
同部は、2回目の第1のデータ集合のインデックスと第2のデータ集合のインデックスを比較する(ステップ2004)。今度は、第1のデータ集合のインデックス450と第2のデータ集合のインデックス600間では、第1のデータインデックスが小さいため、同部は、そのポインタのインデックス450を現在のインデックスに代入する。同部は、過去と現在のインデックス(300、450)の指す範囲のデータ要素で組を構成し、この情報を出力リスト第2行目(図20J)に格納する(ステップ2005)。
同様に、最後のデータ要素組を構成し、この情報を出力リスト第3行目(図20J)に格納する(ステップ2006)し、その後、2つのデータ集合のポインタが最終要素600を指しているので(ステップ2003でYes)、処理を終了する。
同部は、処理の終了に当たり、出力リストのインデックスの各範囲対応のローカルファイル対((d1、D1)等)を出力リストに追記する。
負荷算出部313は、図20Jの出力リストのローカルファイル対から、ローカルファイルを格納したサーバの対、即ち、データサーバリストの集合{(n2、n4)、(n2、n5)、(n6、n5)}を取得する。
次に、同部は、サーバ状態格納部3110から利用可能な処理サーバ320の集合として{n1、n2、n3、n4}を得る。
同部は、サーバ間負荷取得部318の出力結果等を参照して、各処理サーバ320と各データリスト内のデータサーバ330とのサーバ間通信負荷を取得する。例えば、同部は処理サーバn1と各データサーバリスト内データサーバ330間のサーバ間通信負荷{(5、20)、(5、10)、(10、10)}を得る。
同部は、データサーバリスト毎に、サーバ間通信負荷をデータ要素数で規格化し、データ集合のデータ量で重み付け加算して、通信負荷行列Cにおける処理サーバn1対応の列{30、20、30}を生成する。重み付け加算に於いて、MyDataSet1(8GB)の部分データ格納データサーバ330とのサーバ間通信負荷は、MyDataSet2(4GB)の部分データ格納データサーバ330とのサーバ間通信負荷の2倍に重み付けられる。
同部は、同様の処理を処理サーバ320ごとに実施して、上述のデータサーバリストの集合と処理サーバ320の集合間の通信負荷行列Cを作成する。図20Kは、作成された通信負荷行列Cを示す。
処理割当部314は、当該通信負荷行列Cを入力して、式7乃至式8の制約の下での、式1の目的関数を最小化する流量行列Fを求める。図20Lは、求められた流量荷行列Fを示す。
同部は、得られた流量荷行列Fを基に決定情報を作成して、処理サーバn1乃至n4に送信する。
図20Fは、当該決定情報に従ったデータ送受信を示す。例えば、処理サーバn1は、データサーバn2のデータd1(2GB分)と、データサーバn5のデータD2(1GB分)を受信して処理する。
[第4の実施の形態の具体例]
本具体例では、処理対象データ集合の部分データがErasure符号化等されている。また、本具体例の分散処理管理サーバ310は、優先度に応じて、実行中の他の処理を中止してクライアント300の要求するデータ処理を実行するように処理サーバ320に要求する。
本実施例の分散処理管理サーバ310が備えるサーバ状態格納部3110は、図18Bに示す情報に加え、各処理サーバ320の構成情報3113に図示されない優先度を格納し得る。優先度は、処理サーバ320が実行中の他の処理の優先度である。
図19Aに示したプログラムが、本具体例のクライアント300に入力される利用者プログラムである。但し、当該利用者プログラムは、Set_config句内にサーバ利用量=4以外に、優先度=4の指定を追加的に包含する。優先度指定は、処理サーバ320が他の処理を実行中であっても、当該サーバの優先度が4以下であれば、本利用者プログラムが要求する処理を実行すべきことを指定する。
図19Aのプログラムは、データ集合MyDataSetに含まれるデータ要素に対してMyMap処理プログラムを適用することを記述している。
図21Aは、本具体例の分散システム340の構成を示す。本分散システム340は、スイッチで接続されたサーバn1〜n6から構成される。サーバn1〜n6は、状況に応じ処理サーバ320としてもデータサーバ330としても機能する。本図に於いて、サーバn1〜n6の何れかが、クライアント300及び分散処理管理サーバ310として機能する。
本具体例のサーバ状態格納部3110は、図18Bに示す情報に加え、処理サーバn5の構成情報3113に優先度=3を、処理サーバn6の構成情報3113に優先度=3を格納する。
図21Bは、本具体例のデータ所在格納部3120に格納されている情報を示す。この情報は、MyDataSetがd1、d2という部分データに分割されて格納されていること、各部分データが、冗長数3、最低取得数2で符号化あるいはQuorumされていることを示している。この情報は、d1がデータサーバn2、n4、n6に6GBずつ符号化格納され、d2はデータサーバn2、n5、n7に各々2GBずつ符号化格納されていることを記述している。
処理サーバ320は、例えば、データサーバn4上のデータd12とデータサーバn6上のデータd13を取得すると、部分データd1を復元できる。処理サーバ320は、例えば、データサーバn2上のデータd21とデータサーバn5上のデータd22を取得すると、部分データd2を復元できる。図21Cは、この符号化された部分データの復元例を示す。
クライアント300は、図19Aのプログラムを入力して、サーバ利用量=4、優先度=4の指定を含むデータ処理要求を分散処理管理サーバ310に送信する。
分散処理管理サーバ310の負荷算出部313は、データ所在格納部3120を参照して、データ集合MyDataSetの部分データとして(d1、d2)を列挙し、データサーバリストの集合{(n2,n4,n6),(n2,n5,n7)}を取得する。同部は同時に、各部分データが最低取得数2で格納されていることも取得する。
次に、同部は、サーバ状態格納部3110から、CPU使用率が閾値より低い等の理由で利用可能な処理サーバn1〜n4と、優先度が4より低い他の処理を実行中である処理サーバn6を選択し、利用可能な処理サーバ320の集合を得る。
同部は、上記で取得した各処理サーバ320と各データサーバリスト内の各データサーバ330とのサーバ間通信負荷を得る。例えば、同部は、処理サーバn1と各データサーバ330とのサーバ間通信負荷{(5,20,10),(5,20,10)}を得る。最低取得数が2であることから、同部は、d1とd2に対応する通信負荷の組に対し、小さい方から2番目までの値の総和をとり、完全データ単位量取得負荷{15,15}を得る。同部は、このとき対応する処理サーバ320の識別子も記録し、n1については{(n2,n6),(n2,n5)}を得る。
図21Dは、このようにして得られた通信負荷行列Cを示す。同部は、サーバ利用量=4との処理条件から、完全データ単位量取得負荷の大きな処理サーバn3を排除する。
処理割当部314は、式7乃至式8の制約の下での式1の目的関数を最小化する流量行列Fを求める。図21Eは、このようにして得られた流量行列Fを示す。
同部は、得られた流量行列Fを基に決定情報を作成して、処理サーバn1、n2、n4、n5に送信する。
図21Aは、当該決定情報に従ったデータ送受信を示す。例えば、処理サーバn1は、は部分データd1を2GB取得するため、データサーバn2とn6から各々2GB分のデータを取得し、これらを復号化して処理する。
[第5の実施の形態の具体例]
本実施の形態の具体例は、各処理サーバ320が不可避な処理負荷を有する場合と、有さない場合の2つある。第1例の通信負荷は構成から推定される遅延であり、目的関数は総負荷の低減である。第2例の通信負荷は計測で得られる最小帯域であり、目的関数は最大負荷を持つ処理サーバ320の通信負荷低減である。
第1例及び第2例で入力する利用者プログラムは図4に示されたものである。本具体例の分散処理管理サーバ310は、MyMap処理で出力されて複数のデータサーバ330に分散配置されるデータ集合を、複数のMyReduce処理の処理サーバ320の何れに送信するかを決定する。なお、本具体例に於けるデータサーバ330は、MyMap処理の処理サーバ320であることが多い。
本具体例のステム構成は図22Aに示されたものである。同図に示される分散システム340のサーバn1、n3、n4がMyMap処理を実行中であり、出力データ集合d1、d2、d3を作成している。本具体例に於いては、サーバn1、n3、n4がデータサーバ330となる。本具体例では、データサーバn1、n3、n4が格納する分散データのデータ量は、MyMap処理過程等で出力される見積もり値である。MyMap処理実行中のサーバn1、n3、n4は、入出力データ量比の期待値が1/4であるとの仮定に基づいて、見積もり値を1GB、1GB、2GBと算出し、分散処理管理サーバ310に送信する。分散処理管理サーバ310は、当該見積もり値をデータ所在格納部3120に格納する。
第1例において、MyReduce処理の実行開始に際し負荷算出部313は、データ所在格納部3120を参照して、データサーバ330の集合{n1,n3,n4}を列挙する。同部は、サーバ状態格納部3110を参照して、処理サーバ320の集合として{n2,n5}を列挙する。
同部は、それぞれの集合の要素間のサーバ間通信負荷に基づいて、通信負荷行列Cを作成する。図22Bは、作成された通信負荷行列Cを示す。
処理割当部314は、本通信負荷行列Cに基づいて、式13の制約のもとで式14の目的関数を最小化して、wj(j=n2,n5)を得て、流量行列Fを作成する。図22Cは、作成された流量行列Fを示す。
これに基づき、処理割当部314は、処理サーバn5に対して、データサーバn1、n3、n4のデータd1、d2、d3をそれぞれ1GB、1GB、2GBを取得して処理することを指示する決定情報を送信する。
なお、処理割当部314は、データサーバn1、n3、n4に対して、出力データを処理サーバn5に送信するように指示しても良い。
第2例においても、MyReduce処理の実行開始に際し負荷算出部313は、データ所在格納部3120を参照して、データサーバ330の集合{n1,n3,n4}を列挙する。
同部はサーバ状態格納部3110を参照して、処理サーバ320の集合{n1、n2、n3、n4}を取得する。さらに同部は、当該処理サーバ320の処理能力比5:4:4:5、MyMap処理実行等の不可避な負荷量(25,0,25,25)を取得する。
図22Dは、サーバ間負荷取得部318等が計測したサーバ間帯域を示す。負荷算出部313は、当該帯域値を用いて、式11からC’ij=1/経路ij間の最小帯域+20/サーバjの処理能力を算出し、通信負荷行列Cを作成する。図22Eは、作成された通信負荷行列Cを示す。
処理割当部314は、本通信負荷行列Cに基づいて、式13の制約のもとで式17の目的関数を最小化して、wj(0.12,0.42,0.21,0.25)を求める。同部は、このwjと分散データiのデータ量(1,1,2)から、流量行列Fを作成する。図22Fは、作成された流量行列Fを示す。
これに基づき、処理割当部314は、処理サーバn1〜n4に対して、データの取得と処理を指示する。あるいは、処理割当部314はデータサーバn1、n3、n4に対して、処理サーバn1〜n4にデータを送信するように指示しても良い。
例えば、MyMap処理の処理対象データ集合がWebページであり、MyMap処理が各ページに含まれる単語の数を出力し、MyReduce処理がその単語ごとの数を全Webページに渡って加算するとする。MyMap処理を実行するサーバn1、n3、n4は、上記流量行列Fに基づく決定情報を受信して、単語のハッシュ値を0〜1の間で算出し、以下のような振り分け送信を行う。1)ハッシュ値が0〜0.12であれば、当該単語のカウント値をサーバn1に送信する。2)ハッシュ値が0.12〜0.54であれば、当該単語のカウント値をサーバn2に送信する。3)ハッシュ値が0.54〜0.75であれば、当該単語のカウント値をサーバn3に送信する。4)ハッシュ値が0.75〜1.0であれば、当該単語のカウント値をサーバn4に送信する。
上述した各実施の形態の説明に於いて、分散処理管理サーバ310は、複数のデータサーバ330から複数の処理サーバ320にデータを送信する際の適切な通信を実現した。しかしながら、本発明は、データを生成する複数の処理サーバ320が、当該データを受け取って格納する複数のデータサーバ330に向けて送信する際の適切な通信実現にも利用できる。二つのサーバ間の通信負荷は、どちらが送信又は受信しても変わらないからである。
さらに、本発明は、送信と受信が混在した際の適切な通信実現にも利用できる。図23は、分散処理管理サーバ310、複数のデータサーバ330、複数の処理サーバ320に加え、複数のアウトプットサーバ350を包含する分散システム340を示す。本システムに於いて、データサーバ330の各データ要素は、複数の処理サーバ320の何れかの処理サーバ320で処理されて予めデータ要素毎に定められたいずれかのアウトプットサーバ350に格納される。
本システムの分散処理管理サーバ310は、各データ要素を処理する適切な処理サーバ320を選択することにより、処理サーバ320のデータサーバ330からの受信とアウトプットサーバ350への送信の両方を含む適切な通信を実現できる。
処理サーバ320とアウトプットサーバ350間の通信を逆方向の通信として適用することで、本システムは、二つのデータサーバ330の各々から関連付けられた二つのデータ要素の各々を取得する、第3の実施形態の第2例の分散処理管理サーバ310を使用できる。
図24は、基本構成の実施の形態を示す。分散処理管理サーバ310は、負荷算出部313と処理割当部314を備える。
負荷算出部313は、処理サーバ320の識別子jと、完全データ集合i毎に、当該完全データ集合に所属するデータを記憶するデータサーバ330のリストiを取得する。同部は、取得した各処理サーバ320と各データサーバ330間の単位データ量毎の通信負荷に基づいて、各処理サーバ320が、各完全データ集合の単位データ量を受信する通信負荷cijを含むc’ijを算出する。
処理割当部314は、各処理サーバ320が各完全データ集合を受信する0以上の通信量fijを、fijc’ijを含む値の所定和が最小となるように決定する。
本実施の形態の分散システム340の効果は、複数のデータサーバ330と複数の処理サーバ320が与えられた際に、全体として適切なサーバ間のデータ送受信を実現出来ることである。
その理由は、分散処理管理サーバ310が、各データサーバ330と各処理サーバ320の任意の組み合わせ全体の中から、送受信を行うデータサーバ330と処理サーバ320を決定するからである。換言すれば、分散処理管理サーバ310は、個別のデータサーバ330と処理サーバ320注目して逐次的にサーバ間のデータ送受信を決定しないからである。
以上、実施形態(及び実施例)を参照して本願発明を説明したが、本願発明は上記実施形態(及び実施例)に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2009年12月18日に出願された日本出願特願2009−287080を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (28)

  1. 複数の処理装置の識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータ装置の識別子(データ装置リストi)、を取得して、取得した各処理装置と各データ装置間の単位データ量毎の通信負荷(装置間通信負荷)に基づいて、各処理装置が、各完全データ集合の単位データ量を、各完全データ集合のデータ装置リスト内のデータ装置から受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出する負荷算出手段と、
    各処理装置が各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する処理割当手段、を備える分散処理管理装置。
  2. 一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるn個(nは複数)のデータ装置に記憶されるデータのうち、k個(kはnより小さい)の複数の集合(復元可能集合)のいずれか1つから構成可能であり、
    前記負荷算出手段は、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記完全データ集合の各復元可能集合について算出された当該処理装置と当該復元可能集合に属する各データを格納するデータ装置との間の装置間通信負荷の加算値のなかで最小値とする請求項1の分散処理管理装置。
  3. 一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるN個(Nは複数)のデータ装置に記憶されるデータから構成され、
    前記負荷算出手段は、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、当該処理装置と前記m個の各データ装置との間の装置間通信負荷を、各データのサイズ比又は各データの要素のサイズ比で重み付け加算した値とする請求項1又は2の分散処理管理装置。
  4. 一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定される一のデータ装置に記憶されるデータから構成され、
    前記負荷算出手段は、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記処理装置と前記一つのデータ装置との間の装置間通信負荷とする請求項1乃至3の何れかの分散処理管理装置。
  5. 前記負荷算出手段は、一つの処理装置と一つの完全データ集合の間の完全データ処理負荷を、当該処理装置と当該完全データ集合の間の完全データ単位量取得負荷と、当該処理装置の処理能力と負の相関関係を有する装置処理負荷とを加算て求める請求項1乃至4の何れかの分散処理管理装置。
  6. 完全データ単位量処理負荷は、完全データ単位量取得負荷であり、
    前記処理割当手段は、各処理装置の受信データ量を、各処理装置の処理能力に比例して決定する受信上限以下に制約して、各通信量を決定する、請求項1乃至4の何れかの分散処理管理装置。
  7. 前記処理割当手段は、各データ装置が、データを送信する処理装置ごとに同一割合のデータを送信するように制約して、各通信量を決定する、請求項1乃至6の何れかの分散処理管理装置。
  8. 前記処理割当手段は、各完全データ処理負荷の総和、又は、処理装置ごとの完全データ処理負荷の和のうちの最大値を前記所定の和とする請求項1乃至7の何れかの分散処理管理装置。
  9. 各完全データ処理負荷fijc’ijを含む値は、完全データ処理負荷と処理装置jの負荷δjの加算値であり、
    前記処理割当手段は、処理装置ごとの前記加算値の和のうちの最大値を前記所定の和とする請求項7の分散処理管理装置。
  10. 前記複数の処理装置と、
    前記複数のデータ装置と、
    ネットワークで接続された前記複数の処理装置又は前記複数のデータ装置に、前記決定情報に従ったデータの送受信を行うことを指示する前記処理割当手段を備える請求項1乃至8の分散処理管理装置、を包含する分散システム。
  11. コンピュータに、
    複数の処理装置の識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータ装置の識別子(データ装置リストi)、を取得して、取得した各処理装置と各データ装置間の単位データ量毎の通信負荷(装置間通信負荷)に基づいて、各処理装置が、各完全データ集合の単位データ量を、各完全データ集合のデータ装置リスト内のデータ装置から受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出する負荷算出処理と、
    各処理装置が各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する処理割当処理、を実行させる分散処理管理プログラムを格納するコンピュータ読み取り可能な記録媒体。
  12. 一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるn個(nは複数)のデータ装置に記憶されるデータのうち、k個(kはnより小さい)の複数の集合(復元可能集合)のいずれか1つから構成可能であり、
    前記コンピュータに、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記完全データ集合の各復元可能集合について算出された当該処理装置と当該復元可能集合に属する各データを格納するデータ装置との間の装置間通信負荷の加算値のなかで最小値とする前記負荷算出処理を実行させる、前記分散処理管理プログラムを格納する請求項11のコンピュータ読み取り可能な記録媒体。
  13. 一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるN個(Nは複数)のデータ装置に記憶されるデータから構成され、
    前記コンピュータに、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、当該処理装置と前記m個の各データ装置との間の装置間通信負荷を、各データのサイズ比又は各データの要素のサイズ比で重み付け加算した値とする前記負荷算出処理を実行させる、前記分散処理管理プログラムを格納する請求項11又は12のコンピュータ読み取り可能な記録媒体。
  14. 一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定される一のデータ装置に記憶されるデータから構成され、
    前記コンピュータに、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記処理装置と前記一つのデータ装置との間の装置間通信負荷とする前記負荷算出処理を実行させる、前記分散処理管理プログラムを格納する請求項11乃至13の何れかのコンピュータ読み取り可能な記録媒体。
  15. 前記コンピュータに、一つの処理装置と一つの完全データ集合の間の完全データ処理負荷を、当該処理装置と当該完全データ集合の間の完全データ単位量取得負荷と、当該処理装置の処理能力と負の相関関係を有する装置処理負荷とを加算て求める前記負荷算出処理を実行させる、前記分散処理管理プログラムを格納する請求項11乃至14の何れかのコンピュータ読み取り可能な記録媒体。
  16. 完全データ単位量処理負荷は、完全データ単位量取得負荷であり、
    前記コンピュータに、各処理装置の受信データ量を、各処理装置の処理能力に比例して決定する受信上限以下に制約して、各通信量を決定する前記処理割当処理を実行させる、前記分散処理管理プログラムを格納する請求項11乃至14の何れかのコンピュータ読み取り可能な記録媒体。
  17. 前記コンピュータに、各データ装置が、データを送信する処理装置ごとに同一割合のデータを送信するように制約して、各通信量を決定する前記処理割当処理を実行させる、前記分散処理管理プログラムを格納する請求項11乃至16の何れかのコンピュータ読み取り可能な記録媒体。
  18. 前記コンピュータに、各完全データ処理負荷の総和、又は、処理装置ごとの完全データ処理負荷の和のうちの最大値を前記所定の和とする前記処理割当処理を実行させる、前記分散処理管理プログラムを格納する請求項11乃至17の何れかのコンピュータ読み取り可能な記録媒体。
  19. 各完全データ処理負荷fijc’ijを含む値は、完全データ処理負荷と処理装置jの負荷δjの加算値であり、
    前記コンピュータに、処理装置ごとの前記加算値の和のうちの最大値を前記所定の和とする前記処理割当処理を実行させる、前記分散処理管理プログラムを格納する請求項17のコンピュータ読み取り可能な記録媒体。
  20. 複数の処理装置の識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータ装置の識別子(データ装置リストi)、を取得して、取得した各処理装置と各データ装置間の単位データ量毎の通信負荷(装置間通信負荷)に基づいて、各処理装置が、各完全データ集合の単位データ量を、各完全データ集合のデータ装置リスト内のデータ装置から受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出し、
    各処理装置が各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する、分散処理管理方法。
  21. 一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるn個(nは複数)のデータ装置に記憶されるデータのうち、k個(kはnより小さい)の複数の集合(復元可能集合)のいずれか1つから構成可能であり、
    一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記完全データ集合の各復元可能集合について算出された当該処理装置と当該復元可能集合に属する各データを格納するデータ装置との間の装置間通信負荷の加算値のなかで最小値とする、請求項20の分散処理管理方法。
  22. 一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるN個(Nは複数)のデータ装置に記憶されるデータから構成され、
    一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、当該処理装置と前記m個の各データ装置との間の装置間通信負荷を、各データのサイズ比又は各データの要素のサイズ比で重み付け加算した値とする、請求項20又は21の分散処理管理方法。
  23. 一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定される一のデータ装置に記憶されるデータから構成され、
    一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記処理装置と前記一つのデータ装置との間の装置間通信負荷とする、請求項20乃至22の何れかの分散処理管理方法。
  24. 一つの処理装置と一つの完全データ集合の間の完全データ処理負荷を、当該処理装置と当該完全データ集合の間の完全データ単位量取得負荷と、当該処理装置の処理能力と負の相関関係を有する装置処理負荷とを加算て求める、請求項20乃至23の何れかの分散処理管理方法。
  25. 完全データ単位量処理負荷は、完全データ単位量取得負荷であり、
    各処理装置の受信データ量を、各処理装置の処理能力に比例して決定する受信上限以下に制約して、各通信量を決定する、請求項20乃至24の何れかの分散処理管理方法。
  26. 各データ装置が、データを送信する処理装置ごとに同一割合のデータを送信するように制約して、各通信量を決定する、請求項20乃至25の何れかの分散処理管理方法。
  27. 各完全データ処理負荷の総和、又は、処理装置ごとの完全データ処理負荷の和のうちの最大値を前記所定の和とする、請求項20乃至26の何れかの分散処理管理方法。
  28. 各完全データ処理負荷fijc’ijを含む値は、完全データ処理負荷と処理装置jの負荷δjの加算値であり、
    処理装置ごとの前記加算値の和のうちの最大値を前記所定の和とする、請求項26の分散処理管理方法。
JP2011546196A 2009-12-18 2010-12-15 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法 Active JP5929196B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009287080 2009-12-18
JP2009287080 2009-12-18
PCT/JP2010/073061 WO2011074699A1 (ja) 2009-12-18 2010-12-15 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法

Publications (2)

Publication Number Publication Date
JPWO2011074699A1 true JPWO2011074699A1 (ja) 2013-05-02
JP5929196B2 JP5929196B2 (ja) 2016-06-01

Family

ID=44167446

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011546196A Active JP5929196B2 (ja) 2009-12-18 2010-12-15 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法

Country Status (3)

Country Link
US (1) US20120259983A1 (ja)
JP (1) JP5929196B2 (ja)
WO (1) WO2011074699A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101502896B1 (ko) * 2011-02-14 2015-03-24 주식회사 케이티 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법
US8548848B1 (en) 2011-06-21 2013-10-01 Google Inc. Mobile interstitial ads
US20140188451A1 (en) * 2011-08-01 2014-07-03 Nec Corporation Distributed processing management server, distributed system and distributed processing management method
US9229823B2 (en) * 2011-08-17 2016-01-05 International Business Machines Corporation Storage and retrieval of dispersed storage network access information
JP6256461B2 (ja) * 2013-02-15 2018-01-10 日本電気株式会社 情報処理装置
US10609405B2 (en) 2013-03-18 2020-03-31 Ecole De Technologie Superieure Optimal signal encoding based on experimental data
US9661331B2 (en) 2013-03-18 2017-05-23 Vantrix Corporation Method and apparatus for signal encoding realizing optimal fidelity
US9338450B2 (en) * 2013-03-18 2016-05-10 Ecole De Technologie Superieure Method and apparatus for signal encoding producing encoded signals of high fidelity at minimal sizes
WO2015033412A1 (ja) 2013-09-05 2015-03-12 株式会社日立製作所 計算機システム及び計算機システムの制御方法
US9679247B2 (en) 2013-09-19 2017-06-13 International Business Machines Corporation Graph matching
US10776325B2 (en) 2013-11-26 2020-09-15 Ab Initio Technology Llc Parallel access to data in a distributed file system
US9703611B1 (en) 2014-03-21 2017-07-11 Amazon Technologies, Inc. Isolating resources for utilization by tenants executing in multi-tenant software containers
US20170123731A1 (en) * 2015-01-08 2017-05-04 Hitachi, Ltd. Management method and management apparatus, and storage medium
CN106101195B (zh) * 2016-05-31 2020-03-13 北京奇艺世纪科技有限公司 一种数据分发方法及装置
CN106529965A (zh) * 2016-12-02 2017-03-22 浪潮(苏州)金融技术服务有限公司 一种数据处理方法、装置和系统
EP3627360A1 (en) * 2018-09-21 2020-03-25 Bricsys NV Improved annotation positioning in a cad drawing
JP7180362B2 (ja) * 2018-12-19 2022-11-30 富士通株式会社 情報処理装置、情報処理プログラムおよび情報処理システム
JP7368143B2 (ja) * 2019-08-27 2023-10-24 株式会社日立製作所 サービス配備制御システム、サービス配備制御方法及び記憶媒体
WO2021111585A1 (ja) * 2019-12-05 2021-06-10 日本電信電話株式会社 分散処理システム
CN113190384B (zh) * 2021-05-21 2022-07-22 重庆紫光华山智安科技有限公司 基于纠删码的数据恢复控制方法、装置、设备及介质
US11922042B2 (en) * 2021-10-29 2024-03-05 Scality, S.A. Data placement in large scale object storage system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01214961A (ja) * 1988-02-23 1989-08-29 Fujitsu Ltd 負荷分散方式
JPH0830558A (ja) * 1994-07-20 1996-02-02 Fujitsu Ltd 計算機システムにおける負荷分散方法及びそれを利用した計算機システム
US7003572B1 (en) * 2001-02-28 2006-02-21 Packeteer, Inc. System and method for efficiently forwarding client requests from a proxy server in a TCP/IP computing environment
JP2003058520A (ja) * 2001-08-09 2003-02-28 Mitsubishi Heavy Ind Ltd コンピュータの配置方法
US20030177166A1 (en) * 2002-03-15 2003-09-18 Research Foundation Of The State University Of New York Scalable scheduling in parallel processors
WO2004037994A2 (en) * 2002-10-22 2004-05-06 University Of Utah Research Foundation Managing biological databases
US7865582B2 (en) * 2004-03-24 2011-01-04 Hewlett-Packard Development Company, L.P. System and method for assigning an application component to a computing resource
US20060031444A1 (en) * 2004-05-28 2006-02-09 Drew Julie W Method for assigning network resources to applications for optimizing performance goals
US7647465B2 (en) * 2005-01-31 2010-01-12 Hewlett-Packard Development Company, L.P. Storage-system-portion sufficiency determination
US8341623B2 (en) * 2007-05-22 2012-12-25 International Business Machines Corporation Integrated placement planning for heterogenous storage area network data centers
US8543596B1 (en) * 2009-12-17 2013-09-24 Teradata Us, Inc. Assigning blocks of a file of a distributed file system to processing units of a parallel database management system

Also Published As

Publication number Publication date
US20120259983A1 (en) 2012-10-11
JP5929196B2 (ja) 2016-06-01
WO2011074699A1 (ja) 2011-06-23

Similar Documents

Publication Publication Date Title
JP5929196B2 (ja) 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法
JP6212655B2 (ja) 分散システム、計算機、及び、仮想マシンの配置方法
US10581957B2 (en) Multi-level data staging for low latency data access
US10223431B2 (en) Data stream splitting for low-latency data access
US9442954B2 (en) Method and apparatus for achieving optimal resource allocation dynamically in a distributed computing environment
WO2016078008A1 (zh) 调度数据流任务的方法和装置
US8874751B2 (en) Candidate set solver with user advice
US20150128150A1 (en) Data processing method and information processing apparatus
CN110308984B (zh) 一种用于处理地理分布式数据的跨集群计算系统
KR101656360B1 (ko) 자동 분산병렬 처리 하둡 시스템을 지원하는 클라우드 시스템
US10860450B1 (en) Automated query retry in a database environment
Zhang et al. Improving Hadoop service provisioning in a geographically distributed cloud
US20160154867A1 (en) Data Stream Processing Using a Distributed Cache
US20220327040A1 (en) Automated query retry execution in a database system
JP2022541261A (ja) リソース割振り方法、記憶デバイス、および記憶システム
Zhang et al. Online scheduling of heterogeneous distributed machine learning jobs
JP2016024612A (ja) データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
US20180004430A1 (en) Chunk Monitoring
JP2017191387A (ja) データ処理プログラム、データ処理方法およびデータ処理装置
KR101661475B1 (ko) 이기종 클러스터 상에서 하둡 부하 분산 방법, 이를 수행하기 위한 기록 매체 및 하둡 맵리듀스 시스템
US9110823B2 (en) Adaptive and prioritized replication scheduling in storage clusters
US10083121B2 (en) Storage system and storage method
US10824640B1 (en) Framework for scheduling concurrent replication cycles
US10855767B1 (en) Distribution of batch data to sharded readers
EP2765517B1 (en) Data stream splitting for low-latency data access

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150601

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160303

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160418

R150 Certificate of patent or registration of utility model

Ref document number: 5929196

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150