JP2014044677A - 送信制御プログラム、通信ノード、および送信制御方法 - Google Patents

送信制御プログラム、通信ノード、および送信制御方法 Download PDF

Info

Publication number
JP2014044677A
JP2014044677A JP2012187993A JP2012187993A JP2014044677A JP 2014044677 A JP2014044677 A JP 2014044677A JP 2012187993 A JP2012187993 A JP 2012187993A JP 2012187993 A JP2012187993 A JP 2012187993A JP 2014044677 A JP2014044677 A JP 2014044677A
Authority
JP
Japan
Prior art keywords
node
influence
degree
communication
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.)
Pending
Application number
JP2012187993A
Other languages
English (en)
Inventor
Toshiaki Saeki
敏章 佐伯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012187993A priority Critical patent/JP2014044677A/ja
Priority to US13/930,791 priority patent/US20140067992A1/en
Publication of JP2014044677A publication Critical patent/JP2014044677A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】システムにかかる負荷を抑制すること。
【解決手段】送信対象となるデータX’1を記憶するノード101#Aは、データX’1と同一内容となるデータX’2を記憶するノード101#Cを特定する。次に、ノード101#Aは、第1ノードとなる自ノードと送信先ノードとなるノード101#Dの通信に対する影響度f(#A,#D)と、第2ノードとなる他ノードと送信先ノードの通信に対する影響度f(#C,#D)を比較する。自ノードと送信先ノードの通信に対する影響度が大きいため、ノード101#Aは、データX’1を送信しない。また、ノード101#Cは、自ノードと送信先ノードとなるノード101#Dの通信に対する影響度f(#C,#D)と、他ノードと送信先ノードの通信に対する影響度f(#A,#D)を比較する。自ノードと送信先ノードの通信に対する影響度が小さいため、ノード101#Cは、データX’2を送信する。
【選択図】図1B

Description

