(57)【要約】      （修正有）【課題】広域で実行するマップリデュース処理のスループットを向上させる。【解決手段】情報処理システムは、複数の情報処理装置のうちいずれかの情報処理装置が、（Ａ）複数の情報処理装置が接続されたネットワークに含まれる複数のサブネットワークの各々について、当該サブネットワーク内の情報処理装置の中から１の情報処理装置を特定し、当該情報処理装置に対して、当該サブネットワーク内の情報処理装置が所持するデータに対して実行されたマップ処理の結果を集約する処理である第１のリデュース処理を割り当てる第１割り当て部と、（Ｂ）複数のサブネットワークの各々について実行された第１のリデュース処理の結果を集約する処理である第２のリデュース処理を、複数の情報処理装置のうちいずれかの情報処理装置に割り当てる第２割り当て部とを有する。【選択図】図１
2014016700.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置を有する情報処理システムにおいて、
前記複数の情報処理装置のうちいずれかの情報処理装置が、
前記複数の情報処理装置が接続されたネットワークに含まれる複数のサブネットワークの各々について、当該サブネットワーク内の情報処理装置の中から１の情報処理装置を特定し、当該情報処理装置に対して、当該サブネットワーク内の情報処理装置が所持するデータに対して実行されたマップ処理の結果を集約する処理である第１のリデュース処理を割り当てる第１割り当て部と、
前記複数のサブネットワークの各々について実行された前記第１のリデュース処理の結果を集約する処理である第２のリデュース処理を、前記複数の情報処理装置のうちいずれかの情報処理装置に割り当てる第２割り当て部と
を有することを特徴とする情報処理システム。
【請求項２】
前記第１のリデュース処理を割り当てられた情報処理装置が、
同じサブネットワークに属する情報処理装置から前記マップ処理の結果を収集し、収集した前記マップ処理の結果を集約し、
前記第２のリデュース処理を割り当てられた情報処理装置が、
前記第１のリデュース処理を実行した情報処理装置から前記第１のリデュース処理の結果を収集し、収集した前記第１のリデュース処理の結果を集約する
ことを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記マップ処理は、文書における単語の出現回数を計数する処理であり、
前記複数の情報処理装置のうちいずれかの情報処理装置が、
前記複数の情報処理装置が所持しているデータに対しユニークワードの数を計数する処理を実行し、計数された前記ユニークワードの数が予め定められた値の範囲内である場合に、前記第１割り当て部及び前記第２割り当て部に処理を実行させる実行制御部
をさらに有する請求項１又は２記載の情報処理システム。
【請求項４】
複数の情報処理装置を含む情報処理システムの制御方法において、
前記複数の情報処理装置のうちいずれかの情報処理装置が、
前記複数の情報処理装置が接続されたネットワークに含まれる複数のサブネットワークの各々について、当該サブネットワーク内の情報処理装置の中から１の情報処理装置を特定し、当該情報処理装置に対して、当該サブネットワーク内の情報処理装置が所持するデータに対して実行されたマップ処理の結果を集約する処理である第１のリデュース処理を割り当て、
前記複数のサブネットワークの各々について実行された前記第１のリデュース処理の結果を集約する処理である第２のリデュース処理を、前記複数の情報処理装置のうちいずれかの情報処理装置に割り当てる
ことを特徴とする情報処理システムの制御方法。
【請求項５】
複数の情報処理装置を含む情報処理システムの制御プログラムにおいて、
前記複数の情報処理装置のうちいずれかの情報処理装置に、
前記複数の情報処理装置が接続されたネットワークに含まれる複数のサブネットワークの各々について、当該サブネットワーク内の情報処理装置の中から１の情報処理装置を特定させ、当該情報処理装置に対して、当該サブネットワーク内の情報処理装置が所持するデータに対して実行されたマップ処理の結果を集約する処理である第１のリデュース処理を割り当てさせ、
前記複数のサブネットワークの各々について実行された前記第１のリデュース処理の結果を集約する処理である第２のリデュース処理を、前記複数の情報処理装置のうちいずれかの情報処理装置に割り当てさせる
ことを特徴とする情報処理システムの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理システムの制御方法及び制御プログラムに関する。
【背景技術】
【０００２】
大規模なマップリデュース（ＭａｐＲｅｄｕｃｅ）ジョブを広域で実行する場合、スループットを向上させるためには、通信の遅延を発生させないことが重要である。従来、通信の遅延によるスループットの低下を抑制するため、以下のような技術が開発されている。
【０００３】
例えば、ＯＳＤＣ（Open Science Data Cloud）においては、データセンタ間を専用線で接続することによって、広域でＨａｄｏｏｐを実行できるようにしている。
【０００４】
また、広域のネットワークにおいてはＴＣＰ（Transmission Control Protocol）の処理が原因で遅延が発生することがあるため、ＵＤＰ（User Datagram Protocol）を基にしたＵＤＴ（UDP-based Data Transfer Protocol）というプロトコルが提案されている。さらに、Ｓｅｃｔｏｒ／Ｓｐｈｅｒｅという技術においては、分散ファイルシステム及び並列データ処理を実現するため、ＵＤＴをコア技術として採用している。
【０００５】
また、ＣｌｏｕｄＢＬＡＳＴと呼ばれる技術においては、ＶｉＮｅ（Virtual Network）と呼ばれる、トランスポート層のＷＡＮ（Wide Area Network）技術を使用することで、スループットの向上を図っている。
【０００６】
しかし、上で述べたような技術をマップリデュースジョブに利用するのは必ずしも適切ではない場合がある。例えば、上で述べたような技術はコストがかかるだけでなく、世界中に点在するデータセンタ等において日々発生するデータを柔軟に解析することが困難である。さらに、ＴＣＰ（Transmission Control Protocol）以外のトランスポート層プロトコルを採用すると、既存のファイアーウォールの枠組みを利用できなくなることがあるため、セキュリティ上の問題がある。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Robert L. Grossman, Yunhong Gu, Joe Mambretti, Michal Sabala, Alex Szalay, Kevin White. An Overview of the Open Science Data Cloud (2010)
【非特許文献２】http://udt.sourceforge.net/
【非特許文献３】http://sector.sourceforge.net/
【非特許文献４】Andrea Matsunaga, Mauricio Tsugawa and Jose Fortes. CloudBLAST: Combining MapReduce and Virtualization on Distributed Resources for Bioinformatics Applications (2008)
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従って、１つの側面では、本発明の目的は、広域で実行するマップリデュース処理のスループットを向上させるための技術を提供することである。
【課題を解決するための手段】
【０００９】
本発明に係る情報処理システムは、複数の情報処理装置のうちいずれかの情報処理装置が、（Ａ）複数の情報処理装置が接続されたネットワークに含まれる複数のサブネットワークの各々について、当該サブネットワーク内の情報処理装置の中から１の情報処理装置を特定し、当該情報処理装置に対して、当該サブネットワーク内の情報処理装置が所持するデータに対して実行されたマップ処理の結果を集約する処理である第１のリデュース処理を割り当てる第１割り当て部と、（Ｂ）複数のサブネットワークの各々について実行された第１のリデュース処理の結果を集約する処理である第２のリデュース処理を、複数の情報処理装置のうちいずれかの情報処理装置に割り当てる第２割り当て部とを有する。
【発明の効果】
【００１０】
広域で実行するマップリデュース処理のスループットを向上させることができるようになる。
【図面の簡単な説明】
【００１１】
【図１】図１は、システムの概要を示す図である。
【図２】図２は、管理構造体を示す図である。
【図３】図３は、第１の実施の形態のメインの処理フローを示す図である。
【図４】図４は、ＣＷＣを行う場合にユーザが入力するコマンドの一例を示す図である。
【図５】図５は、ＣＷＣを行わない場合にユーザが入力するコマンドの一例を示す図である。
【図６】図６は、Ｈａｄｏｏｐストリーミングインタフェースによる実装の一例を示す図である。
【図７】図７は、Ｊａｖａ（登録商標）による実装の一例を示す図である。
【図８】図８は、データセンタ１について１段階目のマップリデュースジョブを実行するための処理の処理フローを示す図である。
【図９】図９は、データセンタ２について１段階目のマップリデュースジョブを実行するための処理の処理フローを示す図である。
【図１０】図１０は、１段階目のマップリデュースジョブについて説明するための図である。
【図１１】図１１は、第１の実施の形態のメインの処理フローを示す図である。
【図１２】図１２は、２段階目のマップリデュースジョブを実行するための処理の処理フローを示す図である。
【図１３】図１３は、２段階目のマップリデュースジョブについて説明するための図である。
【図１４】図１４は、第２の実施の形態のメインの処理フローを示す図である。
【図１５】図１５は、第２の実施の形態のメインの処理フローを示す図である。
【図１６】図１６は、Ｈａｄｏｏｐの概要を示す図である。
【図１７】図１７は、Ｈａｄｏｏｐのコンポーネントを示す図である。
【図１８】図１８は、広域Ｈａｄｏｏｐのコンポーネントを示す図である。
【図１９】図１９は、広域Ｈａｄｏｏｐの動作について説明するための図である。
【図２０】図２０は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１２】
［実施の形態１］
図１に、第１の実施の形態におけるシステムの概要を示す。ネットワーク５１及び５２は、例えばＬＡＮ（Local Area Network）であり、ＷＡＮ（Wide Area Network）の回線を介して接続されている。ネットワーク５１には、データセンタ１におけるノード１１及びノード１２が接続されており、ネットワーク５２には、データセンタ２におけるノード２１及び２２が接続されている。本実施の形態においては、例えばデータセンタ１が東京に設けられており、データセンタ２がニューヨークに設けられている等、広域でマップリデュースジョブを実行することを想定している。
【００１３】
マップリデュースジョブの対象となるデータは文書のデータであり、入力データ格納部１１６、入力データ格納部１２６、入力データ格納部２１６及び入力データ格納部２２６に格納されている。１つのマップリデュースジョブには、１又は複数のマップタスク及びリデュースタスクが含まれる。マップタスクにおいて文書に含まれる各単語の出現回数を計数し、リデュースタスクにおいてマップタスクの結果を集約する。
【００１４】
ノード１１は、ジョブクライアント１１２と、第１割当部及び第２割当部を含むジョブトラッカー１１３と、タスクトラッカー１１４とを含む。ノード１１には、実行結果格納部１１５及び入力データ格納部１１６が接続されている。
【００１５】
ノード１２は、実行制御部１２１と、ジョブクライアント１２２と、タスクトラッカー１２３とを含む。ノード１２には、実行結果格納部１２５及び入力データ格納部１２６が接続されている。
【００１６】
ノード２１は、ジョブクライアント２１２と、タスクトラッカー２１３とを含む。ノード２１には、実行結果格納部２１５及び入力データ格納部２１６が接続されている。
【００１７】
ノード２２は、ジョブクライアント２２２と、タスクトラッカー２２３とを含む。ノード２２には、実行結果格納部２２５及び入力データ格納部２２６が接続されている。
【００１８】
実行制御部１２１は、ユーザからマップリデュースジョブの実行指示を受け付けると、実行指示に係るマップリデュースジョブを分割し、データセンタ毎（すなわちネットワーク毎）にマップリデュースジョブを生成する。また、実行制御部１２１は、分割後のマップリデュースジョブの情報をジョブクライアント１２２に出力する。
【００１９】
ジョブクライアント１２２は、マップリデュースジョブの実行を開始する。具体的には、ジョブクライアント１２２は、受け取ったマップリデュースジョブの情報を、ジョブトラッカー１１３に送信する。
【００２０】
ジョブトラッカー１１３は、マップタスク及びリデュースタスクのスケジューリングを実行する。具体的には、ジョブトラッカー１１３は、タスクの割り当てを要求するタスク割当要求をタスクトラッカーから受信した場合に、そのタスクトラッカーを含むノードが実行可能なタスクを割り当てる。タスク割当要求には、例えばマップタスクのためのスロットのうち空いているスロットの数及びリデュースタスクのためのスロットのうち空いているスロットの数が含まれる。
【００２１】
但し、本実施の形態においては、各データセンタにおいてリデュースタスクを実行するようにしている。従って、ジョブトラッカー１１３における第１割当部１１３１は、データセンタ１において実行されたマップタスクの結果を集約するリデュースタスクを、データセンタ１内のノードに割り当てる。同様に、第１割当部１１３１は、データセンタ２において実行されたマップタスクの結果を集約するリデュースタスクを、データセンタ２内のノードに実行させる。そして、ジョブトラッカー１１３における第２割当部１１３２は、各データセンタにおいて実行されたリデュースタスクの結果を集約するリデュースタスクを、ユーザにより指定されたノードに割り当てる。
【００２２】
ジョブトラッカー１１３は、図２に示すような管理構造体を保持しており、このような管理構造体を利用して割り当てを管理する。例えば、図２におけるラックｃ２の配下のノードに対しては、データ１、データ２及びデータ３に対するタスクは割り当てないが、データ４についてのタスクは割り当てる。
【００２３】
タスクトラッカー１１４乃至２２４は、実行中のマップタスク及びリデュースタスクの数を管理する。タスクトラッカー１１４乃至２２４は、マップタスクのためのスロット及びリデュースタスクのためのスロットが空いた場合には、空いた分のタスクの割り当てを要求するタスク割当要求をジョブトラッカー１１３に送信する。そして、タスクトラッカー１１４乃至２２４は、タスクの種別及び入力データの位置に関する情報等を含む割当データをジョブトラッカー１１３から受信した場合には、タスクを実行するためのプロセスを起動する。タスクの実行結果は、実行結果格納部１１５乃至２２５に格納される。
【００２４】
なお、ジョブクライアント、ジョブトラッカー及びタスクトラッカーについては、後に示した付録を参照のこと。
【００２５】
次に、図３乃至図１３を用いて、図１に示したシステムの動作について説明する。以下では、本実施の形態におけるマップリデュースジョブの実行方法をＣＷＣ（Cluster Wide Combiner）と呼ぶ。
【００２６】
まず、ノード１２を操作するユーザは、マップリデュースジョブの実行結果の出力先の情報及び入力データのＵＲＩ（Uniform Resource Identifier）を含むジョブ実行指示を入力する。ノード１２における実行制御部１２１は、ユーザからジョブ実行指示の入力を受け付ける（図３：ステップＳ１）。
【００２７】
ユーザは、ジョブ実行指示として、例えば図４に示すようなコマンドを入力する。ユーザは、コマンドの先頭に「ｃｗｃ．ｐｙ」というデータを加えることによって、ＣＷＣを指定する。図４において、入力データは「−ｉｎｐｕｔ」以下で指定され、出力先は「−ｏｕｔｐｕｔ」以下で指定されている。一方、ＣＷＣではなく通常のマップリデュースジョブを指定する場合、図５に示すように、「ｃｗｃ．ｐｙ」というデータが加えられていないコマンドを入力する。
【００２８】
なお、図４に示したコマンドは、Ｐｙｔｈｏｎによって実装をする場合のコマンドの例である。Ｐｙｔｈｏｎによって実装をする場合、図６に示すように、ユーザはＨａｄｏｏｐストリーミングインタフェースと同じ引数のコマンド（ここでは、ｃｗｃ．ｐｙとする）を作り、ｃｗｃ．ｐｙを実行すればよい。なお、Ｈａｄｏｏｐストリーミングインタフェースについては、後に示した付録を参照のこと。
【００２９】
マップリデュースジョブをＪａｖａ（登録商標）で記述する場合、引数をＪａｖａ（登録商標）ＡＰＩ（Application Programming Interface）によって設定し、その後ＪｏｂＣｌｉｅｎｔ．ｒｕｎｊｏｂを呼び出す。そこで、例えばＪａｖａ（登録商標）によって実装をする場合、図７に示すように、ジョブクライアントを継承した子クラス（例えば、ＪｏｂＣｌｉｅｎｔ＿ｃｗｃ）を用意し、マップリデュースジョブのＪａｖａ（登録商標）プログラムからその子クラスを呼び出す。これによって、ＪｏｂＣｌｉｅｎｔ＿ｃｗｃが引数をインタセプトできるようになる。
【００３０】
図３の説明に戻り、実行制御部１２１は、入力データのＵＲＩをジョブ実行指示から抽出する（ステップＳ３）。そして、実行制御部１２１は、入力データのＵＲＩを、ＵＲＩに含まれるデータセンタの識別情報に従ってグループ分けする（ステップＳ５）。ステップＳ５においては、同じデータセンタ内に存在する入力データのＵＲＩが同じグループになるようにグループ分けをする。例えばユーザによって図４に示すような実行指示が入力された場合、ＵＲＩにおける「／ｄａｔａ」の直後の数字がデータセンタの識別情報である。
【００３１】
実行制御部１２１は、処理対象のデータセンタを特定するための変数である変数ｘを１に設定する（ステップＳ７）。
【００３２】
実行制御部１２１は、ｘがＮより大きいか判断する（ステップＳ９）。Ｎは、データセンタの数であり、本実施の形態の場合は２である。ｘがＮより大きい場合（ステップＳ９：Ｙｅｓルート）、２段階目のマップリデュースジョブを実行するため、処理は端子Ａを介して図１１のＳ１５に移行する。一方、ｘがＮ以下である場合（ステップＳ９：Ｎｏルート）、実行制御部１２１は、データセンタｘについて１段階目のマップリデュースジョブを実行する（ステップＳ１１）。ステップＳ１１の処理については、図８乃至図１０を用いて説明する。
【００３３】
まず、図８を用いて、データセンタ１についてマップリデュースジョブを実行する場合の処理について説明する。実行制御部１２１は、データセンタ１についてのマップリデュースジョブの情報をジョブクライアント１２２に出力する。マップリデュースジョブの情報には、入力データのＵＲＩが含まれる。ジョブクライアント１２２は、データセンタ１についてのマップリデュースジョブの情報をジョブトラッカー１１３に送信する（図８：ステップＳ３１）。
【００３４】
ノード１１におけるジョブトラッカー１１３は、データセンタ１についてのマップリデュースジョブの情報を受信する（ステップＳ３３）。ここで、入力データのＵＲＩは、ノード１１における入力データ格納部１１６とノード１２における入力データ格納部１２６とを示しているとする。従って、第１割当部１１３１は、タスクトラッカー１１４及びタスクトラッカー１２４からタスク割当要求を受信した場合に限り、タスクを割り当てる。
【００３５】
ノード１２におけるタスクトラッカー１２４は、タスク割当要求をノード１１におけるジョブトラッカー１１３に送信する（ステップＳ３５）。タスク割当要求には、例えばノードの識別情報、マップタスクのためのスロットのうち空いているスロットの数及びリデュースタスクのためのスロットのうち空いているスロットの数等が含まれる。
【００３６】
ノード１１におけるジョブトラッカー１１３は、タスク割当要求をノード１２から受信する（ステップＳ３７）。ジョブトラッカー１１３における第１割当部１１３１は、マップタスク及びリデュースタスクについての割当データをノード１２におけるタスクトラッカー１２４に送信する（ステップＳ３９）。割当データには、例えばタスクの種別、マップタスクの場合には入力データの位置に関する情報、オフセット及び入力データのサイズ等が含まれる。なお、図示していないが、ノード１１におけるタスクトラッカー１１４もタスク割当要求をジョブトラッカー１１３に出力し、マップタスクについての割当データをジョブトラッカー１１３から受け取ったものとする。
【００３７】
ノード１２におけるタスクトラッカー１２４は、マップタスク及びリデュースタスクについての割当データをノード１１から受信する（ステップＳ４１）。そして、タスクトラッカー１２４は、マップタスクを実行するためのプロセスを起動し、マップタスクを実行させる（ステップＳ４５）。
【００３８】
一方、ノード１１におけるタスクトラッカー１１４は、マップタスクを実行するためのプロセスを起動し、マップタスクを実行させる（ステップＳ４３）。タスクトラッカー１１４は、マップタスクの実行結果をノード１２に送信する（ステップＳ４７）。なお、実際には、リデュースタスクを実行するノード１２が、ノード１１に対してマップタスクの実行結果を要求した場合に、ノード１１がノード１２にマップタスクの実行結果を送信する。
【００３９】
ノード１２におけるタスクトラッカー１２４は、ノード１１からマップタスクの実行結果を受信する（ステップＳ４９）。タスクトラッカー１２４は、リデュースタスクを実行するためのプロセスを起動し、１段目のリデュースタスクを実行させる（ステップＳ５１）。ステップＳ５１のリデュースタスクにおいては、ノード１１におけるマップタスクの実行結果及びノード１２におけるマップタスクの実行結果を集約し、リデュースタスクの結果を実行結果格納部１２５に格納する。また、リデュースタスクが完了すると、完了通知を実行制御部１２１に出力する。
【００４０】
次に、図９を用いて、データセンタ２についてマップリデュースジョブを実行する場合の処理について説明する。実行制御部１２１は、データセンタ１についてのマップリデュースジョブの情報をジョブクライアント１２２に出力する。マップリデュースジョブの情報には、入力データのＵＲＩが含まれる。ジョブクライアント１２２は、データセンタ２についてのマップリデュースジョブの情報をジョブトラッカー１１３に送信する（図９：ステップＳ６１）。
【００４１】
ノード１１におけるジョブトラッカー１１３は、データセンタ２についてのマップリデュースジョブの情報を受信する（ステップＳ６３）。ここで、入力データのＵＲＩは、ノード２１における入力データ格納部２１６とノード２２における入力データ格納部２２６とを示しているとする。従って、第１割当部１１３１は、タスクトラッカー２１４及びタスクトラッカー２２４からタスク割当要求を受信した場合に限り、タスクを割り当てる。
【００４２】
ノード２１におけるタスクトラッカー２１４は、タスク割当要求をノード１１におけるジョブトラッカー１１３に送信する（ステップＳ６５）。ノード２２におけるタスクトラッカー２２４は、タスク割当要求をノード１１におけるジョブトラッカー１１３に送信する（ステップＳ６７）。
【００４３】
ノード１１におけるジョブトラッカー１１３は、タスク割当要求をノード２１及びノード２２から受信する（ステップＳ６９）。なお、説明を簡単にするためノード２１及びノード２２から同時にタスク割当要求を受信するように記載しているが、タスク割当要求を受信するタイミングは必ずしも同じではない。
【００４４】
第１割当部１１３１は、マップタスクについての割当データをノード２２におけるタスクトラッカー２２４に送信する（ステップＳ７１）。また、第１割当部１１３１は、マップタスク及びリデュースタスクについての割当データをノード２１におけるタスクトラッカー２１４に送信する（ステップＳ７３）。
【００４５】
ノード２２におけるタスクトラッカー２２４は、マップタスクについての割当データをノード１１から受信する（ステップＳ７５）。そして、タスクトラッカー２２４は、マップタスクを実行するためのプロセスを起動し、マップタスクを実行させる（ステップＳ７７）。
【００４６】
ノード２１におけるタスクトラッカー２１４は、マップタスク及びリデュースタスクについての割当データをノード１１から受信する（ステップＳ７９）。そして、タスクトラッカー２１４は、マップタスクを実行するためのプロセスを起動し、マップタスクを実行させる（ステップＳ８１）。
【００４７】
ノード２２におけるタスクトラッカー２２４は、マップタスクの実行結果をノード２１に送信する（ステップＳ８３）。なお、実際には、リデュースタスクを実行するノード２１が、ノード２２に対してマップタスクの実行結果を要求した場合に、ノード２２がノード２１にマップタスクの実行結果を送信する。
【００４８】
ノード２１におけるタスクトラッカー２１４は、ノード２２からマップタスクの実行結果を受信する（ステップＳ８５）。タスクトラッカー２１４は、リデュースタスクを実行するためのプロセスを起動し、１段目のリデュースタスクを実行させる（ステップＳ８７）。ステップＳ８７のリデュースタスクにおいては、ノード２１におけるマップタスクの実行結果及びノード２２におけるマップタスクの実行結果を集約し、リデュースジョブの結果を実行結果格納部２１５に格納する。また、リデュースタスクが完了すると、完了通知をノード１２における実行制御部１２１に送信する。
【００４９】
図１０は、図８及び図９を用いて説明した内容を図示したものである。実行制御部１２１は、データセンタ毎にマップリデュースジョブについての情報をジョブクライアント１２２に出力する（図１０における（１））。ジョブクライアント１２２は、データセンタ毎にマップリデュースジョブについての情報をジョブトラッカー１１３に出力する（図１０における（２））。
【００５０】
ジョブトラッカー１１３は、タスクトラッカーからタスク割当要求を受信すると、そのタスクトラッカーに割当データを送信する（図１０における（３））。タスクトラッカーは、プロセスを起動し、マップタスク及びリデュースタスクを実行させる（図１０における（４））。リデュースタスクの実行結果は、実行結果格納部に格納される。
【００５１】
例えば、マップタスクが、ｅｘａｍｐｌｅという単語の出現回数を計数するというタスクであり、マップタスク１の結果が（ｅｘａｍｐｌｅ，１）、すなわちｅｘｍａｐｌｅという単語が１回出現したとする。また、マップタスク２の結果が（ｅｘａｍｐｌｅ，２）、マップタスク３の結果が（ｅｘａｍｐｌｅ，２）、マップタスク４の結果が（ｅｘａｍｐｌｅ，３）であるとする。
【００５２】
この場合、ノード１２におけるリデュースタスクの結果は（ｅｘａｍｐｌｅ，３）となり、ノード２１におけるリデュースタスクの結果は（ｅｘａｍｐｌｅ，５）となる。
【００５３】
図３の説明に戻り、実行制御部１２１は、ｘをインクリメントし（ステップＳ１３）、ステップＳ９の処理に戻る。
【００５４】
図１１の説明に移行し、実行制御部１２１は、１段階目のマップリデュースジョブの完了通知をいずれのデータセンタからも受信したか判断する（ステップＳ１５）。いずれかのデータセンタから完了通知を受信していない場合（ステップＳ１５：Ｎｏルート）、ステップＳ１５の処理を再度実行する。
【００５５】
一方、１段階目のマップリデュースジョブの完了通知をいずれのデータセンタからも受信した場合（ステップＳ１５：Ｙｅｓルート）、２段階目のジョブを実行する（ステップＳ１７）。ステップＳ１７の処理については、図１２及び図１３を用いて説明する。
【００５６】
まず、実行制御部１２１は、２段階目のマップリデュースジョブの情報をジョブクライアント１２２に出力する。２段階目のマップリデュースジョブの情報には、出力先の情報が含まれる。ジョブクライアント１２２は、２段階目のマップリデュースジョブの情報をジョブトラッカー１１３に送信する（図１２：ステップＳ９１）。
【００５７】
ノード１１におけるジョブトラッカー１１３は、２段階目のマップリデュースジョブの情報を受信する（ステップＳ９２）。ここで、出力先の情報は、ノード１１における実行結果格納部１１５を示しているとする。従って、第２割当部１１３２は、タスクトラッカー１１４からリデュースタスクについてのタスク割当要求を受信した場合に限り、リデュースタスクを割り当てる。
【００５８】
そして、タスクトラッカー１１４が、リデュースタスクについてのタスク割当要求をジョブトラッカー１１３に出力する。そして、ジョブトラッカー１１３における第２割当部１１３２は、タスクトラッカー１１４に割当データを出力する（ステップＳ９３）。受け取った割当データには、リデュースタスクの実行結果を保持しているノードの識別情報等が含まれる。従って、タスクトラッカー１１４は、リデュースタスクの実行結果を保持するノードであるノード１２及びノード２１に１段階目のリデュースタスクの実行結果を要求する。
【００５９】
これに応じ、ノード１２におけるタスクトラッカー１２４は、実行結果格納部１２５から１段階目のリデュースタスクの実行結果を読み出し、ノード１１に送信する（ステップＳ９４）。また、ノード２１におけるタスクトラッカー２１４は、実行結果格納部２１５から１段階目のリデュースタスクの実行結果を読み出し、ノード１１に送信する（ステップＳ９５）。
【００６０】
ノード１１におけるタスクトラッカー１１４は、ノード１２及びノード２１から１段階目のリデュースタスクの実行結果を受信する（ステップＳ９６）。タスクトラッカー１１４は、リデュースタスクを実行するためのプロセスを起動し、２段階目のリデュースタスクを実行させる（ステップＳ９７）。ステップＳ９７のリデュースタスクにおいては、ノード１２におけるリデュースタスクの実行結果及びノード２１におけるリデュースタスクの実行結果を集約し、結果を実行結果格納部１１５に格納する。また、リデュースタスクが完了すると、２段階目のマップリデュースジョブの完了通知をノード１２における実行制御部１２１に送信する。
【００６１】
図１３は、図１２を用いて説明した内容を図示したものである。実行制御部１２１は、２段階目のマップリデュースジョブについての情報をジョブクライアント１２２に出力する（図１３における（１））。ジョブクライアント１２２は、２段階目のマップリデュースジョブについての情報をジョブトラッカー１１３に出力する（図１３における（２））。
【００６２】
ジョブトラッカー１１３における第２割当部１１３２は、タスクトラッカーからタスク割当要求を受信すると、そのタスクトラッカーに割当データを送信する（図１３における（３））。ここでは、ノード１１のタスクトラッカー１１４からリデュースタスクについてのタスク割当要求を受け取った場合に、２段階目のリデュースタスクについての割当データをタスクトラッカー１１４に出力する。タスクトラッカー１１４は、１段階目のリデュースタスクの実行結果をノード１２及びノード２２に要求する。ノード１２におけるタスクトラッカー１２４は実行結果格納部１２５から１段階目のリデュースタスクの結果を読み出し、ノード１１に送信する。また、ノード２１におけるタスクトラッカー２１４は実行結果格納部２１５から１段階目のリデュースタスクの結果を読み出し、ノード１１に送信する。なお、図１３においてはマップタスクを実行するようになっているが、実際には実行結果格納部からデータを読み出しているだけである。そして、タスクトラッカー１１４は、２段階目のリデュースタスクのプロセスを起動し、リデュースタスクを実行させる（図１３における（４））。２段階目のリデュースタスクの実行結果は、実行結果格納部１１５に格納される。
【００６３】
例えば、マップタスクが、ｅｘａｍｐｌｅという単語の出現回数を計数するというタスクであり、実行結果格納部１２５に格納されている１段階目のリデュースタスクの結果が（ｅｘａｍｐｌｅ，３）、実行結果格納部２１５に格納されている１段階目のリデュースタスクの結果が（ｅｘａｍｐｌｅ，５）であったとする。この場合、ノード１１における２段階目のリデュースタスクの結果は（ｅｘａｍｐｌｅ，８）となる。２段階目のシャッフルフェーズにおいては、１段階目のリデュースタスクの結果がデータセンタ間を転送されることになる。但し、データセンタ毎にリデュースタスクの結果を縮約した上で転送をしているので、転送されるデータの量は通常の広域Ｈａｄｏｏｐと比較して少ない。
【００６４】
図１１の説明に戻り、実行制御部１２１は、２段階目のマップリデュースジョブの完了通知を受信したか判断する（ステップＳ１９）。２段階目のマップリデュースジョブの完了通知を受信していない場合（ステップＳ１９：Ｎｏルート）、再度ステップＳ１９の処理を実行する。一方、２段階目のマップリデュースジョブの完了通知を受信した場合（ステップＳ１９：Ｙｅｓルート）、処理を終了する。
【００６５】
通常の広域Ｈａｄｏｏｐにおいては、例えば図１９に示すように、マップタスクの結果をいずれか１のノードが収集する。従って、ノード２１において実行されたマップタスク３の結果及びノード２２において実行されたマップタスク４の結果がＷＡＮ上を流れることになる。一方、ＣＷＣの場合、各データセンタにおいてマップタスクの結果を集約した後に、いずれか１のノードにおいてさらに集約をするようにしている。従って、例えば図１３の例であれば、ＷＡＮ上を流れるのはノード２１において実行されたリデュースタスクの結果だけである。よって、ＣＷＣによれば、ＷＡＮ上を流れるデータの量を減らすことができるので、ＷＡＮにおいて通信遅延が起こりにくくなり、スループットを向上させることができるようになる。
【００６６】
［実施の形態２］
ＣＷＣは、処理対象となる文書のデータに含まれるユニークワードの数によって効果の大きさが変わる。ユニークワードの数が少なすぎると、もともとＨａｄｏｏｐに用意されているコンバイナによってデータの量はかなり削減されるため、ＣＷＣによる効果が目立ちにくくなる。逆に、ユニークワードの数が多すぎると、１段階目において実行する複数のマップタスクの間で共通のキーを有するレコードが少なくなるため、ＣＷＣを実行してもデータセンタ内においてはレコードがあまり縮約されない。それどころか、マップリデュースジョブを２段階に分割するためのオーバーヘッドにより、却ってマップリデュースジョブのスループットが低下することがある。そこで、本実施の形態においては、以下のような処理を実行する。
【００６７】
まず、ノード１２を操作するユーザは、マップリデュースジョブの実行結果の出力先の情報及び入力データのＵＲＩを含むジョブ実行指示を入力する。ノード１２における実行制御部１２１は、ユーザからジョブ実行指示の入力を受け付ける（図１４：ステップＳ１０１）。
【００６８】
実行制御部１２１は、入力データのユニークワード数を算出する（ステップＳ１０３）。ステップＳ１０３においては、実行制御部１２１は、少なくとも一部の入力データを収集し、ユニークワード数を算出する。
【００６９】
実行制御部１２１は、ユニークワード数が所定の範囲内（すなわち、予め定められた第１の閾値以上であり且つ予め定められた第２の閾値以下）にあるか判断する（ステップＳ１０５）。ユニークワード数が所定の範囲内にない場合（ステップＳ１０５：Ｎｏルート）、実行制御部１２１は、通常のＨａｄｏｏｐによってマップリデュースジョブを実行する（ステップＳ１０７）。通常のＨａｄｏｏｐによってマップリデュースジョブを実行する場合、実行制御部１２１は、その旨をジョブクライアント１２２に通知する。
【００７０】
一方、ユニークワード数が所定の範囲内にある場合（ステップＳ１０５：Ｙｅｓルート）、入力データのＵＲＩをジョブ実行指示から抽出し、ＵＲＩに含まれるデータセンタの識別情報に従ってグループ分けする（ステップＳ１０９）。ステップＳ１０９においては、同じデータセンタ内に存在する入力データのＵＲＩが同じグループになるようにグループ分けをする。
【００７１】
実行制御部１２１は、処理対象のデータセンタを特定するための変数である変数ｘを１に設定する（ステップＳ１１１）。
【００７２】
実行制御部１２１は、ｘがＮより大きいか判断する（ステップＳ１１３）。Ｎは、データセンタの数であり、本実施の形態の場合は２である。ｘがＮより大きい場合（ステップＳ１１３：Ｙｅｓルート）、２段階目のマップリデュースジョブを実行するため、処理は端子Ａを介して図１５のＳ１１９に移行する。一方、ｘがＮ以下である場合（ステップＳ１１３：Ｎｏルート）、実行制御部１２１は、データセンタｘについて１段階目のマップリデュースジョブを実行する（ステップＳ１１５）。ステップＳ１１５の処理については、図８乃至図１０を用いて説明したとおりである。
【００７３】
実行制御部１２１は、ｘをインクリメントし（ステップＳ１１７）、ステップＳ１１３の処理に戻る。
【００７４】
図１５の説明に移行し、実行制御部１２１は、１段階目のマップリデュースジョブの完了通知をいずれのデータセンタからも受信したか判断する（ステップＳ１１９）。いずれかのデータセンタから完了通知を受信していない場合（ステップＳ１１９：Ｎｏルート）、ステップＳ１１９の処理を再度実行する。
【００７５】
一方、１段階目のマップリデュースジョブの完了通知をいずれのデータセンタからも受信した場合（ステップＳ１１９：Ｙｅｓルート）、２段階目のジョブを実行する（ステップＳ１２１）。ステップＳ１２１の処理については、図１２及び図１３を用いて説明したとおりである。
【００７６】
実行制御部１２１は、２段階目のマップリデュースジョブの完了通知を受信したか判断する（ステップＳ１２３）。２段階目のマップリデュースジョブの完了通知を受信していない場合（ステップＳ１２３：Ｎｏルート）、再度ステップＳ１２３の処理を実行する。一方、２段階目のマップリデュースジョブの完了通知を受信した場合（ステップＳ１２３：Ｙｅｓルート）、処理を終了する。
【００７７】
以上のような処理を実施すれば、ＣＷＣが効果的である場合に限りＣＷＣを実行することができるようになるので、ＣＷＣによってスループットが低下するという事態が発生することを防げるようになる。
【００７８】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したノード１１乃至２２の機能ブロック構成は必ずしも実際のプログラムモジュール構成に対応するものではない。
【００７９】
また、上で説明した各テーブルの構成は一例であって、必ずしも上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００８０】
なお、上で述べたノード１１乃至２２は、コンピュータ装置であって、図２０に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００８１】
［付録］
本付録においては、本実施の形態に関連する技術について説明する。
【００８２】
１．Ｈａｄｏｏｐ
Ｈａｄｏｏｐは、大量のデータをクラスタノードが並列に読み込み、高速にバッチ処理（Ｈａｄｏｏｐジョブ又は単にジョブとも呼ばれる）を実行するためのフレームワークである。
【００８３】
図１６に、Ｈａｄｏｏｐジョブの概要を示す。Ｈａｄｏｏｐジョブは、マップタスク、リデュースタスク及びコンバイナを含む。
【００８４】
マップタスクは、入力データを読み込み、キーバリューペアの形式のレコードを生成する処理である。生成したレコードの送信先は、例えばハッシュ関数等によって決定される。一般に、複数のマップタスクを並列に実行することができる。
【００８５】
リデュースタスクは、レコードを集約し、バッチ処理としての結果を出力する処理である。一般に、複数のリデュースタスクを並列に実行することができる。
【００８６】
コンバイナは、マップタスクの後処理として行われる処理である。コンバイナは、マップタスクの結果の中に同じキーを含む複数のレコードがある場合に、それらを集約することで、転送データ量を削減する。
【００８７】
マップタスクを実行するフェーズはマップフェーズと呼ばれ、リデュースタスクを実行するフェーズはリデュースフェーズと呼ばれ、マップタスクの結果をリデュースタスクに転送するフェーズはシャッフルフェーズと呼ばれる。
【００８８】
マップタスク及びリデュースタスクの内容は、ユーザが関数の形式で記述することができる。それらの関数は、マップ関数及びリデュース関数と呼ばれる。
【００８９】
図１７を用いて、Ｈａｄｏｏｐのコンポーネントについて説明する。Ｈａｄｏｏｐは、ジョブクライアント、ジョブトラッカー及びタスクトラッカーを含む。
【００９０】
ジョブクラインアントは、クラスタにおける各ノード上で動作する。ジョブクライアントは、ユーザが指定したＨａｄｏｏｐジョブを開始する役割を有する。ジョブクライアントは、ユーザが指定したＨａｄｏｏｐジョブの情報をジョブトラッカーに送信する。これらの処理は、図１７における（１）及び（２）に関係する
【００９１】
ジョブトラッカーは、Ｈａｄｏｏｐジョブを起動し、Ｈａｄｏｏｐジョブの進捗状況を管理する。また、ジョブトラッカーは、タスクトラッカーからの要求に応じ、マップタスク及びリデュースタスクを割り当てる（すなわちスケジューリングする）。これらの処理は、図１７における（３）に関係する。
【００９２】
タスクトラッカーは、実行するマップタスクの数及びリデュースタスクの数を管理する。タスクトラッカーは、マップタスクのためのスロット又はリデュースタスクのためのスロットが空いた場合には、空いた分のタスクの割り当てをジョブトラッカーに要求する。タスクトラッカーは、ジョブトラッカーからタスクが割り当てられると、タスクを実行するためのプロセスを起動する。これらの処理は、図１７における（４）に関係する。
【００９３】
２．広域Ｈａｄｏｏｐ
ＷＡＮを介して接続された複数のデータセンタを跨ってＨａｄｏｏｐジョブを実行する場合、例えば図１８に示すように、複数のデータセンタを跨ってクラスタを構築する。広域のクラスタを構築する場合にも、論理的な構成は上で説明したものと変わらない。通常、ジョブトラッカーはいずれかのデータセンタ内に設けられる。ジョブクライアントはクラスタにおける各ノード上で動作するため、ユーザは任意のノードにおいてＨａｄｏｏｐジョブの実行を指示することができる。
【００９４】
また、図１９に示すように、マップタスクの結果をいずれか１のノード（図１９の例では、ノード１２）が収集し、リデュースタスクにおいてマップタスクの結果を集約する。
【００９５】
３．Ｈａｄｏｏｐストリーミングインタフェース
Ｈａｄｏｏｐストリーミングインタフェースは、マップ関数及びリデュース関数の入出力として標準入出力を利用できるようにすることで、Ｊａｖａ（登録商標）以外のプログラミング言語でマップ関数及びリデュース関数を記述できるようにする仕組みである。Ｈａｄｏｏｐジョブを起動する際は、コマンドの引数でマップ関数、リデュース関数、入力ファイル及び出力ファイル等を指定する。
【００９６】
なお、通常は、Ｈａｄｏｏｐジョブを起動するためのインタフェースはＪａｖａ（登録商標）のＡＰＩであるので、Ｈａｄｏｏｐジョブを実行するために適切なＪａｖａ（登録商標）クラスを実装する。また、マップ関数及びリデュース関数もそれぞれＪａｖａ（登録商標）クラスとして実装する。
【００９７】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００９８】
本実施の形態の第１の態様に係る情報処理システムは、複数の情報処理装置のうちいずれかの情報処理装置が、（Ａ）複数の情報処理装置が接続されたネットワークに含まれる複数のサブネットワークの各々について、当該サブネットワーク内の情報処理装置の中から１の情報処理装置を特定し、当該情報処理装置に対して、当該サブネットワーク内の情報処理装置が所持するデータに対して実行されたマップ処理の結果を集約する処理である第１のリデュース処理を割り当てる第１割り当て部と、（Ｂ）複数のサブネットワークの各々について実行された第１のリデュース処理の結果を集約する処理である第２のリデュース処理を、複数の情報処理装置のうちいずれかの情報処理装置に割り当てる第２割り当て部とを有する。
【００９９】
広域においてマップリデュース処理を実行する場合、スループットを向上させるためには、サブネットワーク間を結ぶネットワークにおいて通信遅延が発生しないようにすることが重要である。そこで、上で述べたようにすれば、サブネットワーク間を結ぶネットワーク上に流れるデータの量を削減することができるので、広域で実行するマップリデュース処理のスループットを向上させることができるようになる。
【０１００】
また、第１のリデュース処理を割り当てられた情報処理装置が、（Ｃ）同じサブネットワークに属する情報処理装置からマップ処理の結果を収集し、収集したマップ処理の結果を集約し、第２のリデュース処理を割り当てられた情報処理装置が、（Ｄ）第１のリデュース処理を実行した情報処理装置から第１のリデュース処理の結果を収集し、収集した第１のリデュース処理の結果を集約するようにしてもよい。
【０１０１】
このようにすれば、サブネットワーク間を結ぶネットワーク上を流れるデータの量を、リデュース処理を単純に１回だけ実行する場合よりも少なくすることができるようになる。
【０１０２】
また、上で述べたマップ処理は、文書における単語の出現回数を計数する処理であってもよい。そして、複数の情報処理装置のうちいずれかの情報処理装置が、（Ｅ）複数の情報処理装置が所持しているデータに対しユニークワードの数を計数する処理を実行し、計数されたユニークワードの数が予め定められた値の範囲内である場合に、第１割り当て部及び第２割り当て部に処理を実行させる実行制御部をさらに有してもよい。
【０１０３】
ユニークワード数が極端に少ない又は多い場合には、上で述べたように第１及び第２のリデュース処理を実行したとしても、スループットがあまり向上しないことがある。そこで、上で述べたようにすれば、スループットの向上を期待できる場合にのみ処理を実行させることができるようになる。
【０１０４】
また、上で述べたサブネットワークはＬＡＮ（Local Area Network）であり、上で述べた複数のサブネットワークを含むネットワークはＷＡＮ（Wide Area Network）であってもよい。
【０１０５】
このようにすれば、例えばインターネット等のＷＡＮにおいてマップリデュース処理を実行する場合にも対処できるようになる。
【０１０６】
また、上で述べた第２割り当て部は、（ｂ１）複数の情報処理装置のうちユーザから指定された情報処理装置に第２リデュース処理を割り当てるようにしてもよい。
【０１０７】
このようにすれば、ユーザはマップリデュース処理の出力先の情報処理装置を指定できるようになる。
【０１０８】
本実施の形態の第２の態様に係る制御方法は、複数の情報処理装置のうちいずれかの情報処理装置が、（Ｆ）複数の情報処理装置が接続されたネットワークに含まれる複数のサブネットワークの各々について、当該サブネットワーク内の情報処理装置の中から１の情報処理装置を特定し、当該情報処理装置に対して、当該サブネットワーク内の情報処理装置が所持するデータに対して実行されたマップ処理の結果を集約する処理である第１のリデュース処理を割り当て、（Ｇ）複数のサブネットワークの各々について実行された第１のリデュース処理の結果を集約する処理である第２のリデュース処理を、複数の情報処理装置のうちいずれかの情報処理装置に割り当てる処理を含む。
【０１０９】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【０１１０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１１１】
（付記１）
複数の情報処理装置を有する情報処理システムにおいて、
前記複数の情報処理装置のうちいずれかの情報処理装置が、
前記複数の情報処理装置が接続されたネットワークに含まれる複数のサブネットワークの各々について、当該サブネットワーク内の情報処理装置の中から１の情報処理装置を特定し、当該情報処理装置に対して、当該サブネットワーク内の情報処理装置が所持するデータに対して実行されたマップ処理の結果を集約する処理である第１のリデュース処理を割り当てる第１割り当て部と、
前記複数のサブネットワークの各々について実行された前記第１のリデュース処理の結果を集約する処理である第２のリデュース処理を、前記複数の情報処理装置のうちいずれかの情報処理装置に割り当てる第２割り当て部と
を有することを特徴とする情報処理システム。
【０１１２】
（付記２）
前記第１のリデュース処理を割り当てられた情報処理装置が、
同じサブネットワークに属する情報処理装置から前記マップ処理の結果を収集し、収集した前記マップ処理の結果を集約し、
前記第２のリデュース処理を割り当てられた情報処理装置が、
前記第１のリデュース処理を実行した情報処理装置から前記第１のリデュース処理の結果を収集し、収集した前記第１のリデュース処理の結果を集約する
ことを特徴とする付記１記載の情報処理システム。
【０１１３】
（付記３）
前記マップ処理は、文書における単語の出現回数を計数する処理であり、
前記複数の情報処理装置のうちいずれかの情報処理装置が、
前記複数の情報処理装置が所持しているデータに対しユニークワードの数を計数する処理を実行し、計数された前記ユニークワードの数が予め定められた値の範囲内である場合に、前記第１割り当て部及び前記第２割り当て部に処理を実行させる実行制御部
をさらに有する付記１又は２記載の情報処理システム。
【０１１４】
（付記４）
前記サブネットワークはＬＡＮ（Local Area Network）であり、
前記複数のサブネットワークを含むネットワークはＷＡＮ（Wide Area Network）である
ことを特徴とする付記１乃至３のいずれか１つ記載の情報処理システム。
【０１１５】
（付記５）
前記第２割り当て部は、
前記複数の情報処理装置のうちユーザから指定された情報処理装置に前記第２リデュース処理を割り当てる
ことを特徴とする付記１乃至４のいずれか１つ記載の情報処理システム。
【０１１６】
（付記６）
複数の情報処理装置を含む情報処理システムの制御方法において、
前記複数の情報処理装置のうちいずれかの情報処理装置が、
前記複数の情報処理装置が接続されたネットワークに含まれる複数のサブネットワークの各々について、当該サブネットワーク内の情報処理装置の中から１の情報処理装置を特定し、当該情報処理装置に対して、当該サブネットワーク内の情報処理装置が所持するデータに対して実行されたマップ処理の結果を集約する処理である第１のリデュース処理を割り当て、
前記複数のサブネットワークの各々について実行された前記第１のリデュース処理の結果を集約する処理である第２のリデュース処理を、前記複数の情報処理装置のうちいずれかの情報処理装置に割り当てる
ことを特徴とする情報処理システムの制御方法。
【０１１７】
（付記７）
複数の情報処理装置を含む情報処理システムの制御プログラムにおいて、
前記複数の情報処理装置のうちいずれかの情報処理装置に、
前記複数の情報処理装置が接続されたネットワークに含まれる複数のサブネットワークの各々について、当該サブネットワーク内の情報処理装置の中から１の情報処理装置を特定させ、当該情報処理装置に対して、当該サブネットワーク内の情報処理装置が所持するデータに対して実行されたマップ処理の結果を集約する処理である第１のリデュース処理を割り当てさせ
前記複数のサブネットワークの各々について実行された前記第１のリデュース処理の結果を集約する処理である第２のリデュース処理を、前記複数の情報処理装置のうちいずれかの情報処理装置に割り当てさせる
ことを特徴とする情報処理システムの制御プログラム。
【符号の説明】
【０１１８】
１１，１２，２１，２２  ノード    １２１  実行制御部
１１２，１２２，２１２，２２２  ジョブクライアント    １１３  ジョブトラッカー
１１３１  第１割当部    １１３２  第２割当部
１１４，１２４，２１４，２２４  タスクトラッカー
１１５，１２５，２１５，２２５  実行結果格納部
１１６，１２６，２１６，２２６  入力データ格納部
５１，５２  ネットワーク
【図１】
2014016700.tif 000003
【図２】
2014016700.tif 000004
【図３】
2014016700.tif 000005
【図４】
2014016700.tif 000006
【図５】
2014016700.tif 000007
【図６】
2014016700.tif 000008
【図７】
2014016700.tif 000009
【図８】
2014016700.tif 000010
【図９】
2014016700.tif 000011
【図１０】
2014016700.tif 000012
【図１１】
2014016700.tif 000013
【図１２】
2014016700.tif 000014
【図１３】
2014016700.tif 000015
【図１４】
2014016700.tif 000016
【図１５】
2014016700.tif 000017
【図１６】
2014016700.tif 000018
【図１７】
2014016700.tif 000019
【図１８】
2014016700.tif 000020
【図１９】
2014016700.tif 000021
【図２０】
2014016700.tif 000022