本発明は、送信制御プログラム、通信ノード、および送信制御方法に関する。
従来、データを複製して、ネットワークに含まれる複数のノードが複製したデータを分散して記憶する技術がある。たとえば、ネットワーク内に、更新が可能なコアデータと、読込が可能な複製データを分散配置し、コアデータを利用状況やネットワーク状況に応じて動的に移動する技術がある。また、ファイルサーバのデータの冗長度を維持するため、冗長度の低下したデータと同一のデータを保存し、かつ、送信先ノードからネットワーク距離の最も近いファイルサーバを送信元ノードに設定する技術がある。(たとえば、下記特許文献1、2を参照。)
特開2003−256256号公報 特開2005−141528号公報
しかしながら、従来技術では、システム内で同一のデータを記憶するノード群からデータの送信元ノードを決める際に、ノード間にて通信することになり、システムにかかる負荷の増大を招いてしまう。
1つの側面では、本発明は、システムにかかる負荷を抑制することを目的とする。
本発明の一側面によれば、システムに含まれる複数のノードから、第1ノードが記憶するデータと同一の内容のデータを記憶する第2ノードを特定し、複数のノードのうちのデータの送信先となる送信先ノードと複数のノードの各々のノードとの通信がシステムの性能に与える影響度合いを表す影響度を各々のノードに対応して記憶する記憶部を参照して、第1ノードと送信先ノードとの通信がシステムの性能に与える影響度合いを表す影響度と、特定した第2ノードと送信先ノードとの通信がシステムの性能に与える影響度合いを表す影響度と、を比較し、比較結果に基づいて、複数のノードと通信する通信部を制御して、送信先ノードにデータを送信する送信制御プログラム、通信ノード、および送信制御方法が提案される。
本発明の一態様によれば、システムにかかる負荷を抑制することができるという効果を奏する。
図1Aは、本実施の形態にかかる分散処理システムの動作例を示す説明図(その1)である。 図1Bは、本実施の形態にかかる分散処理システムの動作例を示す説明図(その2)である。 図1Cは、本実施の形態にかかる分散処理システムの動作例を示す説明図(その3)である。 図2は、分散処理システムのシステム構成例を示す説明図である。 図3は、ノードのハードウェア構成の一例を示すブロック図である。 図4は、分散処理システムのソフトウェア構成例を示す説明図である。 図5は、HDFSの記憶内容の一例を示す説明図である。 図6は、HDFSによるファイルの記憶方法の一例を示す説明図である。 図7は、ノードの機能構成例を示すブロック図である。 図8は、経路テーブルの記憶内容の一例を示す説明図である。 図9は、MapReduce処理の具体例を示す説明図である。 図10は、Map処理の詳細例を示す説明図である。 図11は、Map処理結果の送信先ノードの一例を示す説明図である。 図12は、データX’の第1の送信方法の例を示す説明図である。 図13は、データX’の第2の送信方法の例を示す説明図である。 図14は、データX’の第3の送信方法の例を示す説明図である。 図15は、データX’の送信判断の一例を示す説明図である。 図16は、経路影響度関数fの第1の具体例を示す説明図である。 図17は、経路影響度関数fの第2の具体例を示す説明図である。 図18は、経路影響度関数fの第3の具体例を示す説明図である。 図19は、経路影響度関数fの第4の具体例を示す説明図である。 図20は、経路影響度関数fの第5の具体例を示す説明図である。 図21は、MapReduce処理手順の一例を示すフローチャートである。 図22は、送信判断処理手順の一例を示すフローチャートである。
以下に添付図面を参照して、開示の送信制御プログラム、通信ノード、および送信制御方法の実施の形態を詳細に説明する。また、本実施の形態にかかる通信ノードの例として、分散処理システムに含まれる、分散処理を実行するノードにて説明を行う。
図1Aは、本実施の形態にかかる分散処理システムの動作例を示す説明図(その1)である。また、図1Bは、本実施の形態にかかる分散処理システムの動作例を示す説明図(その2)である。また、図1Cは、本実施の形態にかかる分散処理システムの動作例を示す説明図(その3)である。本実施の形態にかかる分散処理システム100は、分散処理を実行するノード101#A〜101#Dと、スイッチ102#1〜102#3を含む。以下、スイッチ102を、単に「スイッチ」と呼称する。
本実施の形態での分散処理について、分散処理システム100がHadoopを採用した例を用いて説明する。Hadoopは、膨大なデータを分散して処理する技術の一つであるMapReduceを実行するソフトウェアである。MapReduceでは、データを複数に分割し、複数のノードの各々が、分割されたデータを処理対象とするMap処理を実行する。そして、複数のノードの少なくともいずれかのノードが、Map処理の処理結果を処理対象とするReduce処理を実行する。
Map処理は、別のMap処理とは独立したものであり、全てのMap処理を並列に実行できる処理である。たとえば、Map処理は、分散処理システム100内の一部のデータを用いて、他の部分のデータを処理対象とする別のMap処理とは独立して、KeyValueの形式にてデータを出力する処理である。KeyValueの形式となるデータとは、Valueフィールドに格納された任意の保存したい値と、Keyフィールドに格納された保存したいデータに対応する一意の標識と、の組である。
Reduce処理は、Map処理の処理結果の属性をもとにMap処理の処理結果を集約した1以上の処理結果を処理対象とする処理である。たとえば、Map処理の処理結果が、KeyValueの形式となるデータである場合、Reduce処理は、Map処理の処理結果の属性となるKeyフィールドをもとにMap処理の結果を集約した1つ以上の処理結果を処理対象とする処理である。また、たとえば、Reduce処理は、ValueフィールドをもとにMap処理結果を集約した1つ以上の処理結果を処理対象とする処理であってもよい。
以下、Hadoopにて用いられている用語を用いて、本実施の形態にかかる分散処理システム100の動作を説明する。「ジョブ」は、Hadoopにおける処理単位である。たとえば、文字列の中に含まれる単語の出現数を単語ごとに計数する処理が1つのジョブとなる。「タスク」は、ジョブが分割された処理単位である。タスクは、Map処理を実行するMapタスクと、Reduce処理を実行するReduceタスクとの2種類がある。Reduceタスクは、Reduce処理を実行しやすくするため、Reduce処理の前に、KeyフィールドをもとにMap処理の処理結果を集約するシャッフル&ソート処理を実行する。
図1Aは、分散処理システム100にて、Map処理の終了状態を示している。具体的に、ノード101#Aは、Map処理の処理対象となるデータX1に対して、Map処理を実行してデータX’1を出力し、ノード101#Aの記憶領域にデータX’1を記憶する。また、データX1と同一内容となるデータX2を有するノード101#Cも、データX’1と同一内容となるデータX’2を出力し、ノード101#Cの記憶領域にデータX’2を記憶する。また、図1Aにおいて、ノード101#Dは、シャッフル&ソート処理を実行する装置であり、データX’1またはデータX’2の送信先ノードである。
以下、送信対象となるデータを記憶するノードを「記憶ノード」と呼称する。また、「記憶ノード」のうちの、データを送信するノードを、「送信元ノード」と呼称する。また、データを受信するノードを「送信先ノード」と呼称する。
図1Aの例では、ノード101#A、101#Cが記憶ノードとなり、ノード101#Dが送信先ノードとなる。本実施の形態にかかる分散処理システム100は、ノード101#A、101#Cのうち、分散処理システム100にかかる負荷を抑制しつつ、ネットワークの通信量が小さくなる送信元ノードを決定する。
図1Aにて、第1ノードとなるノード101#Aは、データX’1と同一内容となるデータX’2を記憶するノード101#Cを第2ノードとなる他ノードとして特定する。同様に、ノード101#Cは、データX’2と同一内容となるデータX’1を記憶するノード101#Aを他ノードとして特定する。具体的な特定方法は、図7にて後述する。
図1Bは、各記憶ノードが送信元ノードとなった場合の、送信元ノードと送信先ノードの通信が分散処理システム100の性能に与える影響度合いを表す影響度を示した図である。以下、送信元ノードと送信先ノードの通信が分散処理システム100の性能に与える影響度合いを、単に、ノード101#Aとノード101#Bの通信に対する影響度のように記載することもある。影響度は、各ノード101の記憶領域に記憶されている。
また、影響度は、値が大きいと分散処理システム100の性能が低下する度合いが大きくなり、値が小さいと分散処理システム100の性能が低下する度合いが小さくなるものとする。また、影響度は、値が大きいと分散処理システム100の性能が低下する度合いが小さくなるようにしてもよい。以下、特に記載がない限り、影響度は、値が大きいと分散処理システム100の性能が低下する度合いが大きくなるものとする。
また、影響度を算出する関数を、経路影響度関数f(送信元ノードの識別情報,送信先ノードの識別情報)と定義する。第1ノードとなるノード101#Aは、自ノードと送信先ノードの通信に対する影響度f(#A,#D)と、他ノードと送信先ノードの通信に対する影響度f(#C,#D)を比較する。「#A」、「#D」は、それぞれ、ノード101#Aとノード101#Dの識別情報を示す。以下、「#x」という記載については、装置#xについての識別情報であるとする。f(#A,#D)がf(#C,#D)より大きいため、ノード101#Aは、送信元ノードにならず、データX’1を送信しない。
同様に、ノード101#Cは、自ノードと送信先ノードの通信に対する影響度f(#C,#D)と、他ノードと送信先ノードの通信に対する影響度f(#A,#D)を比較する。この場合、f(#C,#D)がf(#A,#D)より小さいため、ノード101#Cは、送信元ノードになり、データX’2を送信する。
図1Cは、ノード101#Cが、ノード101#DにデータX’2を送信している状態を示す。図1Cで示すように、ボトルネックとなりやすいスイッチ102#1を避けた通信が行われている。このように、同一内容のデータを持つ各ノード101が、同一基準で送信先ノードとの通信にかかる負荷が他ノードより低いか判断し、低い場合に自ノードが送信元ノードとなる。これにより、分散処理システム100は、ノード間通信を行わなくとも分散処理システム100に対して低負荷な経路でデータを転送できる。以下、図2〜図22にて、分散処理システム100の詳細について説明する。
図2は、分散処理システムのシステム構成例を示す説明図である。分散処理システム100は、ノード101#A〜101#Hと、スイッチ102#1〜102#5を含む。
ノード101は、分散処理を行う装置である。ノード101は、サーバでもよいし、パーソナル・コンピュータでもよい。スイッチ102は、通信の中継を行う装置である。たとえば、スイッチ102#2は、ノード101#Aおよびノード101#Bの通信の中継を行う。スイッチ102には、たとえば、リピータハブ、スイッチングハブ、ルータなどを採用することができる。また、スイッチ102は、リピータハブ、スイッチングハブ、ルータが混在していてもよい。たとえば、スイッチ102#1がルータであり、スイッチ102#5がスイッチングハブでもよい。
ノード101#A〜101#Hと、スイッチ102#1〜102#5の接続関係は次の通りである。ノード101#Aとノード101#Bは、スイッチ102#2に接続している。ノード101#Cとノード101#Dは、スイッチ102#3に接続している。ノード101#Eとノード101#Fは、スイッチ102#4に接続している。ノード101#Gとノード101#Hは、スイッチ102#5に接続している。スイッチ102#2〜102#5は、スイッチ102#1に接続している。
このように、分散処理システム100の接続形態はツリー型であり、スイッチ102#1はスイッチ102#2〜102#5より上流にある。したがって、本実施の形態では、スイッチ102#1を「上流スイッチ」に分類し、スイッチ102#2〜102#5を「下流スイッチ」に分類する。上流スイッチは、下流スイッチの通信を中継するため、通信が集中し易く、ボトルネックになりやすい。
また、分散処理システム100の接続形態は、スター型、リング型、メッシュ型等であってもよい。また、分散処理システム100の接続形態は、ツリー型、スター型、リング型、メッシュ型を組み合わせたものであってもよい。また、たとえば、スイッチ102#1は、外部のネットワークに接続しており、外部のネットワークを介して、分散処理システム100を管理する管理者が操作するパーソナル・コンピュータに接続していてもよい。次に、ノード101のハードウェア構成の説明を行う。
(ノード101のハードウェア構成例)
図3は、ノードのハードウェア構成の一例を示すブロック図である。図3において、ノード101は、Central Processing Unit(CPU)301と、Read‐Only Memory(ROM)302と、Random Access Memory(RAM)303と、を含む。また、ノード101は、ディスクドライブ304と、ディスク305と、通信インターフェース306と、を含む。また、CPU301〜通信インターフェース306はバス307によってそれぞれ接続されている。また、図3では図示していないが、スイッチ102も、ノード101と同様のハードウェア構成を有する。
CPU301は、ノード101の全体の制御を司る演算処理装置である。ROM302は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM303は、CPU301のワークエリアとして使用される揮発性メモリである。
ディスクドライブ304は、CPU301の制御にしたがってディスク305に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ304には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ304が磁気ディスクドライブである場合、ディスク305には、磁気ディスクを採用することができる。また、ディスクドライブ304がソリッドステートドライブである場合、ディスク305には、半導体素子メモリを採用することができる。
通信インターフェース306は、ネットワーク308と内部のインターフェースを司り、スイッチ102からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース306は、通信回線を通じてネットワーク308となるLocal Area Network(LAN)、Wide Area Network(WAN)、インターネットなどに接続され、ネットワーク308を介して他の装置に接続される。通信インターフェース306には、たとえば、モデムやLANアダプタなどを採用することができる。また、ノード101は、光ディスクドライブ、光ディスク、キーボード、マウスを有していてもよい。
図4は、分散処理システムのソフトウェア構成例を示す説明図である。分散処理システム100は、マスタノード401と、スレーブノード402#1〜402#Nと、Hadoop Distributed File System(HDFS)クライアント403と、ジョブクライアント404とを含む。Nは、ノード101の合計数から1引いた数となる。
マスタノード401は、図1〜図3で示したノード101#A〜101#Hのうちのいずれかのノード101である。また、スレーブノード402#1〜402#Nは、ノード101#A〜101#Hのうちのマスタノード401に選択されたノード101以外のノード101である。また、HDFSクライアント403とジョブクライアント404は、ノード101#A〜101#Hのうちのいずれかのノード101でもよいし、スイッチ102#1の外部に接続されているパーソナル・コンピュータでもよい。また、HDFSクライアント403とジョブクライアント404は、同一の装置であってもよい。また、マスタノード401と、スレーブノード402#1〜402#Nを含めてHadoopクラスタ405として定義する。Hadoopクラスタ405は、HDFSクライアント403と、ジョブクライアント404と、を含んでもよい。
マスタノード401は、Map処理と、Reduce処理をスレーブノード402#1〜402#Nに割り当てる装置である。スレーブノード402#1〜402#Nは、割り当てられたMap処理と、Reduce処理を実行する装置である。
HDFSクライアント403は、Hadoop独自のファイルシステムである、HDFSのファイル操作を行う端末である。ジョブクライアント404は、Map処理の処理対象となるデータと、実行可能ファイルとなるMapReduceプログラムと、実行ファイルの設定ファイルとを記憶しており、ジョブの実行要求をマスタノード401に通知する装置である。
また、マスタノード401は、ジョブトラッカー411と、ネームノード412と、HDFS413と、メタデータテーブル414とを有する。スレーブノード402#xは、タスクトラッカー421#xと、データノード422#xと、HDFS423#xと、Mapタスク424#xと、Reduceタスク425#xを有する。xは、1からNまでの整数のいずれかである。HDFSクライアント403は、HDFSクライアントアプリケーション431と、HDFS Application Programming Interface(API)432と、を有する。ジョブクライアント404は、MapReduceプログラム441と、JobConf442とを、有する。
ジョブトラッカー411は、実行すべきジョブをジョブクライアント404から受け付けた場合、ジョブをMapタスク424、Reduceタスク425に分割する。続けて、ジョブトラッカー411は、Hadoopクラスタ405中の利用可能なタスクトラッカー421に、Mapタスク424、Reduceタスク425を割り当てる。
ネームノード412は、Hadoopクラスタ405内のファイルの記憶先を制御する。たとえば、ネームノード412は、Map処理の対象となるデータが、HDFS413、HDFS423#1〜423#Nのどこに記憶されるかを決定し、決定されたHDFSにファイルを送信する。
HDFS413、HDFS423#1〜423#Nは、ファイルを分散して記憶する記憶領域である。メタデータテーブル414は、HDFS413、HDFS423#1〜423#Nに記憶しているファイルの位置を記憶する記憶領域である。メタデータテーブル414を用いた具体的なファイルの記憶方法としては、図6にて後述する。
タスクトラッカー421は、ジョブトラッカー411から割り当てられたMapタスク424やReduceタスク425を、自装置に実行させる。また、タスクトラッカー421は、Mapタスク424やReduceタスク425の進捗状況や処理の完了報告をジョブトラッカー411に通知する。
データノード422は、スレーブノード402内のHDFS423を制御する。Mapタスク424は、Map処理を実行する。Map処理の処理結果は、Mapタスク424を実行したノード101の記憶領域に格納される。Reduceタスク425は、Reduce処理を実行する。また、Reduceタスク425は、Reduce処理を行う前段階として、シャッフル&ソート処理を実行する。シャッフル&ソート処理は、Map処理の結果を集約する処理を行う。具体的に、シャッフル&ソート処理は、Map処理の結果をKeyごとに並び替え、同一のKeyとなったValueを纏めて、Reduce処理に出力する。
HDFSクライアントアプリケーション431は、HDFSを操作するアプリケーションである。HDFS API432は、HDFSにアクセスするAPIである。HDFS API432は、たとえば、HDFSクライアントアプリケーション431からファイルのアクセス要求があった場合、データノード422に、ファイルを保持しているか否かを問い合わせる。
MapReduceプログラム441は、Map処理を実行するプログラムと、Reduce処理を実行するプログラムとである。JobConf442は、MapReduceプログラム441の設定を記述したプログラムである。設定の例としては、Mapタスク424の生成数や、Reduceタスク425の生成数や、MapReduce処理の処理結果の出力先等である。
図5は、HDFSの記憶内容の一例を示す説明図である。表501は、HDFSの記憶内容の一例である。表501は、レコード501−1〜501−3を有している。表501は、KeyフィールドとValueフィールドとを有している。たとえば、レコード501−1は、Keyフィールドに、“Cogan House …”が格納されており、Valueフィールドに、“The Cogan House …”が格納されていることを示している。
図6は、HDFSによるファイルの記憶方法の一例を示す説明図である。図6の(A)では、メタデータテーブル414の記憶内容の一例を示している。図6の(B)では、メタデータテーブル414の記憶内容に従った、HDFS413、HDFS423の記憶内容の一例を示している。
図6の(A)に示すメタデータテーブル414は、レコード601−1〜601−3を記憶する。メタデータテーブル414は、データIDentity(ID)、ノードという2つのフィールドを含む。データIDフィールドには、データを一意に識別する情報が格納される。ノードフィールドには、データが格納されているノード101のIDが格納される。図6に示すノードフィールドは、ノード101のインデックスが格納されているとする。
たとえば、レコード601−1は、レコード501−1で示したデータが、ノード101#A、101#C、101#Gに格納されていることを示す。このように、HDFSは、データを複製し、複製したデータをHDFS413、HDFS423に格納する。複製したデータの格納先となるノードとしては、物理的に離れた位置にあるノードや、ネットワーク的に離れた位置にあるノードに置くことが好ましい。物理的に離れた位置にあるノードは、たとえば、ラックが異なるノードである。ネットワーク的に離れた位置にあるノードとは、たとえば、通信する際に通信を中継するスイッチの数が多いノードである。
(ノード101の機能構成)
次に、ノード101の機能構成について説明する。図7は、ノードの機能構成例を示すブロック図である。ノード101は、受付部701と、特定部702と、算出部703と、比較部704と、送信制御部705と、通信部706とを含む。制御部となる受付部701〜送信制御部705は、記憶装置に記憶されたプログラムをCPU301が実行することにより、受付部701〜送信制御部705の機能を実現する。記憶装置とは、具体的には、たとえば、図3に示したROM302、RAM303、ディスク305などである。または、通信インターフェース306を経由して他のCPUが実行することにより、受付部701〜送信制御部705の機能を実現してもよい。また、通信部706は、通信インターフェース306でもよいし、通信インターフェース306の動作を制御するデバイスドライバを含んでもよい。デバイスドライバは、記憶装置に記憶されており、CPU301が実行することにより、通信インターフェース306の動作を制御する。
また、ノード101は、複数のノードのうちのデータの送信先ノードと複数のノードの各々のノードとの通信が分散処理システム100の性能に与える影響度合いを表す影響度を各々のノードに対応して記憶する経路テーブル711にアクセス可能である。送信先ノードは、常に固定であってもよいし、データに基づいて決定されてもよい。また、経路テーブル711は、複数のノードの各々のノード同士の通信の影響度を記憶していてもよい。経路テーブル711は、RAM303、ディスク305といった記憶装置に格納されている。経路テーブル711は、各ノード101が有している。経路テーブル711の記憶内容の詳細は、図8にて後述する。
受付部701は、送信要求を受け付ける。たとえば、受付部701は、Map処理の処理結果をデータとしてMapタスク424から受け付ける。より具体的な例として、自ノードが101#Aであり、ノード101#AがMapタスク424を実行したとする。このとき、ノード101#Aは、Mapタスク424によるMap処理の処理結果をノード101#Aの記憶領域に格納する。そして、ノード101#Aの受付部701は、ノード101#Aの記憶領域を定期的に参照することにより、ノード101#Aの記憶領域にMap処理の処理結果が書き込まれたことを検出する。なお、受け付けたデータは、RAM303、ディスク305などの記憶領域に記憶される。
特定部702は、分散処理システム100に含まれる複数のノード101から、自ノードが記憶するデータと同一の内容のデータを記憶する他ノードを特定する。たとえば、自ノードがノード101#Aであり、データとなるレコードがレコード501−1であれば、ノード101#Aが記憶するデータと同一の内容のデータを記憶するノード101#C、101#Gを特定する。具体的な特定方法として、たとえば、特定部702は、同一の内容のデータを記憶するノード101を、マスタノード401に問い合わせてもよい。
また、特定部702は、データに基づいて、複数のノード101から他ノードを特定してもよい。たとえば、特定部702は、データのハッシュを算出し、ハッシュを所定の値で割った余りに識別情報が対応するノード101を他ノードとして特定してもよい。また、特定部702は、コンシステントハッシングを実行する関数g()にデータを入力して、得た結果に対応するノード101を他ノードとして特定してもよい。なお、特定した他ノードの識別情報は、RAM303、ディスク305などの記憶領域に記憶される。
算出部703は、自ノードと送信先ノードとの通信を中継するスイッチ102の数に基づいて、自ノードと送信先ノードとの通信が分散処理システム100の性能に与える影響度合いを表す影響度を算出する。さらに、算出部703は、他ノードと送信先ノードとの通信を中継するスイッチ102の数に基づいて、他ノードと送信先ノードとの通信が分散処理システム100の性能に与える影響度合いを表す影響度を算出する。
たとえば、自ノードがノード101#Aとなり、送信先ノードがノード101#Cとなるとする。この場合、中継するスイッチ102は、スイッチ102#2、102#1、102#3となるため、算出部703は、ノード101#Aとノード101#Cの通信に対する影響度を1+1+1=3というように算出する。また、算出部703は、スイッチ102#1が上流スイッチであることを記憶しておき、上流スイッチを通常のスイッチ102数個分としてもよい。
また、算出部703は、自ノードと送信先ノードとの通信での、ノード101とスイッチ102のリンクの和を影響度として算出してもよい。ノード101とスイッチ102のリンクの数は、自ノードと送信先ノードとの通信を中継するスイッチ102の数より1大きい数値となる。たとえば、ノード101#Aとノード101#Cのリンクの和は4となる。4つのリンクは、ノード101#Aとスイッチ102#2のリンクと、スイッチ102#2とスイッチ102#1のリンクと、スイッチ102#1とスイッチ102#3のリンクと、スイッチ102#3とノード101#Cのリンクである。
また、算出部703は、上流スイッチが含まれるリンクに重みを付けて算出してもよい。たとえば、算出部703は、スイッチ102#2とスイッチ102#1のリンクと、スイッチ102#1とスイッチ102#3のリンクと、について、それぞれ2個分のリンクであるというようにして、影響度を算出してもよい。
また、算出部703は、自ノードと送信先ノードとの通信の帯域幅に基づいて、自ノードと送信先ノードとの通信が分散処理システム100の性能に与える影響度合いを表す影響度を算出する。さらに、算出部703は、他ノードと送信先ノードとの通信の帯域幅に基づいて、他ノードと送信先ノードとの通信が分散処理システム100の性能に与える影響度合いを表す影響度を算出してもよい。帯域幅とは、通信に用いる周波数の範囲である。帯域幅が広い程、通信速度が大きくなる。
たとえば、算出部703は、自ノードと送信先ノードとの通信の帯域幅のうちの最小値を影響度として算出してもよい。なお、帯域幅は値が大きい程性能がよいため、影響度が大きいと分散処理システム100の性能が低下する度合いが大きくするために、たとえば、算出部703は、自ノードと送信先ノードとの通信の帯域幅のうちの最小値の逆数を、影響度として算出してもよい。また、算出部703は、所定のデータを帯域幅で除算した、データの到達時間を影響度として算出してもよい。
また、算出部703は、自ノードのプロセッサまたは自ノードのメモリの使用率に基づいて、自ノードと送信先ノードとの通信が分散処理システム100の性能に与える影響度合いを表す影響度を算出する。さらに、算出部703は、他ノードのプロセッサまたは他ノードのメモリの使用率に基づいて、他ノードと送信先ノードとの通信が分散処理システム100の性能に与える影響度合いを表す影響度を算出してもよい。
プロセッサは、たとえば、CPUやDigital Signal Processor(DSP)である。プロセッサの使用率として、ノード101は、CPUの単位時間あたりの実行時間の比率を負荷量として算出する。また、別の算出方法として、ノード101は、CPUに割り当てられている処理数に基づいて算出してもよい。または、ノード101は、CPUに割り当てられている処理に付与されている処理量情報の合計を、CPUの負荷量として算出してもよい。なお、処理量情報は、事前に各処理を計測しておく。
メモリの使用率は、主記憶装置となるメモリの記憶容量のうち、ソフトウェアに割当済みの記憶容量の割合である。主記憶装置となるメモリは、ノード101のハードウェアでは、たとえば、RAM303である。
たとえば、算出部703は、自ノードのCPU301の使用率を、自ノードと送信先ノードに対する影響度として算出する。また、算出部703は、自ノードのRAM303の使用率を自ノードと送信先ノードに対する影響度として算出してもよい。
また、算出部703は、自ノードと送信先ノードとの通信を中継するスイッチ102の数、自ノードと送信先ノードとの通信の帯域幅、自ノードのプロセッサまたは自ノードのメモリの使用率を組み合わせて、影響度を算出してもよい。たとえば、算出部703は、スイッチ102の数と自ノードのCPU301の使用率の和や積を、影響度として算出してもよい。なお、算出した影響度は、たとえば、経路テーブル711に記憶される。
比較部704は、経路テーブル711を参照して、自ノードと複数のノード101のうちのデータの送信先となる送信先ノードとの通信に対する影響度と、特定部702によって特定された他ノードと送信先ノードとの通信に対する影響度と、を比較する。
たとえば、データX’1を記憶するノード101#Aと送信先ノードとなるノード101#Dの通信に対する影響度が3であり、データX’1と同一の内容となるデータX’2を記憶するノード101#Cとノード101#Dの通信に対する影響度が1とする。このとき、比較部704は、ノード101#Aとノード101#Dの通信に対する影響度=3と、ノード101#Cとノード101#Dの通信に対する影響度=1と、を比較する。この場合、比較部704は、ノード101#Aとノード101#Dの通信より、ノード101#Cとノード101#Dの通信の方が分散処理システム100の性能が低下する度合いが小さいという比較結果を出力する。
また、経路テーブル711は、自ノードと送信先ノードとの通信に対する影響度と、他ノードと送信先ノードとの通信に対する影響度と、のうちのいずれか一方を記憶していない場合があってもよい。この場合、比較部704は、比較できないという比較結果を出力してもよい。また、経路テーブル711が自ノードと送信先ノードとの通信に対する影響度と、他ノードと送信先ノードとの通信に対する影響度と、のうちのいずれか一方を記憶していない場合、比較部704は、算出部703によって算出された影響度を用いて比較してもよい。
また、比較部704は、算出部703によって算出された自ノードと送信先ノードとの通信に対する影響度と、算出部703によって算出された他ノードと送信先ノードとの通信に対する影響度と、を比較してもよい。
また、比較部704は、次に示す条件を満たす場合、複数の他ノードの各々の他ノードと送信先ノードとの通信に対する影響度のうちの最小の影響度と、自ノードと送信先ノードとの通信に対する影響度と、を比較してもよい。条件とは、特定部702によって複数の他ノードが特定された場合である。たとえば、自ノードとなるノード101#Aが記憶するデータX’1と同一の内容となるデータX’2を記憶するノード101#C、と、ノード101#Aが記憶するデータX’1と同一の内容となるデータX’3を記憶するノード101#Gがあるとする。このとき、比較部704は、ノード101#Cとノード101#Dの通信に対する影響度とノード101#Gとノード101#Dの通信に対する影響度のうちの最小の影響度と、ノード101#Aとノード101#Dの通信に対する影響度を比較する。なお、比較結果は、RAM303、ディスク305などの記憶領域に記憶される。
送信制御部705は、比較部704による比較結果に基づいて、通信部706を制御して、送信先ノードにデータを送信する。また、送信制御部705は、自ノードと送信先ノードとの通信に対する影響度が他ノードと送信先ノードとの通信に対する影響度より小さい場合、通信部706を制御して、送信先ノードにデータを送信する。また、送信制御部705は、自ノードと送信先ノードとの通信に対する影響度が他ノードと送信先ノードとの通信に対する影響度より大きい場合、データを送信しない。
また、比較部704が比較できないという比較結果を出力していた場合、送信制御部705は、送信先ノードにデータを送信してもよい。このように、影響度の大小が判断できない場合、他ノードがデータを送信するか否か不明のため、自ノードがデータを送信しておくことにより、分散処理システム100は、どのノードからもデータが送信先ノードに送信されないことを防ぐことができる。
また、送信制御部705は、比較結果と、各ノード101が共通して有する情報に基づいて、送信先ノードにデータを送信してもよい。たとえば、比較部704が、自ノードと送信先ノードとの通信に対する影響度と、他ノードと送信先ノードとの通信に対する影響度と、が同一であるという比較結果を出力したとする。このとき、送信制御部705は、自ノードを識別する番号が、他ノードの識別する番号より小さい場合、データを送信してもよい。ノード101を識別する番号とは、たとえば、Media Access Control(MAC)アドレスや、Internet Protocol(IP)アドレスである。
通信部706は、複数のノード101と通信する。複数のノード101には、自ノードとの通信も含む。続けて、図8にて、影響度を記憶する経路テーブル711の説明を行う。
図8は、経路テーブルの記憶内容の一例を示す説明図である。経路テーブル711は、ノード101ごとに、該当のノード101が送信元ノードとなった場合に送信先ノードとの通信に対する影響度を記憶するテーブルである。たとえば、図8に示す経路テーブル711は、レコード801−A〜801−Hを記憶する。経路テーブル711は、送信先ノードごとのフィールドを有する。また、経路テーブル711は、影響度が記憶ノードに依存して、送信先ノードに依存しない場合、1つのフィールドを有していてもよい。
たとえば、レコード801−Aは、送信元ノードがノード101#Aとなる場合に、それぞれの送信先ノードに対する影響度について示している。具体的に、レコード801−Aは、送信先ノードがノード101#Aである場合の影響度が0であり、送信先ノードがノード101#Bである場合の影響度が2であり、送信先ノードがノード101#Cである場合の影響度が6であることを示す。次に、図9を用いて、MapReduce処理の具体例について説明する。
図9は、MapReduce処理の具体例を示す説明図である。図9では、Map処理が、レコード501ごとに、Valueフィールドの単語の出現数を計数する処理であり、Reduce処理が、単語の出現数を単語ごとに合計する処理であるとする。Map処理と、Reduce処理を実行するノードを、図9では、ノード101#A、101#B、101#C、…、とする。
ノード101#Aがレコード501−1に対するMap処理を実行するように設定した理由として、ノード101#Aがレコード501−1を記憶しているため、レコード501−1を他のノード101に移行しなくともよいためである。レコード501−1を記憶するノード101#C、101#Gがレコード501−1に対するMap処理を実行してもよい。また、ノード101#A、101#C、101#Gの全てがレコード501−1に対するMap処理を実行してもよい。ノード101#Bにレコード501−2に対するMap処理を実行するように設定した理由、ノード101#Cにレコード501−3に対するMap処理を実行するように設定した理由も同様の理由である。
初めに、ノード101#A、101#B、…は、Map処理を実行する。たとえば、ノード101#Aは、レコード501−1に対してMap処理を実行し、レコード501−1のValueフィールドに出現した単語“The”、“Cogan”、…と、各単語の出現数をKeyValueの形式で出力する。具体的には、ノード101#Aは、Map処理を実行し、Map処理の結果として(The,201)、(Cogan,42)、…、を出力する。
Map処理を実行後、ノード101#Aは、Map処理の結果を、シャッフル&ソート処理を実行するノード101に送信する。具体的に、ノード101#Aは、(The,201)をノード101#Aに送信し、(Cogan,42)をノード101#Bに送信する。どのデータをどのノードに送信するかについては、たとえば、コンシステントハッシングの方法により、データに基づいて特定することができる。コンシステントハッシングとは、ノードの個数を増減させた時にもデータの保存先の変化を最小限に抑えるために使われるアルゴリズムである。
同様に、ノード101#Bは、レコード501−2に対してMap処理を実行し、レコード501−2のValueフィールドに出現した単語“The”、“An”、…と、各単語の出現数をKeyValueの形式で出力する。具体的には、ノード101#Bは、Map処理を実行し、(The,109)、(An,10)、…を出力する。
ノード101#A、101#B、…によるMap処理の終了後、ノード101#A、101#B、…、は、シャッフル&ソート処理と、Reduce処理を実行する。たとえば、ノード101#Aは、Map処理の結果となる(The,201)、(The,109)、…、に対してシャッフル&ソート処理を実行して、(The,(201,109,…))を出力する。続けて、ノード101#Aは、シャッフル&ソート処理の結果となる(The,(201,109,…))に対してReduce処理を実行し、(The,1021)を出力する。
図10は、Map処理の詳細例を示す説明図である。図9にて、ノード101#A、101#C、101#Gの全てがレコード501−1に対するMap処理を実行してもよいことを説明した。図10では、ノード101#A、101#C、101#Gの全てがレコード501−1に対するMap処理を実行した例を示す。また、図10以降の説明において、レコード501−1を「データX」と呼称し、データXを複製したレプリカを「データX1」、「データX2」、…と呼称する。たとえば、ノード101#Aは、データX1を記憶する。また、ノード101#Cは、データX2を記憶し、ノード101#Gは、データX3を記憶する。
データX1を記憶した状態にて、ノード101#Aは、Map処理を実行し、(The,201)、…、を出力する。以下、図10以降の説明において、データXのMap処理となる(The,201)を「データX’」と呼称し、データX’を複製したレプリカを「データX’1」、「データX’2」、…と呼称する。たとえば、ノード101#Aは、データX’1を記憶する。また、ノード101#Cは、データX’2を記憶し、ノード101#Gは、データX’3を記憶する。次に、図11にて、データX’の送信先ノードについて説明する。
図11は、Map処理結果の送信先ノードの一例を示す説明図である。図11では、Map処理の結果をシャッフル&ソート処理を実行するノード101に送信した結果を示している。具体的に、図11(A)がレコード501−1に対するMap処理の実行終了後を示しており、図11(B)がレコード501−1に対するMap処理の結果の送信終了後を示している。
図11(A)では、ノード101#A、101#C、101#Gが、それぞれ、データX’1、データX’2、データX’3を記憶している。以下、図11以降の説明において、データXからデータX’を生成し、データX’を記憶するノードを「記憶ノードS」と呼称する。また、データX’1を記憶するノードを「記憶ノードS1」、データX’2を記憶するノードを「記憶ノードS2」、…と呼称する。具体的に、ノード101#Aが記憶ノードS1となり、ノード101#Cが記憶ノードS2となり、ノード101#Gが記憶ノードS3となる。記憶ノードのいずれかが、送信元ノードとなる。たとえば、図11(A)の状態から、記憶ノードS1〜S3のうちのいずれかが送信元ノードとなり、送信元ノードが、データX’に対してシャッフル&ソート処理を実行する送信先ノードに送信する。
図11(B)は、記憶ノードS1〜S3のうちのいずれかによるデータX’の送信の結果を示している。データX’の送信先ノードとなるノード101を、「送信先ノードD」と呼称し、データX’の送信先ノードの1番目を「送信先ノードD1」、データX’の送信先ノードの2番目を「送信先ノードD2」、…と呼称する。具体的に、ノード101#Bが送信先ノードD1となり、ノード101#Eが送信先ノードD2となり、ノード101#Gが送信先ノードD3となる。データX’の送信先ノードの個数については、記憶ノードの個数と同数であってもよいし、異なってもよい。
続けて、記憶ノードS1〜S3のうちのどのノード101が、送信先ノードD1〜D3にデータX’を送信するかという送信方法について図12〜図14を用いて3つの送信方法を説明する。また、図12〜図14にて示す3つの送信方法は、ノード101間の通信量の増大を抑制するため、記憶ノードS1〜S3同士が通信せずとも、送信先ノードD1〜D3にデータX’を送信することができる方法である。
図12は、データX’の第1の送信方法の例を示す説明図である。図12に示す第1の送信方法は、各記憶ノードSが、対応する送信先ノードDに記憶するデータX’を送信する方法である。具体的には、記憶ノードS1が送信先ノードD1にデータX’1を送信し、記憶ノードS2が送信先ノードD2にデータX’2を送信し、記憶ノードS3が送信先ノードD3にデータX’3を送信する。図12に示す第1の送信方法は、データX’1が1つ目の複製データであり、データX’2が2つ目の複製データであり、データX’3が3つ目の複製データであると区別できる場合に有効である。
図13は、データX’の第2の送信方法の例を示す説明図である。図13に示す第2の送信方法は、記憶ノードSのいずれかが、送信先ノードD全てにデータX’を送信する方法である。具体的には、たとえば記憶ノードS1が、送信先ノードD1〜D3にデータX’1を送信する。なお、送信先ノードD2は、データX’1を受信し、データX’2として保存する。同様に、送信先ノードD3は、データX’1を受信し、データX’3として保存する。図13に示す第2の送信方法は、データX’1〜X’3が区別でき、送信を行うノードが容易に決定できる場合に有効である。
図14は、データX’の第3の送信方法の例を示す説明図である。図14に示す第3の送信方法は、記憶ノードSの全てが送信先ノードDの全てにデータX’を送信し、送信先ノードDは、重複したデータX’を除去して、データX’を保存する方法である。
具体的には、記憶ノードS1は、送信先ノードD1〜D3にデータX’1を送信する。同様に、記憶ノードS2は、送信先ノードD1〜D3にデータX’2を送信し、同様に、記憶ノードS3は、送信先ノードD1〜D3にデータX’3を送信する。続けて、送信先ノードD1〜D3は、同一の内容となるデータX’1〜X’3のうちのいずれか2つを除去し、残りの1つを保存する。図14に示す第3の送信方法は、データX’1〜X’3が区別できない場合に有効である。
以上、図12〜図14にて示した送信方法は、記憶ノードS1〜S3同士が通信しないために、送信時に効率が悪くなる可能性がある。たとえば、第1の送信方法を選択していた場合、記憶ノードS1のネットワーク的に近い位置に送信先ノードD1〜D3があり、記憶ノードS2と送信先ノードD2とのネットワーク的に離れた位置にあるとする。この場合、記憶ノードS2が送信先データD2にデータX’2を送信すると、通信を中継するスイッチの数が多くなり、ネットワークが込み合う原因となる。また、ネットワーク的に遠い位置にある場合、スイッチ102#1のような上流ノードを中継することになり、上流ノードがボトルネックとなる可能性がある。次に、図15を用いて、記憶ノードS1〜S3同士が通信せずに、ネットワーク的に近い記憶ノードSが送信先ノードDにデータX’を送信する方法を行う例について説明する。
図15は、データX’の送信判断の一例を示す説明図である。図15では、記憶ノードS1〜S3が、送信先ノードD1〜D3に送信するか否かを判断する方法である。記憶ノードS1〜S3は、送信先ノードDごとに、自ノードがデータX’を送信すべきか否かを、ノードxからノードyへの経路のコストを表す経路影響度関数f(x,y)を用いて判断する。経路影響度関数fの具体例については、図16〜図20にて説明する。図15の例で示す経路影響度関数fは、図16で示す具体例であり、ノード101とスイッチ102のリンクのコストの総和を返す関数とする。
たとえば、記憶ノードS1となるノード101#Aは、送信先ノードD1に対して、f(記憶ノードS1=#A,送信先ノードD1=#B)、f(記憶ノードS2=#C,#B)、f(記憶ノードS3=#G,#B)の各影響度を算出する。算出した結果は以下のようになる。
f(#A,#B)=2
f(#C,#B)=6
f(#G,#B)=6
次に、ノード101#Aは、算出された影響度群のうち、最小となった影響度の記憶ノードが自ノードか否かを判断する。この場合、最小となった影響度=f(#A,#B)=2であるため、ノード101#Aは、送信先ノードDにデータX’を送信する送信元ノードが自ノードであると判断する。したがって、ノード101#Aは、ノード101#BにデータX’1を送信する。続けて、ノード101#Aは、送信先ノードD2となるノード101#Eに対して影響度を算出する。算出した結果は以下のようになる。
f(#A,#E)=6
f(#C,#E)=6
f(#G,#E)=6
次に、ノード101#Aは、算出された影響度群のうち、最小となった影響度の記憶ノードが自ノードか否かを判断する。この場合、最小となった影響度=f(#A,#E)=6であるため、ノード101#Aは、送信先ノードDにデータX’を送信する送信元ノードが自ノードであると判断する。したがって、ノード101#Aは、ノード101#EにデータX’1を送信する。続けて、ノード101#Aは、送信元ノードD3となるノード101#Gに対して影響度を算出する。算出した結果は以下のようになる。
f(#A,#G)=6
f(#C,#G)=6
f(#G,#G)=0
次に、ノード101#Aは、算出された影響度群のうち、最小となった影響度の記憶ノードが自ノードか否かを判断する。この場合、最小となった影響度=f(#G,#G)=0であるため、ノード101#Aは、送信先ノードDにデータX’を送信する送信元ノードが自ノードでないと判断する。したがって、ノード101#Aは、ノード101#GにデータX’1を送信しない。
同様に、記憶ノードS2となるノード101#C、記憶ノードS3となるノード101#Gでも、送信先ノードDごとに、自ノードがデータX’を送信すべきか否かを判断して、送信すべきとなった場合、送信先ノードDに送信する。具体的に、ノード101#Cは、ノード101#EにデータX’2を送信する。また、ノード101#Gは、ノード101#Eとノード101#GにデータX’3を送信する。なお、ノード101#Gは、自ノードにデータX’3を送信している。自ノードにデータX’を送信するとなった場合、ノード101は、送信先アドレスとして、自ノードのアドレスを設定してもよいし、ループバックアドレスを設定してもよい。または、自ノードに送信するとなった場合、ノード101は、実際に送信せずに、データX’を格納している記憶領域から、受信時にデータX’を格納する記憶領域に複製してもよい。以上の処理により、記憶ノードS1〜S3同士が通信せずに、送信先ノードDに対してネットワーク的に近い記憶ノードSがデータXを送信することができる。
また、ノード101#Eは、データX’1〜X’3を受信している。この場合、ノード101#Eは、図14にて示した第3の送信方法を用いて、データX’1〜X’3のうちのいずれか2つを除去し、残りの1つを保存してもよい。また、可能な限りデータX’が2箇所以上の記憶ノードSから送信されないようにしてもよい。データX’が2箇所以上の記憶ノードSから送信されないようにするには、最小となる影響度が複数ある場合に、他の基準による影響度を算出して、他の基準による影響度が小さい方を最小の影響度としてもよい。具体例として、図15で用いた影響度は、図16で後述する第1の例を用いている。最小となる影響度が複数ある場合、記憶ノードS1〜S3は、図17で後述する第2の例を用いて、最小となる影響度を算出してもよい。次に、図16〜図20を用いて経路影響度関数fの具体例を説明する。
図16は、経路影響度関数fの第1の具体例を示す説明図である。図16で示す経路影響度関数f(x,y)は、ノードxからノードyまでの経路上のコストの総和を返す関数である。具体的に、ノード101と下流スイッチのリンクのコストを1と定義し、下流スイッチと上流スイッチのリンクのコストを2と定義する。たとえば、図16で示す経路影響度関数fは、f(#A,#B)=1+1=2、f(#C,#B)=1+2+2+1=6、f(#A,#C)=1+2+2+1=6、…となる。得られた影響度は、経路テーブル711の対応するレコードに格納される。具体的に、f(#A,#B)=2は、レコード801−Aのノード101#Bフィールドに格納され、f(#C,#B)=6は、レコード801−Cのノード101#Bフィールドに格納される。また、f(#A,#C)=6は、レコード801−Aのノード101#Cフィールドに格納される。
記憶ノードから送信先ノードまでの経路の特定方法については、分散処理システム100の管理者が特定してもよいし、記憶ノードが、記憶ノードから送信先ノードまでの経路を特定するコマンドを実行してもよい。
経路を特定するコマンドとしては、たとえば、スイッチ102がルータであれば、トレースルートコマンドである。たとえば、ノード101#A〜101#Hは、予め、上流スイッチのIPアドレスを記憶しておく。次に、ノード101#Aがノード101#Bまでのトレースルートコマンドを実行すると、ノード101#Aは、ノード101#Aからノード101#Bまでのスイッチ102のIPアドレスの一覧を得ることができる。続けて、ノード101#Aは、IPアドレスの一覧を用いて、ノード101#Bまでの通信のコストの総和を算出する。具体的に、ノード101#Aは、ノード101から下流スイッチまでのコストと、下流スイッチ同士間のコストと、下流スイッチからノード101までのコスト、を1とし、上流スイッチが含まれた場合のコストを2として、コストの総和を算出する。算出した結果は、経路テーブル711の対応するレコードに格納される。
続けて、ノード101#Aは、ノード101#Aからノード101#Aまでの通信のコスト、ノード101#Aからノード101#Cまでの通信のコスト、…、ノード101#Aからノード101#Hまでの通信のコストを算出する。算出後、ノード101#Aは、ノード101#Aから各ノード101までの通信のコスト、をノード101#B〜101#Hに配布する。配布を受けたノード101#B〜101#Hは、経路テーブル711の自ノードに対応するレコードに配布内容を格納する。同様に、ノード101#B〜101#Hも、影響度を算出し、他ノードに配布する。これにより、ノード101#A〜101#Hは、記憶ノードと送信先ノードがどのノード101であっても影響度を取得できる。
図17は、経路影響度関数fの第2の具体例を示す説明図である。図17で示す経路影響度関数f(x,y)は、ノードxからノードyまでの経路について、スイッチを通過した数を返す関数である。このとき、高負荷になりがちなスイッチや、低性能のスイッチを、複数のスイッチとして数えてもよい。たとえば、スイッチ102#1をスイッチ4つ分として数えるものとする。この場合、f(#A,#B)=1、f(#C,#B)=1+4+1=6、f(#A,#C)=1+4+1=6、…となる。
図18は、経路影響度関数fの第3の具体例を示す説明図である。図18で示す経路影響度関数f(x,y)は、ノードxからノードyまでの経路について、データを送信した時にかかる時間を返す関数である。たとえば、ノードxが、ノードyに16バイトのデータを送信し、送信にかかった時間を経路テーブル711のノードxに対応するレコードに格納する。ノードxは、実際にデータを送信してもよいし、ノードxからノードyまでの理論的な送信速度から、理論的な送信時間を算出してもよい。全てのノード101が、自ノードからの他ノードへのデータの送信時間を他ノードに配布し、全てのノード101が同一の情報を経路テーブル711に格納しておくことになる。配布する時期として、全てのノード101は、分散処理システム100の運用開始時に一度配布してもよいし、定期的に配布してもよい。
たとえば、ノード101#Aからノード101#Bへの16バイトのデータの送信時間が100[μ秒]であり、ノード101#Aからノード101#Cへの16バイトのデータの送信時間が102[μ秒]であるとする。このとき、図18で示す経路影響度関数fは、f(#A,#B)=100[μ秒]となり、f(#A,#C)=102[μ秒]となる。得られた影響度は、経路テーブル711の対応するレコードに格納される。具体的に、f(#A,#B)=100は、レコード801−Aのノード101#Bフィールドに格納され、f(#A,#C)=102は、レコード801−Aのノード101#Cフィールドに格納される。また、ノード101#Aは、ノード101#Cからf(#C,#B)=102[μ秒]を受け付ける。f(#C,#B)は、レコード801−Cのノード101#Bフィールドに格納される。
図19は、経路影響度関数fの第4の具体例を示す説明図である。図19で示す経路影響度関数f(x,y)は、ノードxからノードyまでの経路の帯域幅を返す関数である。具体的に、f(x,y)は、経路上の帯域幅のうち、最小の帯域幅を返す関数である。
たとえば、ノード101#Aからノード101#Bまでの経路のうち、ノード101と下流スイッチの帯域幅が100[Mbps]であり、下流スイッチと上流スイッチの帯域幅が10[Mbps]であるとする。この場合、図19で示す経路影響度関数fは、f(#A,#B)=Min(100,100)=100[Mbps]、f(#C,#B)=Min(100,10,10,100)=10[Mbps]、f(#A,#C)=Min(100,10,10,100)=10[Mbps]、…となる。ただし、Min()は、引数内の最小値を返す関数である。得られた影響度は、経路テーブル711の対応するレコードに格納される。
また、分散処理システム100は、帯域幅の定義を、分散処理システム100を一定の条件にした状態において実測した値としてもよい。一定の条件とは、たとえば、全てのノード101に高負荷をかけた状態である。一定の条件において、ノード101#Aがノード101#Bに送信できた単位時間当たりのデータ量が112[Mbit]であれば、ノード101#Aは、f(#A,#B)=112[Mbps]と設定する。同様に、ノード101#Aは、ノード101#C〜101#Hにもデータを送信し、帯域幅を設定する。設定後、ノード101#Aは、設定した帯域幅をノード101#B〜101#Hに配布する。同様に、ノード101#B〜101#Hも、他ノードとの帯域幅を定義して、他ノードに配布する。
図20は、経路影響度関数fの第5の具体例を示す説明図である。図20で示す経路影響度関数f(x,y)は、ノードxのCPU使用率を返す関数である。たとえば、ある時点でのノード101#AのCPU使用率が80[%]であり、ノード101#BのCPU使用率が50[%]であり、ノード101#CのCPU使用率が30[%]であるとする。この場合、図20で示す経路影響度関数fは、f(#A,#B)=80[%]、f(#C,#B)=30[%]、f(#A,#C)=80[%]、…となる。各ノード101のCPU使用率は、全てのノード101に配布されている。配布する時期として、全てのノード101は、分散処理システム100の運用開始時、事前に実験して測定した値を配布してもよいし、定期的に測定した値を配布してもよい。
図20で示す経路影響度関数f(x,y)の結果は、ノードxに依存し、ノードyに依存しない。したがって、経路テーブル711は、記憶ノードと送信先ノードの通信に対する影響度を記憶しなくてよく、記憶ノードに対する影響度があればよい。よって、経路テーブル711は、たとえば、図20で示す記憶形態であってもよい。図20で示す経路テーブル711は、ノード101ごとに、該当のノードのCPU使用率を記憶するテーブルである。具体的に、ノード101#AのCPU使用率80[%]がレコード801−Aに格納され、ノード101#BのCPU使用率50[%]がレコード801−Bに格納され、ノード101#CのCPU使用率30[%]がレコード801−Cに格納される。次に、図21および図22にて、分散処理システム100が実行するフローチャートを説明する。
図21は、MapReduce処理手順の一例を示すフローチャートである。MapReduce処理は、複数のノード101で分散処理を行う処理である。マスタノード401は、データXを有する記憶ノードに、Map処理の実行要求を通知する(ステップS2101)。データXを有する記憶ノードがノード101#A〜101#Hのうちいずれかというのは、マスタノード401がメタデータテーブル414を参照することで特定することができる。データXを有するノード101が記憶ノードとなる。また、マスタノード401は、データXを有する記憶ノード全てに実行要求を通知する。
実行要求を受け付けた記憶ノードは、データXのMap処理を実行する(ステップS2102)。次に、記憶ノードは、送信判断処理を実行する(ステップS2103)。送信判断処理の詳細は、図22にて後述する。次に、記憶ノードは、Map処理の処理結果となるデータX’を自ノードが送信することになった送信先ノードがあるか否かを判断する(ステップS2104)。データX’を自ノードが送信することになった送信先ノードがあるか否かについては、送信判断処理の出力結果を参照することにより判断することができる。
自ノードが送信することになった送信先ノードがあると判断した場合(ステップS2104:Yes)、記憶ノードは、データX’を送信先ノードに送信する(ステップS2105)。送信先ノードは、複数ある場合も存在する。送信後、記憶ノードは、MapReduce処理を終了する。自ノードが送信することになった送信先ノードがないと判断した場合(ステップS2104:No)、記憶ノードは、MapReduce処理を終了する。
データX’を受け付けた送信先ノードは、シャッフル&ソート処理を実行する(ステップS2106)。続いて、送信先ノードは、Reduce処理を実行する(ステップS2107)。ステップS2107の処理終了後、送信先ノードは、MapReduce処理を終了する。MapReduce処理を実行することにより、分散処理システム100は、ジョブをノード101に分散して処理することができる。
図22は、送信判断処理手順の一例を示すフローチャートである。送信判断処理は、記憶ノードSxが、送信先ノードにデータX’を送信するか否かを判断する処理である。また、送信判断処理は、図21のステップS2101の処理にて、Map処理の実行要求を受け付けた記憶ノード全てが行う。
記憶ノードSxは、データXのMap処理の処理結果となるデータX’を取得する(ステップS2201)。次に、記憶ノードSxは、データXに対してコンシステントハッシングを実行するg(X)を実行し、データX’を記憶する記憶ノードS1,S2,…Snを特定する(ステップS2202)。続けて、記憶ノードSxは、データX’に対してコンシステントハッシングを実行するg(X’)を実行し、データX’の送信先となる送信先ノードD1,D2,…,Dmを特定する(ステップS2203)。なお、n、mは自然数である。
次に、記憶ノードSxは、未選択の送信先ノードDjを選択する(ステップS2204)。jは、1からmのうちのいずれかの整数である。続けて、記憶ノードSxは、経路影響度関数f(S1,Dj),f(S2,Dj),…,f(Sn,Dj)を実行する(ステップS2205)。次に、記憶ノードSxは、経路影響度関数の結果が最小となったf(Si,Dj)について、記憶ノードSiが記憶ノードSxか否かを判断する(ステップS2206)。
ステップS2205、ステップS2206について、記憶ノードSxは、初めにf(Sx,Dj)を実行し、次に、f(S1,Dj)を実行し、f(Sx,Dj)がf(S1,Dj)より大きいか比較してもよい。f(Sx,Dj)がf(S1,Dj)より大きい場合、記憶ノードSxがデータを送信先ノードDjに送信する可能性がなくなるため、ステップS2208:Noのルートを通り、次の送信先ノードを選択してもよい。これにより、f(S1,Dj)〜f(Sn,Dj)全てを実行しなくともよい場合が発生し、記憶ノードSxは処理時間を短縮できる。
記憶ノードSiが記憶ノードSxである場合(ステップS2206:Yes)、記憶ノードSxは、データX’を自ノードが送信先ノードDjに送信することを記憶する(ステップS2207)。ステップS2207の実行終了後、または、記憶ノードSiが記憶ノードSxでない場合(ステップS2206:No)、記憶ノードSxは、全ての送信先ノードを選択したか否かを判断する(ステップS2208)。
まだ未選択の送信先ノードがある場合(ステップS2208:No)、記憶ノードSxは、ステップS2204の処理に移行する。全ての送信先ノードを選択した場合(ステップS2208:Yes)、記憶ノードSxは、データX’を自ノードが送信することとなった送信先ノードDの識別情報を出力する(ステップS2209)。ステップS2209の処理終了後、記憶ノードSxは、送信判断処理を終了する。送信判断処理を実行することにより、ノード101は、ノード101間で通信しなくとも、送信元ノードが自ノードであるか否かを判断できる。
以上説明したように、本実施の形態にかかるノード101によれば、同じデータを持つ各ノード101が同一基準で送信先ノードとの通信にかかる負荷が他ノードより低いか判断し、低い場合に自ノードが送信元ノードとなる。これにより、分散処理システム100は、ノード101間通信で送信元ノードを決めなくても分散処理システム100にかかる負荷が低い経路でデータ送信できる。
また、ノード101によれば、マスタノード401が集中して送信元ノードを決めずによくなり、ノード101にかかる負荷を分散することができる。また、元データのレプリカを保持するサーバのうち経路コストが最も低いものからデータの再配置先となるノードに通信することにより、通信が高コストな経路を通過することを抑制することができる。また、ノード101によれば、特定の経路に通信が集中してボトルネックになるのを防ぐことができる。また、ノード101によれば、スループットを向上させ、データ転送にかかる時間を削減でき、高速化、低コスト化、低負荷化を実現することができる。
また、ノード101によれば、自ノードと送信先ノードの通信に対する影響度が他ノードと送信先ノードの通信に対する影響度より小さい場合、データを送信してもよい。これにより、分散処理システム100は、1度の比較で自ノードがデータを送信すべきか否かを判断できるため、自ノードがデータを送信すべきかの判断を高速に行える。
また、ノード101によれば、複数の他ノードの各々の他ノードと送信先ノードの通信に対する影響度のうちの最小値と、自ノードと送信先ノードとの通信に対する影響度を比較してもよい。これにより、分散処理システム100は、ノード101間通信で送信元を決めなくても分散処理システム100にかかる負荷が最も低いノードがデータを送信できる。
また、ノード101によれば、データに基づいて、複数のノード101から他ノードを特定してもよい。これにより、ノード101は、マスタノード401等に問い合わせなくても他ノードを特定できるため、他ノードを特定することにかかる通信を削減することができる。
また、ノード101によれば、自ノードと送信先ノードとの通信を中継するスイッチの数に基づいて、自ノードと送信先ノードの通信に対する影響度を算出してもよい。これにより、分散処理システム100は、中継するスイッチの数が少ない、分散処理システム100にかかる負荷が低い経路でデータ送信できる。
また、ノード101によれば、自ノードと送信先ノードとの通信の帯域幅に基づいて、自ノードと送信先ノードの通信に対する影響度を算出してもよい。これにより、分散処理システム100は、帯域幅が広く、輻輳が発生しにくい通信経路にてデータ送信ができる。
また、ノード101によれば、自ノードのプロセッサまたはメモリの使用率に基づいて、自ノードと送信先ノードの通信に対する影響度を算出してもよい。これにより、分散処理システム100は、処理能力に余裕があるノードにてデータ送信が行えるため、ノードの高負荷によるデータ送信処理の遅延を防ぐことができる。
また、本実施の形態にかかる分散処理システム100はhadoopを採用しているが、hadoopに限らず、冗長性のあるデータが複数のノードにあり、複数のノードから送信先ノードに送信する時に本実施の形態にかかる送信制御方法を適用することができる。
なお、本実施の形態で説明した送信制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本送信制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、Magneto Optical(MO)、Digital Versatile Disc(DVD)ディスク、Universal Serial Bus(USB)メモリ等のコンピュータで読み取り可能な可搬型記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本送信制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)システムに含まれる複数のノードから、第1ノードが記憶するデータと同一の内容のデータを記憶する第2ノードを特定し、
前記複数のノードのうちの前記データの送信先となる送信先ノードと前記複数のノードの各々のノードとの通信が前記システムの性能に与える影響度合いを表す影響度を前記各々のノードに対応して記憶する記憶部を参照して、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、特定した前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較し、
比較結果に基づいて、前記複数のノードと通信する通信部を制御して、前記送信先ノードに前記データを送信する、
処理を前記第1ノードに実行させることを特徴とする送信制御プログラム。
(付記2)前記送信する処理は、
前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度が前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度より小さい場合、前記通信部を制御して、前記送信先ノードに前記データを送信することを特徴とする付記1に記載の送信制御プログラム。
(付記3)前記比較する処理は、
複数の第2ノードが特定された場合、前記複数の第2ノードの各々の第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度のうちの最小の影響度と、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較することを特徴とする付記2に記載の送信制御プログラム。
(付記4)前記特定する処理は、
前記データに基づいて、前記複数のノードから前記第2ノードを特定することを特徴とする付記1〜3のいずれか一つに記載の送信制御プログラム。
(付記5)前記第1ノードに、
前記第1ノードと前記送信先ノードとの通信を中継するスイッチ装置の数に基づいて、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出し、
前記第2ノードと前記送信先ノードとの通信を中継するスイッチ装置の数に基づいて、前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出する処理を実行させ、
前記比較する処理は、
算出した前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、算出した前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較することを特徴とする付記1〜4のいずれか一つに記載の送信制御プログラム。
(付記6)前記第1ノードに、
前記第1ノードと前記送信先ノードとの通信の帯域幅に基づいて、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出し、
前記第2ノードと前記送信先ノードとの通信の帯域幅に基づいて、前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出する処理を実行させ、
前記比較する処理は、
算出した前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、算出した前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較することを特徴とする付記1〜5のいずれか一つに記載の送信制御プログラム。
(付記7)前記第1ノードに、
前記第1ノードのプロセッサまたは前記第1ノードのメモリの使用率に基づいて、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出し、
前記第2ノードのプロセッサまたは前記第2ノードのメモリの使用率に基づいて、前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出する処理を実行させ、
前記比較する処理は、
算出した前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、算出した前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較することを特徴とする付記1〜6のいずれか一つに記載の送信制御プログラム。
(付記8)システムに含まれる複数のノードから、第1ノードが記憶するデータと同一の内容のデータを記憶する第2ノードを特定し、
前記複数のノードのうちの前記データの送信先となる送信先ノードと前記複数のノードの各々のノードとの通信が前記システムの性能に与える影響度合いを表す影響度を前記各々のノードに対応して記憶する記憶部を参照して、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、特定した前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較し、
比較結果に基づいて、前記複数のノードと通信する通信部を制御して、前記送信先ノードに前記データを送信する、
処理を前記第1ノードに実行させる送信制御プログラムを記録した前記第1ノードに読み取り可能な記録媒体。
(付記9)システムに含まれる複数のノードから、第1ノードが記憶するデータと同一の内容のデータを記憶する第2ノードを特定する特定部と、
前記複数のノードのうちの前記データの送信先となる送信先ノードと前記複数のノードの各々のノードとの通信が前記システムの性能に与える影響度合いを表す影響度を前記各々のノードに対応して記憶する記憶部を参照して、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、前記特定部によって特定された前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較する比較部と、
前記比較部による比較結果に基づいて、前記送信先ノードに前記データを送信する通信部と、
を有することを特徴とする通信ノード。
(付記10)システムに含まれる複数のノードから、第1ノードが記憶するデータと同一の内容のデータを記憶する第2ノードを特定し、
前記複数のノードのうちの前記データの送信先となる送信先ノードと前記複数のノードの各々のノードとの通信が前記システムの性能に与える影響度合いを表す影響度を前記各々のノードに対応して記憶する記憶部を参照して、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、特定した前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較し、
比較結果に基づいて、前記複数のノードと通信する通信部を制御して、前記送信先ノードに前記データを送信する、
処理を前記第1ノードが実行することを特徴とする送信制御方法。
100 分散処理システム
101 ノード
102 スイッチ
701 受付部
702 特定部
703 算出部
704 比較部
705 送信制御部
706 通信部
711 経路テーブル

Claims (9)

  1. システムに含まれる複数のノードから、第1ノードが記憶するデータと同一の内容のデータを記憶する第2ノードを特定し、
    前記複数のノードのうちの前記データの送信先となる送信先ノードと前記複数のノードの各々のノードとの通信が前記システムの性能に与える影響度合いを表す影響度を前記各々のノードに対応して記憶する記憶部を参照して、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、特定した前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較し、
    比較結果に基づいて、前記複数のノードと通信する通信部を制御して、前記送信先ノードに前記データを送信する、
    処理を前記第1ノードに実行させることを特徴とする送信制御プログラム。
  2. 前記送信する処理は、
    前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度が前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度より小さい場合、前記通信部を制御して、前記送信先ノードに前記データを送信することを特徴とする請求項1に記載の送信制御プログラム。
  3. 前記比較する処理は、
    複数の第2ノードが特定された場合、前記複数の第2ノードの各々の第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度のうちの最小の影響度と、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較することを特徴とする請求項2に記載の送信制御プログラム。
  4. 前記特定する処理は、
    前記データに基づいて、前記複数のノードから前記第2ノードを特定することを特徴とする請求項1〜3のいずれか一つに記載の送信制御プログラム。
  5. 前記第1ノードに、
    前記第1ノードと前記送信先ノードとの通信を中継するスイッチ装置の数に基づいて、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出し、
    前記第2ノードと前記送信先ノードとの通信を中継するスイッチ装置の数に基づいて、前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出する処理を実行させ、
    前記比較する処理は、
    算出した前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、算出した前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較することを特徴とする請求項1〜4のいずれか一つに記載の送信制御プログラム。
  6. 前記第1ノードに、
    前記第1ノードと前記送信先ノードとの通信の帯域幅に基づいて、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出し、
    前記第2ノードと前記送信先ノードとの通信の帯域幅に基づいて、前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出する処理を実行させ、
    前記比較する処理は、
    算出した前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、算出した前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較することを特徴とする請求項1〜5のいずれか一つに記載の送信制御プログラム。
  7. 前記第1ノードに、
    前記第1ノードのプロセッサまたは前記第1ノードのメモリの使用率に基づいて、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出し、
    前記第2ノードのプロセッサまたは前記第2ノードのメモリの使用率に基づいて、前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度を算出する処理を実行させ、
    前記比較する処理は、
    算出した前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、算出した前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較することを特徴とする請求項1〜6のいずれか一つに記載の送信制御プログラム。
  8. システムに含まれる複数のノードから、第1ノードが記憶するデータと同一の内容のデータを記憶する第2ノードを特定する特定部と、
    前記複数のノードのうちの前記データの送信先となる送信先ノードと前記複数のノードの各々のノードとの通信が前記システムの性能に与える影響度合いを表す影響度を前記各々のノードに対応して記憶する記憶部を参照して、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、前記特定部によって特定された前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較する比較部と、
    前記比較部による比較結果に基づいて、前記送信先ノードに前記データを送信する通信部と、
    を有することを特徴とする通信ノード。
  9. システムに含まれる複数のノードから、第1ノードが記憶するデータと同一の内容のデータを記憶する第2ノードを特定し、
    前記複数のノードのうちの前記データの送信先となる送信先ノードと前記複数のノードの各々のノードとの通信が前記システムの性能に与える影響度合いを表す影響度を前記各々のノードに対応して記憶する記憶部を参照して、前記第1ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、特定した前記第2ノードと前記送信先ノードとの通信が前記システムの性能に与える影響度合いを表す影響度と、を比較し、
    比較結果に基づいて、前記複数のノードと通信する通信部を制御して、前記送信先ノードに前記データを送信する、
    処理を前記第1ノードが実行することを特徴とする送信制御方法。
JP2012187993A 2012-08-28 2012-08-28 送信制御プログラム、通信ノード、および送信制御方法 Pending JP2014044677A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012187993A JP2014044677A (ja) 2012-08-28 2012-08-28 送信制御プログラム、通信ノード、および送信制御方法
US13/930,791 US20140067992A1 (en) 2012-08-28 2013-06-28 Computer product, communication node, and transmission control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012187993A JP2014044677A (ja) 2012-08-28 2012-08-28 送信制御プログラム、通信ノード、および送信制御方法

Publications (1)

Publication Number Publication Date
JP2014044677A true JP2014044677A (ja) 2014-03-13

Family

ID=50189005

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012187993A Pending JP2014044677A (ja) 2012-08-28 2012-08-28 送信制御プログラム、通信ノード、および送信制御方法

Country Status (2)

Country Link
US (1) US20140067992A1 (ja)
JP (1) JP2014044677A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017107300A (ja) * 2015-12-07 2017-06-15 富士通株式会社 データ管理プログラム及びデータ管理方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6519111B2 (ja) * 2014-07-18 2019-05-29 富士通株式会社 データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
US11474874B2 (en) 2014-08-14 2022-10-18 Qubole, Inc. Systems and methods for auto-scaling a big data system
JP2016206757A (ja) * 2015-04-16 2016-12-08 富士通株式会社 分散処理プログラム、分散処理方法および情報処理装置
US11436667B2 (en) 2015-06-08 2022-09-06 Qubole, Inc. Pure-spot and dynamically rebalanced auto-scaling clusters
CN105808354B (zh) * 2016-03-10 2019-02-15 西北大学 利用WLAN网络组建临时Hadoop环境的方法
US11080207B2 (en) * 2016-06-07 2021-08-03 Qubole, Inc. Caching framework for big-data engines in the cloud
US10606664B2 (en) 2016-09-07 2020-03-31 Qubole Inc. Heterogeneous auto-scaling big-data clusters in the cloud
CN107992491A (zh) * 2016-10-26 2018-05-04 ***通信有限公司研究院 一种分布式文件***、数据访问和数据存储的方法及装置
US10498817B1 (en) * 2017-03-21 2019-12-03 Amazon Technologies, Inc. Performance tuning in distributed computing systems
US10733024B2 (en) 2017-05-24 2020-08-04 Qubole Inc. Task packing scheduling process for long running applications
CN108234465B (zh) * 2017-12-26 2021-09-10 创新科技术有限公司 一种分布式文件***中应对异常的冗余方法和装置
US11228489B2 (en) 2018-01-23 2022-01-18 Qubole, Inc. System and methods for auto-tuning big data workloads on cloud platforms
US10540207B1 (en) * 2018-07-18 2020-01-21 International Business Machines Corporation Fast, low memory, consistent hash using an initial distribution
US10880360B2 (en) * 2019-04-05 2020-12-29 International Business Machines Corporation File transmission in a cluster
US11704316B2 (en) 2019-05-31 2023-07-18 Qubole, Inc. Systems and methods for determining peak memory requirements in SQL processing engines with concurrent subtasks
US11144360B2 (en) 2019-05-31 2021-10-12 Qubole, Inc. System and method for scheduling and running interactive database queries with service level agreements in a multi-tenant processing system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470420B1 (en) * 2000-03-31 2002-10-22 Western Digital Ventures, Inc. Method for designating one of a plurality of addressable storage devices to process a data transfer request
JP2009169522A (ja) * 2008-01-11 2009-07-30 Canon Inc データ共有システム、データ共有方法、情報処理装置、プログラムおよび記憶媒体
JP2009187101A (ja) * 2008-02-04 2009-08-20 Brother Ind Ltd コンテンツ分散保存システム、評価値加算方法、サーバ装置、ノード装置、及びノード処理プログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6304913B1 (en) * 1998-11-09 2001-10-16 Telefonaktiebolaget L M Ericsson (Publ) Internet system and method for selecting a closest server from a plurality of alternative servers
JP2002044138A (ja) * 2000-07-25 2002-02-08 Nec Corp ネットワークシステム,キャッシュサーバ,中継サーバ,ルータ,キャッシュサーバ制御方法及び記録媒体
JP2002091936A (ja) * 2000-09-11 2002-03-29 Hitachi Ltd 負荷分散装置及び負荷見積もり方法
CN1218543C (zh) * 2000-10-10 2005-09-07 辐射网络公司 通信格网
US6671658B2 (en) * 2000-12-23 2003-12-30 Hewlett-Packard Development Company, L.P Method for service level estimation in an operating computer system
US6889338B2 (en) * 2001-08-15 2005-05-03 Nortel Networks Limited Electing a master server using election periodic timer in fault-tolerant distributed dynamic network systems
US8886705B1 (en) * 2003-06-30 2014-11-11 Symantec Operating Corporation Goal-oriented storage management for a distributed data storage network
JP4313650B2 (ja) * 2003-11-07 2009-08-12 株式会社日立製作所 ファイルサーバ、冗長度回復方法、プログラム及び記録媒体
JP4308241B2 (ja) * 2006-11-10 2009-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
US7813351B2 (en) * 2007-04-13 2010-10-12 Hewlett-Packard Development Company, L.P. Available bandwidth estimation
US8798034B2 (en) * 2009-03-31 2014-08-05 Motorola Solutions, Inc. System and method for selecting a route based on link metrics incorporating channel bandwidth, spatial streams and/or guard interval in a multiple-input multiple-output (MIMO) network
EP2480974B1 (en) * 2009-09-21 2018-09-05 Qualcomm Incorporated Distributed content storage and retrieval
US20120203864A1 (en) * 2009-10-23 2012-08-09 Telefonaktiebolaget L M Ericsson (Publ) Method and Arrangement in a Communication Network for Selecting Network Elements

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470420B1 (en) * 2000-03-31 2002-10-22 Western Digital Ventures, Inc. Method for designating one of a plurality of addressable storage devices to process a data transfer request
JP2009169522A (ja) * 2008-01-11 2009-07-30 Canon Inc データ共有システム、データ共有方法、情報処理装置、プログラムおよび記憶媒体
JP2009187101A (ja) * 2008-02-04 2009-08-20 Brother Ind Ltd コンテンツ分散保存システム、評価値加算方法、サーバ装置、ノード装置、及びノード処理プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017107300A (ja) * 2015-12-07 2017-06-15 富士通株式会社 データ管理プログラム及びデータ管理方法

Also Published As

Publication number Publication date
US20140067992A1 (en) 2014-03-06

Similar Documents

Publication Publication Date Title
JP2014044677A (ja) 送信制御プログラム、通信ノード、および送信制御方法
KR101585146B1 (ko) 오브젝트를 복수 개의 데이터 노드들의 위치에 기반하여 분산 저장하는 분산 저장 시스템 및 그 위치 기반 분산 저장 방법 및 컴퓨터에 의하여 독출 가능한 저장 매체
US9286003B1 (en) Method and apparatus for creating a short hash handle highly correlated with a globally-unique hash signature
CN103150347B (zh) 基于文件热度的动态副本管理方法
US9143452B2 (en) Data processing
US20190163371A1 (en) Next generation storage controller in hybrid environments
WO2017097059A1 (zh) 分布式数据库***及其自适应方法
JP5929196B2 (ja) 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法
EP3163446B1 (en) Data storage method and data storage management server
JP2011514577A (ja) 分散共有ストリーム処理システムのクエリ配備プラン
JP2014513852A (ja) クラスタデータグリッドにおける拡張可能な中央集中型動的リソース分散
WO2012127526A1 (en) File server system and storage control method
WO2012117658A1 (ja) ストレージシステム
US9471586B2 (en) Intelligent selection of replication node for file data blocks in GPFS-SNC
JP6288596B2 (ja) データ処理方法および装置
GB2529403A (en) A Method of operating a shared nothing cluster system
CN102508902A (zh) 云存储***中可变分块大小的块数据分块方法
US20140244794A1 (en) Information System, Method and Program for Managing the Same, Method and Program for Processing Data, and Data Structure
KR20100073154A (ko) 메타데이터 서버, 데이터 서버의 데이터 처리 방법 및 이를이용한 비대칭 클러스터 분산 파일 시스템
Liu et al. An improved hadoop data load balancing algorithm
KR20130118088A (ko) 멀티 메타데이터 서버 구조를 갖는 분산 파일 시스템 및 이를 이용한 데이터 처리 방법
US10474644B2 (en) Systems and methods for optimizing selection of a replication data node in a distributed file system
JP6011786B2 (ja) 分散ストレージシステム、分散ストレージデータ配置制御方法及び分散ストレージデータ配置制御用プログラム
Yu et al. Granary: A sharing oriented distributed storage system
US9667735B2 (en) Content centric networking

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160415

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160624

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161108