JP2015001828A - 割当プログラム、割当装置および割当方法 - Google Patents

割当プログラム、割当装置および割当方法 Download PDF

Info

Publication number
JP2015001828A
JP2015001828A JP2013126121A JP2013126121A JP2015001828A JP 2015001828 A JP2015001828 A JP 2015001828A JP 2013126121 A JP2013126121 A JP 2013126121A JP 2013126121 A JP2013126121 A JP 2013126121A JP 2015001828 A JP2015001828 A JP 2015001828A
Authority
JP
Japan
Prior art keywords
node
distance
assigned
slave
nodes
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
JP2013126121A
Other languages
English (en)
Inventor
松田 雄一
Yuichi Matsuda
雄一 松田
晴康 上田
Haruyasu Ueda
晴康 上田
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 JP2013126121A priority Critical patent/JP2015001828A/ja
Priority to US14/256,394 priority patent/US20140372611A1/en
Publication of JP2015001828A publication Critical patent/JP2015001828A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/502Proximity

Abstract

【課題】分散処理にかかる時間の増大化の抑制を図ること。
【解決手段】割当装置101は、距離情報110を参照して、ノード群102のうちのMapタスク111が割り当てられたノードと、ノード群102のうちのReduceタスクを割当可能なノードと、の間の距離を特定する。具体的に、割当装置101は、ノード102#1とノード102#2との間の距離が短く、ノード102#1とノード102#3との間の距離が長いということを特定する。次に、割当装置101は、特定した距離に基づいて、Reduceタスクを割当可能なノードからReduceの処理を割り当てるノードを決定する。図1の例では、割当装置101は、ノード102#1との距離が短いノード102#2を、Reduceタスクを割り当てるノードに決定する。
【選択図】図1

Description

本発明は、割当プログラム、割当装置および割当方法に関する。
近年、膨大なデータを処理する技術として、MapReduce処理という分散処理技術がある。MapReduceは、データの処理を、Map処理とMap処理の処理結果を用いるReduce処理という2段階に分けて行う処理である。具体的に、複数のノードの各々が、蓄積されたデータを分割したデータを処理対象とするMap処理を実行する。そして、複数のノードのうちのいずれかのノードが、Map処理の処理結果を処理対象として、データ全体についての処理結果を取得するReduce処理を実行する。
たとえば、Map処理とReduce処理とを複数の仮想マシンに分散配置する各種の配置パターンを検出し、配置パターンごとに、実行時間、消費電力、I/O量を考慮したコストの計算結果に基づいて、コストが最小となる配置パターンを選択する技術がある。また、スレーブノードとスイッチとの間の接続関係に基づいて、複数のスイッチの各々のスイッチと直接接続するスレーブノード群で形成するグループを算出し、分散処理する複数のデータブロックを、算出したグループのうちの一つに配置する技術がある。(たとえば、下記特許文献1、2を参照。)
特開2010−218307号公報 特開2010−244469号公報
しかしながら、従来技術によれば、Map処理が割り当てられたノードとReduce処理が割り当てられるノードとの間の距離が遠くなるにつれて、Map処理の処理結果の転送にかかる時間が増大することになり、分散処理にかかる時間が増大する。
1つの側面では、本発明は、分散処理にかかる時間の増大化を抑制できる割当プログラム、割当装置および割当方法を提供することを目的とする。
本発明の一側面によれば、通信可能なノード群の各々のノード間の距離を特定する距離情報を参照して、ノード群のうちの第1の処理が割り当てられたノードと、ノード群のうちの第1の処理の処理結果を処理対象とする第2の処理を割当可能なノードと、の間の距離を特定し、特定した距離に基づいて、第2の処理を割当可能なノードから第2の処理を割り当てるノードを決定する割当プログラム、割当装置および割当方法が提案される。
本発明の一態様によれば、分散処理にかかる時間の増大化の抑制を図ることができるという効果を奏する。
図1は、本実施の形態にかかる割当装置の動作例を示す説明図である。 図2は、分散処理システムのシステム構成例を示す説明図である。 図3は、マスタノードのハードウェア構成例を示すブロック図である。 図4は、分散処理システムのソフトウェア構成例を示す説明図である。 図5は、マスタノードの機能構成例を示すブロック図である。 図6は、本実施の形態にかかる分散処理システムによるMapReduce処理の一例を示す説明図である。 図7は、距離関数Dtの説明図である。 図8は、距離関数テーブルの記憶内容の一例を示す説明図である。 図9は、距離係数の設定例を示す説明図である。 図10は、距離係数テーブルの記憶内容の一例を示す説明図である。 図11は、Reduceタスクの割当先ノード決定の第1の例を示す説明図である。 図12は、Reduceタスクの割当先ノード決定の第2の例を示す説明図である。 図13は、MapReduce処理手順の一例を示すフローチャートである。 図14は、Reduceタスク割当ノード決定処理手順の一例を示すフローチャートである。
以下に図面を参照して、開示の割当プログラム、割当装置および割当方法の実施の形態を詳細に説明する。
図1は、本実施の形態にかかる割当装置の動作例を示す説明図である。システム100は、第1の処理および第2の処理を割り当てる割当装置101と、割当装置101と通信可能なノード群102とを含む。ノード群102は、システム100内に複数台存在する。図1の例では、システム100は、ノード群102としてノード102#1とノード102#2とノード102#3を含む。割当装置101、ノード102#1〜#3は、ネットワーク103により接続される。ノード群102の各々のノードは、割当装置101により割り当てられた第1の処理および第2の処理を実行する装置である。また、割当装置101、ノード102#1、#2は、データセンタ104に含まれ、ノード102#3は、データセンタ105に含まれる。
データセンタとは、情報処理と通信を行う装置や、通信を経由するスイッチ装置等の複数のリソースが設置された施設である。また、データセンタ104とデータセンタ105とは、離れた距離にあるものとする。なお、スイッチ装置を、以下、単に、「スイッチ」と呼称する。
以下の説明では、xをインデックスとし、末尾記号“#x”が付与される記号については、x番目のノード102について説明するものとする。また、ノード102と表現する場合、ノード102全てに共通する説明を行うものとする。
第1の処理とは、他のノード102に割り当てられる第1の処理とは独立したものであり、ノード102に割り当てられた全ての第1の処理を並列に実行できる処理である。たとえば、第1の処理は、処理対象となる入力されたデータを用いて、他の入力されたデータを処理対象とする別の第1の処理とは独立して、KeyValueの形式に従ってデータを出力する処理である。KeyValueの形式となるデータとは、Valueフィールドに格納された任意の保存したい値と、Keyフィールドに格納された保存したいデータに対応する一意の標識と、の組である。
第2の処理とは、第1の処理の処理結果を処理対象とする処理である。たとえば、第1の処理の処理結果が、KeyValueの形式となるデータである場合、第2の処理は、第1の処理の処理結果の属性となるKeyフィールドをもとに第1の処理結果を集約した1つ以上の処理結果を処理対象とする処理である。また、たとえば、第2の処理は、Valueフィールドをもとに第1の処理結果を集約した1つ以上の処理結果を処理対象とする処理であってもよい。
システム100は、あるデータを処理対象として何らかの結果を得る情報処理を、第1の処理と第2の処理とをノード102に分散して割り当てることにより、情報処理を実行する。処理を分散して処理するソフトウェアとして、実施の形態にかかるシステム100は、Hadoopを採用した例を用いて説明する。
また、Hadoopで用いられる用語を用いて、本実施の形態にかかるシステム100を説明する。「ジョブ」は、Hadoopにおける処理単位である。たとえば、交通量を示す情報から渋滞情報を算出する処理が1つのジョブとなる。「タスク」は、ジョブが分割された処理単位である。タスクは、第1の処理であるMap処理を実行するMapタスクと、第2の処理であるReduce処理を実行するReduceタスクとの2種類がある。また、Map処理を実行した装置がMap処理の処理結果をReduceタスクを割り当てられた装置に送信し、Reduceタスクを割り当てられた装置がKeyフィールドをもとにMap処理の処理結果を集約するシャッフル&ソート処理がある。
次に、Hadoopが構築される環境について説明する。1つのデータセンタ内にHadoopを構築することが一般的であるが、複数のデータセンタを利用してHadoopを構築することもできる。複数のデータセンタを利用してHadoopを構築する第1の例として、予め複数のデータセンタでデータを収集した状態において、複数のデータセンタに収集されたデータ全てを用いて分散処理を行う需要が発生したとする。このとき、複数のデータセンタに収集されたデータ全てを一つのデータセンタに集約しようとしても、データの移動で時間がかかるため、複数のデータセンタを利用してHadoopを構築することにより、データの集約を行わずに、分散処理を行うことができる。
また、複数のデータセンタを利用してHadoopを構築する第2の例としては、予め複数のデータセンタでデータを収集した状態において、各データセンタにあるデータがセキュリティの関係から移動することが禁止された場合である。移動することが禁止されたデータは、たとえば、ある企業に勤める人の給与情報、個人情報等を含むデータである。このとき、Map処理の割当先となり得るノードの条件が、データのあるデータセンタ内のノードとなる。
複数のデータセンタを利用してHadoopを構築した場合、シャッフル&ソート処理において、離れたノードにMap処理の処理結果を送信する場合がある。この場合、Map処理の処理結果の送信にかかる時間が増加してしまい、MapReduce全体の時間が増加する。
そこで、割当装置101は、各地に点在するノード群102から、Mapタスク111が割り当てられたノード102との距離の近いノードを、Reduceタスクを割り当てるノード102として決定する。これにより、割当装置101は、Mapタスク111の処理結果が遠隔地にあるノード102に転送され難くなり、分散処理にかかる時間の増大化を抑制する。
割当装置101は、距離情報110を参照して、ノード群102のうちのMapタスク111が割り当てられたノードと、ノード群102のうちのReduceタスクを割当可能なノードと、の間の距離を特定する。図1の例において、Reduceタスクを割当可能なノードは、ノード102#2とノード102#3とであるとする。図1中、点線で示すブロックは、Reduceタスクが割当可能であることを示す。なお、ノード102がReduceタスクを割当可能であることを割当装置101に伝達するために、Reduceタスクが割当可能であるノード102は、Reduceタスクが割当可能であることを示すReduceタスク割当要求を割当装置101に送信する。
距離情報110は、ノード群102の各々のノード間の距離を特定する情報である。距離情報110は、ノード間の距離として、ノード間の実際の距離でもよいし、ノード間の距離を表す度合でもよい。距離情報110の具体的な説明は、図5で後述する。たとえば、距離情報110は、ノード102#1とノード102#2との間の距離が短く、ノード102#1とノード102#3との間の距離が、データセンタ104とデータセンタ105とが離れているため、長いことを示す。距離情報110が前述の例である場合、割当装置101は、ノード102#1とノード102#2との間の距離が短く、ノード102#1とノード102#3との間の距離が長いということを特定する。
次に、割当装置101は、特定した距離に基づいて、Reduceタスクを割当可能なノードからReduceの処理を割り当てるノードを決定する。図1の例では、割当装置101は、ノード102#1との距離が短いノード102#2を、Reduceタスクを割り当てるノードに決定する。そして、割当装置101は、決定結果に従い、Reduceタスクをノード102#2に割り当てる。
(分散処理システムのシステム構成例)
次に、図1に示したシステム100を分散処理システムに適用した場合について、図2〜図14を用いて説明する。
図2は、分散処理システムのシステム構成例を示す説明図である。図2に示す分散処理システム200は、地理的に離れた広域分散クラスタを用いて、データを分散させてMapReduce処理を実行するシステムである。具体的に、分散処理システム200は、スイッチSw_sと、複数のデータセンタとしてデータセンタD1およびデータセンタD2と、を有する。データセンタD1と、データセンタD2とは、地理的に離れた位置にある。データセンタD1と、データセンタD2とはスイッチSw_sにより接続される。
データセンタD1は、スイッチSw_d1と、2個のラックとを含む。以下、データセンタD1に含まれる2個のラックをそれぞれ、「ラックD1/R1」、「ラックD1/R2」と称する。ラックD1/R1とラックD1/R2は、スイッチSw_d1により接続される。
ラックD1/R1は、スイッチSw_d1r1と、マスタノードMsと、n_d1r1個のスレーブノードを含む。n_d1r1は、正の整数である。以下、ラックD1/R1に含まれるスレーブノードをそれぞれ、「スレーブノードD1/R1/Sl#1」、…、「スレーブノードD1/R1/Sl#n_d1r1」と称する。マスタノードMs、スレーブノードD1/R1/Sl#1、…、スレーブノードD1/R1/Sl#n_d1r1は、スイッチSw_d1r1により接続される。
ラックD1/R2は、スイッチSw_d1r2と、n_d1r2個のスレーブノードを含む。n_d1r2は、正の整数である。以下、ラックD1/R2に含まれるスレーブノードをそれぞれ、「スレーブノードD1/R2/Sl#1」、…、「スレーブノードD1/R2/Sl#n_d1r2」と称する。スレーブノードD1/R2/Sl#1、…、スレーブノードD1/R2/Sl#n_d1r2は、スイッチSw_d1r2により接続される。
データセンタD2は、スイッチSw_d2と、2個のラックを含む。以下、データセンタD2に含まれる2個のラックをそれぞれ、「ラックD2/R1」、「ラックD2/R2」と称する。ラックD2/R1とラックD2/R2は、スイッチSw_d2により接続される。
ラックD2/R1は、スイッチSw_d2r1と、n_d2r1個のスレーブノードを含む。n_d2r1は、正の整数である。以下、ラックD2/R1に含まれるスレーブノードをそれぞれ、「スレーブノードD2/R1/Sl#1」、…、「スレーブノードD2/R1/Sl#n_d2r1」と称する。スレーブノードD2/R1/Sl#1、…、スレーブノードD2/R1/Sl#n_d2r1は、スイッチSw_d2r1により接続される。
ラックD2/R2は、スイッチSw_d2r2と、n_d2r2個のスレーブノードを含む。n_d2r2は、正の整数である。以下、ラックD2/R2に含まれるスレーブノードをそれぞれ、「スレーブノードD2/R2/Sl#1」、…、「スレーブノードD2/R2/Sl#n_d2r2」と称する。スレーブノードD2/R2/Sl#1、…、スレーブノードD2/R2/Sl#n_d2r2は、スイッチSw_d2r2により接続される。
以下、全てのデータセンタ、全てのラックに含まれるスレーブノードのいずれかについて言及する際は、スレーブノードSlと称する。また、分散処理システム200内には、スレーブノードがn台あるとする。nは、正の整数であり、n=n_d1r1+n_d1r2+n_d2r1+n_d2r2という関係を有する。さらに、nを用いて、分散処理システム200内に含まれるスレーブノード群を、スレーブノード群Slnと称することがある。また、スレーブノードSl#1〜#nと、マスタノードMsとを総称して、単に、「ノード」と称することもある。
ここで、図1との対応関係を説明する。マスタノードMsは、図1で説明した割当装置101に相当する。スレーブノードSlは、図1で説明したノード102に相当する。スイッチSw_s、Sw_d1、Sw_d2、Sw_d1r1、Sw_d1r2、Sw_d2r1、Sw_d2r2は、図1で説明したネットワーク103に相当する。データセンタD1と、データセンタD2とは、図1で説明したデータセンタ104、105に相当する。
マスタノードMsは、Map処理とReduce処理とをスレーブノードSl#1〜#nに割り当てる装置である。また、マスタノードMsは、スレーブノードSl#1〜#nのホスト名一覧を記述した設定ファイルを有する。スレーブノードSl#1〜#nは、割り当てられたMap処理と、Reduce処理とを実行する装置である。
(マスタノードMsのハードウェア)
図3は、マスタノードのハードウェア構成例を示すブロック図である。図3において、マスタノードMsは、CPU(Central Processing Unit)301と、ROM(Read−Only Memory)302と、RAM(Random Access Memory)303と、を含む。また、マスタノードMsは、磁気ディスクドライブ304と、磁気ディスク305と、IF(Interface)306と、を含む。また、各部はバス307によってそれぞれ接続される。
CPU301は、マスタノードMsの全体の制御を司る演算処理装置である。ROM302は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM303は、CPU301のワークエリアとして使用される揮発性メモリである。磁気ディスクドライブ304は、CPU301の制御に従って磁気ディスク305に対するデータのリード/ライトを制御する制御装置である。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する不揮発性メモリである。また、マスタノードMsは、ソリッドステートドライブを有してもよい。
IF306は、通信回線を通じて、ネットワーク308を介し、スイッチSw_d1r1等の他の装置に接続される。そして、IF306は、ネットワーク308と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。IF306には、たとえばモデムやLANアダプタなどを採用することができる。
なお、マスタノードMsの管理者がマスタノードMsを直接操作する場合、図3には図示していないが、マスタノードMsは、光ディスクドライブと、光ディスクと、ディスプレイと、マウスと、を有してもよい。
光ディスクドライブは、CPU301の制御に従って光ディスクに対するデータのリード/ライトを制御する制御装置である。光ディスクは、光ディスクドライブの制御で書き込まれたデータを記憶したり、光ディスクに記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイは、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。たとえば、ディスプレイは、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
キーボードは、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボードは、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスは、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。また、マスタノードMsは、マウスの代わりとして、ポインティングデバイスとして同様に機能を有するものであれば、トラックボールやジョイスティックなどであってもよい。
また、スレーブノードSlは、CPUと、ROMと、RAMと、磁気ディスクドライブと、磁気ディスクと、を有する。
図4は、分散処理システムのソフトウェア構成例を示す説明図である。分散処理システム200は、マスタノードMsと、スレーブノードSl#1〜#nと、ジョブクライアント401と、HDFS(Hadoop Distributed File System)クライアント402とを含む。マスタノードMsと、スレーブノードSl#1〜#nとを含めてHadoopクラスタ400として定義する。Hadoopクラスタ400は、ジョブクライアント401と、HDFSクライアント402を含めてもよい。
ジョブクライアント401は、MapReduce処理の処理対象となるファイルと、実行可能ファイルとなるプログラムと、実行ファイルの設定ファイルとを記憶しており、ジョブの実行要求をマスタノードMsに通知する装置である。
HDFSクライアント402は、Hadoop独自のファイルシステムである、HDFSのファイル操作を行う端末である。
マスタノードMsは、ジョブトラッカー411と、ジョブスケジューラ412と、ネームノード413と、HDFS414と、メタデータテーブル415とを有する。スレーブノードSl#xは、タスクトラッカー421#xと、データノード422#xと、HDFS423#xと、Mapタスク424#xと、Reduceタスク425#xとを有する。xは、1からnまでの整数である。ジョブクライアント401は、MapReduceプログラム431と、JobConf432とを、有する。HDFSクライアント402は、HDFSクライアントアプリケーション441と、HDFS API(Application Programming Interface)442と、を有する。
Hadoopは、HDFS以外のファイルシステムが採用されてもよい。たとえば、分散処理システム200は、マスタノードMsとスレーブノードSl#1〜#nが、FTP(File Transfer Protocol)によりアクセス可能なファイルサーバを採用してもよい。
ジョブトラッカー411は、実行すべきジョブをジョブクライアント401から受け付ける。続けて、ジョブトラッカー411は、クラスタ中の利用可能なタスクトラッカー421に、Mapタスク424、Reduceタスク425を割り当てる。ジョブスケジューラ412は、次に実行するジョブを決定する。具体的に、ジョブスケジューラ412は、ジョブクライアント401から要求された複数のジョブのうち、次に実行するジョブを決定する。また、ジョブスケジューラ412は、決定したジョブに対して、スプリットが入力される都度、Mapタスク424を生成する。また、ジョブトラッカー411は、各タスクトラッカー421を識別するタスクトラッカーIDを記憶する。
ネームノード413は、Hadoopクラスタ400内のファイルの記憶先を制御する。たとえば、ネームノード413は、入力されたファイルが、HDFS414、HDFS423#1〜#nのどこに記憶されるかを決定し、決定されたHDFSにファイルを送信する。
HDFS414、HDFS423#1〜#nは、ファイルを分散して記憶する記憶領域である。具体的に、HDFS423#1〜#nは、ファイルを物理的な区切りで分割したブロック単位で記憶する。メタデータテーブル415は、HDFS414、HDFS423#1〜#nに記憶するファイルの位置を記憶する記憶領域である。
タスクトラッカー421は、ジョブトラッカー411から割り当てられたMapタスク424やReduceタスク425を、自装置に実行させる。また、タスクトラッカー421は、Mapタスク424やReduceタスク425の進捗状況や処理の完了報告をジョブトラッカー411に通知する。また、タスクトラッカー421は、マスタノードMsにある、スレーブノードSl#1〜#nのホスト名一覧を記述した設定ファイルが読み込まれた際に、起動要求を受ける。そして、タスクトラッカー421は、スレーブノードSlのホスト名に対応しており、マスタノードMsよりタスクトラッカーIDを受け付ける。
データノード422は、スレーブノードSl内のHDFS423を制御する。Mapタスク424は、Map処理を実行する。Reduceタスク425は、Reduce処理を実行する。また、スレーブノードSlは、Reduce処理を行う前段階として、シャッフル&ソート処理を実行する。シャッフル&ソート処理は、Map処理の結果を集約する処理を行う。具体的に、シャッフル&ソート処理は、Map処理の結果をKeyごとに並び替え、同一のKeyとなったValueを纏めて、Reduceタスク425に出力する。
MapReduceプログラム431は、Map処理を実行するプログラムと、Reduce処理を実行するプログラムとを含むプログラムである。JobConf432は、MapReduceプログラム431の設定を記述したプログラムである。設定の例としては、Mapタスク424の生成数や、Reduceタスク425の生成数や、MapReduce処理の処理結果の出力先等である。
HDFSクライアントアプリケーション441は、HDFSを操作するアプリケーションである。HDFS API442は、HDFSにアクセスするAPIである。HDFS API442は、たとえば、HDFSクライアントアプリケーション441からファイルのアクセス要求があった場合、データノード422に、ファイルを保持しているか否かを問い合わせる。
(マスタノードMsの機能)
次に、マスタノードMsの機能について説明する。図5は、マスタノードの機能構成例を示すブロック図である。マスタノードMsは、特定部501と、決定部502と、を含む。制御部となる特定部501、決定部502は、記憶装置に記憶されたプログラムをCPU301が実行することにより、特定部501、決定部502の機能を実現する。記憶装置とは、具体的には、たとえば、図3に示したROM302、RAM303、磁気ディスク305などである。または、IF306を経由して他のCPUが実行することにより、特定部501、決定部502の機能を実現してもよい。
また、マスタノードMsは、距離情報110にアクセス可能である。距離情報110は、RAM303、磁気ディスク305といった記憶装置に格納される。距離情報110は、スレーブノード群Slnの各々のノード間の距離を特定する情報である。また、距離情報110は、スレーブノード群Slnが属するデータセンタ間の距離を表す情報を記憶する距離係数テーブルdα_tと、スレーブノード群Slnの各々のノードが属するデータセンタを特定するノード情報Niとを含めてもよい。さらに、距離情報110は、各々のノード間の伝送路に含まれるスイッチの数を含めた値を記憶する距離関数テーブルdt_tを含めてもよい。
たとえば、ノード情報Niは、スレーブノードD1/R1/Sl#1、…、スレーブノードD1/R2/Sl#n_d1r2がデータセンタD1に属することを記憶する。さらに、ノード情報Niは、スレーブノードD2/R1/Sl#1、…、スレーブD2/R2/Sl#n_d2r2がデータセンタD2に属することを記憶する。また、ノード情報Niは、スレーブノードSlが、どのラックに属するかを記憶する。また、ノード情報Niは、図2で説明した設定ファイルでもよい。
ノード情報Niの記憶内容の一例として、図2で説明した設定ファイルであるとき、ノード情報Niは、スレーブノードD1/R1/Sl#1、…、スレーブノードD1/R2/Sl#n_d1r2のそれぞれのホスト名である。スレーブノードSlのホスト名が“D1/R1/Sl#1”というようにデータセンタの識別情報を含んでいれば、マスタノードMsは、あるスレーブノードSlがどのデータセンタに属するスレーブノードSlかを特定することができる。
また、ノード情報Niの記憶内容の他の例として、ノード情報Niは、スレーブノードD1/R1/Sl#1、…、スレーブノードD1/R2/Sl#n_d1r2のそれぞれのホスト名と、IP(Internet Protocol)アドレスとを対応付けている。そして、分散処理システム200の管理者等により、スレーブノードSlに割り当てるIPアドレスが、データセンタごとにサブネットワークに分割して割り振られたものとする。たとえば、データセンタD1に属するスレーブノードSlに割り振るIPアドレスが、192.168.0.Xであり、データセンタD2に属するスレーブノードSlに割り振るIPアドレスが192.168.1.Xであるとする。マスタノードMsは、あるスレーブノードSlのIPアドレスの上位24ビットを参照することにより、あるスレーブノードSlがどのデータセンタに属するスレーブノードSlかを特定することができる。
距離関数テーブルdt_tは、各々のスレーブノードSl間の伝送路に含まれるスイッチの数に加え、通信相手となる装置の数を加えてもよい。距離関数テーブルdt_tの記憶内容は、図8で後述する。距離係数テーブルdα_tの記憶内容は、図10で後述する。
特定部501は、距離情報110を参照して、スレーブノード群SlnのうちのMapタスク424が割り当てられたスレーブノードSlと、スレーブノード群SlnのうちのReduceタスク425を割当可能なスレーブノードSlと、の間の距離を特定する。以下、図5の説明において、Mapタスク424が割り当てられたスレーブノードSlを、「スレーブノードSl_M」と称し、Reduceタスク425を割当可能なスレーブノードSlを、「スレーブノードSl_R」と称する。
たとえば、スレーブノードD1/R1/Sl#1がスレーブノードSl_Mとなり、スレーブノードD1/R1/Sl#2がスレーブノードSl_Rとなったとする。さらに、距離情報110が、スレーブノードD1/R1/Sl#1とスレーブノードD1/R1/Sl#2との間の距離の度合が1であるという情報であるとする。このとき、特定部501は、スレーブノードD1/R1/Sl#1とスレーブノードD1/R1/Sl#2との間の距離が1であると特定する。
また、特定部501は、ノード情報Niを参照して、複数のデータセンタのうちのスレーブノードSl_Mが属するデータセンタと、スレーブノードSl_Rが属するデータセンタとをそれぞれ特定する。そして、特定部501は、距離係数テーブルdα_tを参照して、スレーブノードSl_Mが属するデータセンタとスレーブノードSl_Rが属するデータセンタとの間の距離を特定する。特定部501は、データセンタ間の距離を特定することにより、スレーブノードSl_MとスレーブノードSl_Rとの間の距離を特定してもよい。
たとえば、ノード情報Niが、スレーブノードSl_Mが属するデータセンタがデータセンタD1であり、スレーブノードSl_Rが属するデータセンタがデータセンタD2であることを示すとする。さらに、距離係数テーブルdα_tが、データセンタD1とデータセンタD2との間の距離の度合として、100を示すとする。このとき、特定部501は、スレーブノードSl_MとスレーブノードSl_Rとの間の距離を、100であると特定する。
また、特定部501は、距離関数テーブルdt_tを参照して、スレーブノードSl_MとスレーブノードSl_Rとの間の伝送路に含まれるスイッチの数を特定する。そして、特定部501は、スレーブノードSl_MとスレーブノードSl_Rとがそれぞれ属するデータセンタ間の距離と、特定したスイッチの数と、に基づいて、スレーブノードSl_MとスレーブノードSl_Rとの間の距離を特定してもよい。
特定部501は、図7で示す距離関数Dtを用いて、スレーブノードSl_MとスレーブノードSl_Rとの間の距離を特定する。また、たとえば、距離関数テーブルdt_tが、スレーブノードSl_MとスレーブノードSl_Rとの間の伝送路に含まれるスイッチの数として「3」を示すとする。そして、データセンタ内のスイッチ間の距離の度合の平均値が20であったとする。20という値は、予め分散処理システム200の管理者によって設定される値である。さらに、距離係数テーブルdα_tが、スレーブノードSl_MとスレーブノードSl_Rとがそれぞれ属するデータセンタ間の距離の度合として、100を示すとする。このとき、特定部501は、スレーブノードSl_MとスレーブノードSl_Rとの間の距離を、3×20+100=160として特定する。
また、特定部501は、Reduceタスク425を割当可能な複数のスレーブノードSlがある場合、距離情報110を参照して、スレーブノードSl_MとReduceタスク425を割当可能な複数のノードの各々のノードとの間の距離を特定してもよい。たとえば、Reduceタスク425を割当可能なスレーブノードSlが2台あり、それぞれを、スレーブノードSl_R1、スレーブノードSl_R2とする。このとき、特定部501は、スレーブノードSl_MとスレーブノードSl_R1との間の距離と、スレーブノードSl_MとスレーブノードSl_R2との間の距離とを特定する。
また、特定部501は、Mapタスク424が割り当てられた複数のスレーブノードSlがある場合、距離情報110を参照して、Mapタスク424が割り当てられたスレーブノードSlの各々とスレーブノードSl_Rとの間の距離を特定してもよい。たとえば、Mapタスク424が割り当てられたスレーブノードSlが2台あり、それぞれを、スレーブノードSl_M1、スレーブノードSl_M2とする。このとき、特定部501は、スレーブノードSl_M1とスレーブノードSl_Rとの間の距離と、スレーブノードSl_M2とスレーブノードSl_Rとの間の距離とを特定する。なお、特定したデータは、RAM303、磁気ディスク305などの記憶領域に記憶される。
決定部502は、特定部501が特定した距離に基づいて、スレーブノードSl_MからReduceタスク425を割り当てるスレーブノードSlを決定する。たとえば、決定部502は、Reduceタスク425を割当可能なスレーブノードSlが1台であり、特定部501が特定した距離が所定の閾値以下ならば、該当のスレーブノードSlをReduceタスク425を割り当てるスレーブノードSlとして決定する。所定の閾値は、たとえば、分散処理システム200の管理者が指定した値である。
また、Reduceタスク425を割当可能な複数のスレーブノードSlがあるとする。このとき、決定部502は、Reduceタスク425を割当可能な複数のスレーブノードSlのうちの、特定部501が特定した距離が相対的に短いスレーブノードSlにReduceタスク425を割り当てることを決定してもよい。なお、Reduceタスク425を割当可能な複数のスレーブノードSlがあることを検出する例として、マスタノードMsは、スレーブノードSlから受信するReduceタスク割当要求を記憶するバッファを有する。
たとえば、Reduceタスク425を割当可能なスレーブノードSlが2台あり、それぞれを、スレーブノードSl_R1、スレーブノードSl_R2とする。このとき、特定部501が、スレーブノードSl_MとスレーブノードSl_R1との間の距離を10、スレーブノードSl_MとスレーブノードSl_R2との間の距離を12と特定したとする。そして、決定部502は、スレーブノードSl_R1とスレーブノードSl_R2とのうち、特定部501が特定した距離が相対的に短いスレーブノードSl_R1を、Reduceタスク425を割り当てるスレーブノードSlとして決定する。
また、Mapタスク424が割り当てられた複数のスレーブノードSlがあるとする。このとき、決定部502は、Mapタスク424が割り当てられた複数のスレーブノードSlの各々のスレーブノードSlに対応して特定した距離の合計に基づいて、スレーブノードSl_RからReduceタスク425を割り当てるノードを決定してもよい。
たとえば、Mapタスク424が割り当てられたスレーブノードSlが2台あり、それぞれを、スレーブノードSl_M1、スレーブノードSl_M2とする。このとき、特定部501は、スレーブノードSl_M1とスレーブノードSl_Rとの間の距離を10、スレーブノードSl_M2とスレーブノードSl_Rとの間の距離を12として特定する。そして、決定部502は、距離を合計した値10+12=22がMapタスク424が割り当てられたスレーブノードSlの台数×所定の閾値以下であれば、スレーブノードSl_RをReduceタスク425を割り当てるスレーブノードSlとして決定する。
また、Mapタスク424が割り当てられたスレーブノードSlが複数あり、かつ、Reduceタスク425を割当可能な複数のスレーブノードSlがあるとする。このとき、決定部502は、Mapタスク424が割り当てられた複数のスレーブノードSlの各々のスレーブノードSlに対応して特定した距離の合計を、Reduceタスク425を割当可能な複数のスレーブノードSlのスレーブノードSlごとに算出する。そして、決定部502は、算出した距離の合計が相対的に短いスレーブノードSlを、Reduceタスク425を割り当てるスレーブノードSlとして決定してもよい。なお、決定した際のスレーブノードSlを特定する識別情報が、RAM303、磁気ディスク305などの記憶領域に記憶される。
図6は、本実施の形態にかかる分散処理システムによるMapReduce処理の一例を示す説明図である。図6では、MapReduceプログラム431が、処理対象となるファイルの中に出現する単語の個数を数えるwordcountである例について説明する。wordcountにおけるMap処理は、ファイルが分割されたスプリットから、出現した単語の個数を単語ごとに数える処理である。wordcountにおけるReduce処理は、単語ごとの出現した単語の個数を合計する処理である。
マスタノードMsは、スレーブノードSl#1〜#nのうちの、スレーブノードSl#m_1〜#m_nに、Map処理やReduce処理を割り当てる。具体的に、ジョブトラッカー411は、スレーブノードSl#1〜#nからのハートビートによるタスク割当要求を受信して、スプリットが存在するスレーブノードSlにMapタスク424を割り当てる。また、ジョブトラッカー411は、スレーブノードSl#1〜#nからのハートビートによるタスク割当要求を受信して、本実施の形態にかかる割当処理の結果に従って、Reduceタスク425を割り当てる。Reduceタスクの割当処理については、図11と図12とで説明する。図6の例では、ジョブトラッカー411は、スレーブノードSl#r1、スレーブノードSl#r2にReduceタスク425を割り当てる。
スレーブノードSlからのハートビートには、タスクトラッカーIDと、割当可能なMapタスク424の最大数と、割当可能なReduceタスク425の最大数と、タスク用の空きスロット数と、いう4つの情報が格納される。タスクトラッカーIDとは、図4で説明した、ハートビートの送信元となるスレーブノードSlのタスクトラッカー421を識別する情報である。マスタノードMsは、タスクトラッカーIDからスレーブノードSlのホスト名が判断できるため、タスクトラッカーIDからスレーブノードSlが属するラック、データセンタを特定することができる。
割当可能なMapタスク424の最大数は、ハートビートの送信元となるスレーブノードSlが現在割当可能なMapタスク424の最大数である。割当可能なReduceタスク425の最大数は、ハートビートの送信元となるスレーブノードSlが現在割当可能なReduceタスク425の最大数である。タスク用の空きスロット数は、ハートビートの送信元となるスレーブノードSlにタスクが割当可能な数である。
Map処理が割り当てられたスレーブノードSl#m_1〜#m_nは、Map処理として、スプリットから、出現した単語の個数を単語ごとに数える。たとえば、スレーブノードSl#m_1は、Map処理として、あるスプリットに、“Apple”という単語の出現回数が1回であり、“Is”という単語の出現回数が3回であると数える。そして、スレーブノードSl#m_1は、Map処理の処理結果として、(Apple,1)、(Is,3)を出力する。
次に、Map処理が割り当てられたスレーブノードSl#m_1〜#m_nは、シャッフル&ソート処理として、Map処理の処理結果をソートする。そして、スレーブノードSl#m_1〜#m_nは、Reduceタスクが割り当てられたスレーブノードSl#r1、#r2に、ソートしたMap処理の処理結果を送信する。たとえば、スレーブノードSl#m_1は、(Apple,1)をスレーブノードSl#r1に送信するとともに、(Is,3)をスレーブノードSl#r2に送信する。
ソートしたMap処理の処理結果を受信した、スレーブノードSl#r1、#r2は、ソートしたMap処理の処理結果をKeyごとにマージする。たとえば、スレーブノードSl#r1は、Key:Appleについて、スレーブノードSl#m_1、#m_2からそれぞれ受信した(Apple,1)と(Apple,2)とをマージして、(Apple,[1,2])を出力する。さらに、スレーブノードSl#r1は、Key:Helloについて、受信した(Hello,4)、(Hello,3)、…、(Hello,1000)をマージして、(Hello,[4,3,…,1000])を出力する。
ソートしたMap処理の処理結果をKeyごとにマージしたスレーブノードSl#r1、#r2は、マージした結果をReduceタスク425へ入力する。たとえば、スレーブノードSl#r1は、(Apple,[1,2])と(Hello,[4,3,…,1000])とをReduceタスク425へ入力する。
図7は、距離関数Dtの説明図である。距離関数Dtは、下記(1)式により求められる。
Dt(x,y)=dt(x,y)+dα(x,y) …(1)
xは、Map処理が割り当てられたスレーブノードSlのIDである。yは、Reduce処理を割り当てることが可能なスレーブノードSlのIDである。dt(x,y)は、スレーブノードSl#xとスレーブノードSl#yとの相対的な位置関係を示す値を求める距離関数である。より詳細には、距離関数dt(x,y)は、スレーブノードSl#xからスレーブノードSl#yまでデータを送信する際に、スイッチまたはノードにデータが到達する回数である。具体的に、距離関数dtは、距離関数テーブルdt_tを参照して値を出力する。距離関数テーブルdt_tの記憶内容の一例については、図8で後述する。
dα(x,y)は、スレーブノードSl#xとスレーブノードSl#yとの物理的な距離を表す度合である距離係数である。距離係数は、距離係数テーブルdα_tを参照して決定される。距離係数の設定例について図9を用いて説明する。また、距離係数テーブルdα_tの記憶内容の一例について、図10で後述する。
たとえば、マスタノードMsは、スレーブノードD1/R1/Sl#1と、スレーブノードD1/R1/Sl#n_d1r1の距離を(1)式を用いて下記のように算出する。
Dt(D1/R1/Sl#1,D1/R1/Sl#n_d1r1)=dt(D1/R1/Sl#1,D1/R1/Sl#n_d1r1)+dα(D1/R1/Sl#1,D1/R1/Sl#n_d1r1)=2+0=2
図8は、距離関数テーブルの記憶内容の一例を示す説明図である。距離関数テーブルdt_tは、スレーブノードSlの組み合わせごとに、スレーブノードSl間の伝送路に含まれるスイッチと通信相手となる装置との数を記憶するテーブルである。図8に示す距離関数テーブルdt_tは、レコード801−1〜レコード801−8を含む。たとえば、レコード801−1は、スレーブノードD1/R1/Sl#1と、分散処理システム200に含まれるスレーブノードSlそれぞれに対するスレーブノードSl間の伝送路に含まれるスイッチと通信相手となる装置との数を記憶する。
具体的に、スレーブノードSlが同一である場合の伝送路に含まれるスイッチと通信相手となるノードとの数は、0となる。また、同一ラック内の別のスレーブノードSlの伝送路に含まれるスイッチと通信相手となるノードとの数は、2となる。さらに、同一データセンタ内の別ラック内の別のスレーブノードSlの伝送路に含まれるスイッチと通信相手となるノードとの数は、4となる。さらに、別のデータセンタ内のスレーブノードSlの伝送路に含まれるスイッチと通信相手となるノードとの数は、6となる。
たとえば、図8に示す距離関数テーブルdt_tを参照すると、dt(D1/R1/Sl#1,D1/R1/Sl#n_d1r1)が2となる。2となる理由は、データがスレーブノードSl#1からスレーブノードD1/R1/Sl#n_d1r1に送信される際、データが到達するスイッチやノードがスイッチSw_d1r1とスレーブノードD1/R1/Sl#n_d1r1とであるためである。
距離関数テーブルdt_tは、マスタノードMsの記憶領域に記憶される。距離関数テーブルdt_tは、Hadoopクラスタ400に含まれるマスタノードMsが変更した場合や、スレーブノードSlが追加、削除された際に更新される。距離関数テーブルdt_tは、分散処理システム200の管理者によって更新されてもよい。または、スレーブノードSlが追加された場合等に、マスタノードMsが、追加したスレーブノードSl以外のスレーブノードSlと、追加したスレーブノードSlとの相対的な位置関係を取得して、距離関数テーブルdt_tを更新してもよい。
図9は、距離係数の設定例を示す説明図である。図9では、分散処理システム200に含まれるデータセンタとして、データセンタD1〜D4があるとして説明を行う。さらに、データセンタD1〜D4は各地に点在する。具体的に、データセンタD1は東京にあり、データセンタD2は横浜にあり、データセンタD3は名古屋にあり、データセンタD4は大阪にあるものとする。
このとき、データセンタD1とデータセンタD2との間と、データセンタD1とデータセンタD3との間と、を比較すると、データセンタD1とデータセンタD3の方が伝送路が長くなる。伝送路が長くなるにつれて、データ転送にかかる時間が増大することになる。本実施の形態では、データセンタ同士の距離を示す情報を距離係数テーブルdα_tとして予め設定しておき、dα(x,y)は、距離係数テーブルdα_tを参照して求められる。
データセンタ同士の距離を示す情報は、データセンタ間の実際の距離の値が格納されてもよいし、計算し易いように、データセンタ間の距離を表す相対的な係数でもよい。たとえば、データセンタD1とデータセンタD2との間の距離を表す相対的な係数αが1である際、データセンタD1とデータセンタD3との間との距離を表す相対的な係数αが5であると設定される。データセンタ同士の距離を示す情報は、分散処理システム200の管理者により設定されてもよいし、または、マスタノードMsが、データセンタ間においてデータを送信して、送信にかかる遅延を計測して、データセンタ間の距離を算出してもよい。
図10は、距離係数テーブルの記憶内容の一例を示す説明図である。距離係数テーブルdα_tは、データセンタの組み合わせごとに、データセンタ同士の距離を示す情報を記憶する。図10に示す距離係数テーブルdα_tは、レコード1000−1〜レコード1000−4を含む。たとえば、レコード1000−1は、データセンタD1と、分散処理システム200に含まれるデータセンタそれぞれとの距離を示す情報を記憶する。たとえば、データセンタD1とデータセンタD2との距離dα(D1,D2)は、1となる。
距離係数テーブルdα_tは、マスタノードMsの記憶領域に記憶される。距離係数テーブルdα_tは、Hadoopクラスタ400に含まれるデータセンタが変更した場合や、データセンタが増減した際に更新される。距離係数テーブルdα_tは、分散処理システム200の管理者によって更新されてもよい。または、マスタノードMsが、データセンタ間においてデータを送信して、送信にかかる遅延を計測して、データセンタ間の距離を算出して、距離係数テーブルdα_tを更新してもよい。
次に、図11と図12を用いて、Reduceタスク425の割当先ノードの決定例について説明する。図11と図12において、点線で示すブロックは、Reduceタスク425が割当可能な空きスロットを示す。
図11は、Reduceタスクの割当先ノード決定の第1の例を示す説明図である。図11に示す分散処理システム200において、マスタノードMsが、Mapタスク424をスレーブノードD1/R2/Sl#1に割り当てた状態である。また、図11に示す分散処理システム200において、スレーブノードD1/R2/Sl#1、D1/R2/Sl#2、D2/R2/Sl#1は、Reduceタスク425の空きスロットを1つ有する状態である。さらに、図11に示す分散処理システム200において、マスタノードMsが、スレーブノードD1/R2/Sl#1、D1/R2/Sl#2、D2/R2/Sl#1から、ハートビートによるReduceタスク割当要求を受信した状態である。マスタノードMsは、受信したReduceタスク割当要求をリクエストバッファ1101に格納する。
リクエストバッファ1101は、Reduceタスク割当要求を記憶する記憶領域である。リクエストバッファ1101は、マスタノードMs内のRAM303、磁気ディスク305といった記憶装置に格納される。リクエストバッファ1101の記憶内容は、ハートビートに含まれる全ての情報でもよいし、タスクトラッカーIDと、割当可能なReduceタスク425の最大数とでもよい。
マスタノードMsは、リクエストバッファ1101に格納されたReduceタスク割当要求を発行したスレーブノードSlのうち、Mapタスク424が割り当てられたスレーブノードSlがあるか否かを判断する。
図11の例では、スレーブノードD1/R2/Sl#1にMapタスク424が割り当てられたため、続けて、マスタノードMsは、スレーブノードD1/R2/Sl#1に最大数のReduceタスク425が割り当てられているかを判断する。図11の例では、スレーブノードD1/R2/Sl#1にReduceタスク425の空きスロットが1つあり、最大数のReduceタスク425が割り当てられていないため、マスタノードMsは、Reduceタスク425をスレーブノードD1/R2/Sl#1に割り当てる。
図12は、Reduceタスクの割当先ノード決定の第2の例を示す説明図である。図12に示す分散処理システム200において、マスタノードMsが、Mapタスク424をスレーブノードD1/R2/Sl#1に割り当てた状態である。また、図12に示す分散処理システム200において、スレーブノードD1/R2/Sl#2、D2/R2/Sl#1は、Reduceタスク425の空きスロットを1つ有する状態である。さらに、図12に示す分散処理システム200において、マスタノードMsが、スレーブノードD1/R2/Sl#2、D2/R2/Sl#1から、ハートビートによるReduceタスク割当要求を受信した状態である。マスタノードMsは、受信したReduceタスク割当要求をリクエストバッファ1101に格納する。
マスタノードMsは、リクエストバッファ1101に格納されたReduceタスク割当要求を発行したスレーブノードSlのうち、Mapタスク424が割り当てられたスレーブノードSlがあるか否かを判断する。
図12の例では、Reduceタスク割当要求を発行したスレーブノードSlのうち、Mapタスク424が割り当てられたスレーブノードSlがない。そこで、マスタノードMsは、距離関数Dt(x,y)を算出して、スレーブノードD1/R2/Sl#1とReduceタスク割当要求を発行したスレーブノードSlとの距離を特定する。
マスタノードMsは、以下のように距離関数Dt(x,y)を算出することにより、スレーブノードD1/R2/Sl#1とスレーブノードD1/R2/Sl#2との距離を特定する。
Dt(D1/R2/Sl#1,D1/R2/Sl#2)=dt(D1/R2/Sl#1,D1/R2/Sl#2)+dα(D1/R2/Sl#1,D1/R2/Sl#2)=2+0=2
さらに、マスタノードMsは、以下のように距離関数Dt(x,y)を算出することにより、スレーブノードD1/R2/Sl#1とスレーブノードD2/R2/Sl#1との距離を特定する。
Dt(D1/R2/Sl#1,D2/R2/Sl#1)=dt(D1/R2/Sl#1,D2/R2/Sl#1)+dα(D1/R2/Sl#1,D2/R2/Sl#1)=6+1=7
したがって、マスタノードMsは、スレーブノードD1/R2/Sl#1との距離が短いスレーブノードD1/R2/Sl#2にReduceタスク425を割り当てる。次に、図13と図14を用いて、分散処理システム200が実行するフローチャートについて説明する。
図13は、MapReduce処理手順の一例を示すフローチャートである。MapReduce処理は、ジョブの実行要求を受け付けた場合に実行する処理である。図13では、MapReduce処理を実行するスレーブノードSlがスレーブノードSl#1、#2の2台である場合を想定して説明する。また、マスタノードMsでは、ジョブトラッカー411とジョブスケジューラ412が連携して、MapReduce処理を実行する。また、スレーブノードSl#1、2では、タスクトラッカー421と、Mapタスク424と、Reduceタスク425が連携して、MapReduce処理を実行する。また、図13のフローチャートでは、スレーブノードSl#1にMapタスク424が割り当てられ、スレーブノードSl#2にReduceタスク425が割り当てられるものとする。
マスタノードMsは、準備処理を実行する(ステップS1301)。準備処理は、ジョブを実行する前に実行しておく処理である。また、準備処理は、マスタノードMsのジョブトラッカー411が実行する。準備処理として、ジョブクライアント401は、“プログラム名+入力ファイル名”となるジョブ実行要求を受け付けた場合に、ジョブIDを生成するとともに、入力ファイルからスプリットを算出して、MapReduceプログラム431を開始する。
ステップS1301の処理終了後、マスタノードMsは、初期化処理を実行する(ステップS1302)。初期化処理は、ジョブの初期化を行う処理である。また、初期化処理は、マスタノードMsのジョブトラッカー411と、ジョブスケジューラ412とが連携して実行する。初期化処理として、ジョブトラッカー411は、ジョブクライアント401から、ジョブの初期化要求を受け付けた場合、初期化したジョブを内部キューに格納する。ジョブスケジューラ412は、内部キューにジョブがあるか否かを一定周期で判断する。ジョブスケジューラ412は、内部キューからジョブを取り出して、スプリットごとにMapタスク424を生成する。
ステップS1302の処理終了後、マスタノードMsは、タスク割当処理を実行する(ステップS1303)。タスク割当処理は、スレーブノードSlにMapタスク424を割り当てる処理である。また、タスク割当処理は、ジョブスケジューラ412によるMapタスク424の生成後、ジョブトラッカー411が実行する。タスク割当処理として、ジョブトラッカー411は、タスクトラッカー421から受け付けたハートビート通信を参照して、Mapタスク424、Reduceタスク425それぞれを割り当てるスレーブノードSlを決定する。
ハートビート通信は、各スレーブノードSlが新たに実行可能なタスク数を含む。たとえば、あるスレーブノードSlが、実行可能なタスク数の最大が5であり、Mapタスク424およびReduceタスク425が計3つ実行中であるとする。この場合、あるスレーブノードSlは、ハートビート通信に、新たに実行可能なタスク数が2であるという情報を含めてマスタノードMsに通知する。ジョブトラッカー411は、スレーブノードSl#1〜#nのうち、スプリットがあるスレーブノードSlをMapタスク424の割当先に決定する。Reduceタスク425を割り当てるスレーブノードSlの決定処理手順については、図14で後述する。
Mapタスク424が割り当てられたスレーブノードSl#1は、Map処理を実行する(ステップS1304)。Map処理は、処理対象となるスプリットから、(Key,Value)を生成する処理である。また、Map処理は、タスクトラッカー421#1と、スレーブノードSl#1に割り当てられたMapタスク424#1とが連携して実行する。Map処理として、タスクトラッカー421#1は、MapReduceプログラム431をHDFSからスレーブノードSl#1のローカル記憶領域にコピーする。そして、タスクトラッカー421#1は、スプリットをHDFSから、スレーブノードSl#1のローカル記憶領域にコピーする。Mapタスク424#1は、スプリットを処理対象として、MapReduceプログラム431内のMap処理を実行する。
ステップS1304の処理終了後、スレーブノードSl#1とスレーブノードSl#2は、シャッフル&ソート処理を実行する(ステップS1305)。シャッフル&ソート処理は、Map処理の処理結果を処理対象として、1つ以上の処理結果に集約する処理である。
具体的に、スレーブノードSl#1は、Map処理の処理結果を並び替えておき、Map処理が完了したことをマスタノードMsに通知する。通知を受け付けたマスタノードMsは、Map処理が完了したスレーブノードSl#1に対して、Map処理の処理結果を送信するように指示をする。指示を受けたスレーブノードSl#1は、並び替えておいたMap処理の処理結果を、Reduceタスク425が割り当てられたスレーブノードSl#2に送信する。並び替えておいたMap処理の処理結果を受け付けたスレーブノードSl#2は、Map処理の処理結果をKeyごとにマージして、Reduceタスク425へ入力する。
ステップS1305の処理終了後、スレーブノードSl#2は、Reduce処理を実行する(ステップS1306)。Reduce処理は、集約された処理結果を処理対象として、ジョブの処理結果を出力する処理である。また、Reduce処理は、Reduceタスク425が実行する。Reduce処理として、スレーブノードSl#2のReduceタスク425#2は、Keyフィールドの値が同一となるレコード群を処理対象として、MapReduceプログラム431内のReduce処理を実行する。
ステップS1306の処理終了後、分散処理システム200は、MapReduce処理を終了する。MapReduce処理を実行することにより、分散処理システム200は、ジョブクライアント401にジョブの実行を要求した装置に出力結果を提示することができる。
図14は、Reduceタスク割当ノード決定処理手順の一例を示すフローチャートである。Reduceタスク割当ノード決定処理は、Reduceタスク425を割り当てるスレーブノードSlを決定する処理である。
マスタノードMsは、スレーブノードSlの各タスクトラッカー421から、Reduceタスク割当要求として、ハートビートを受信する(ステップS1401)。次に、マスタノードMsは、Reduceタスク割当要求をリクエストバッファ1101に格納する(ステップS1402)。続けて、マスタノードMsは、全てのスレーブノードSlからReduceタスク割当要求を受信したか否かを判断する(ステップS1403)。まだ受信していないスレーブノードSlがある場合(ステップS1403:No)、マスタノードMsは、ステップS1401の処理に移行する。
全てのスレーブノードSlからReduceタスク割当要求を受信した場合(ステップS1403:Yes)、マスタノードMsは、Reduceタスク割当要求の要求元スレーブノードSlのうち、Mapタスク424が割り当てられたスレーブノードSlがあるか否かを判断する(ステップS1404)。Mapタスク424が割り当てられたスレーブノードSlがある場合(ステップS1404:Yes)、マスタノードMsは、Mapタスク424が割り当てられたスレーブノードSlに、最大数のReduceタスク425が割り当てられているか否かを判断する(ステップS1405)。最大数のReduceタスク425が割り当てられていない場合(ステップS1405:No)、マスタノードMsは、Mapタスク424が割り当てられたスレーブノードSlを、Reduceタスク425を割り当てるスレーブノードSlに決定する(ステップS1406)。
ステップS1406の処理において、Mapタスク424が割り当てられたスレーブノードSlが複数あるとする。このとき、マスタノードMsは、Mapタスク424が割り当てられた複数のスレーブノードSlのうちのいずれかをReduceタスク425を割り当てるスレーブノードSlに決定してもよい。
また、マスタノードMsは、Reduceタスク割当要求の要求元スレーブノードSlとMapタスク424が割り当てられた複数のスレーブノードSlの組ごとに、要求元スレーブノードSlとMapタスク424が割り当てられたスレーブノードSlとの間の距離Dtを特定してもよい。そして、マスタノードMsは、要求元スレーブノードSlごとに、該当の要求元スレーブノードSlとMapタスク424が割り当てられたスレーブノードSlとの間の距離Dtを合計する。続けて、マスタノードMsは、合計した距離が最小の要求元スレーブノードSlをReduceタスク425を割り当てるスレーブノードSlに決定する。
たとえば、Mapタスクが割り当てられたスレーブノードSlが、スレーブノードD1/R1/Sl#1と、スレーブノードD1/R1/Sl#2と、スレーブノードD2/R1/Sl#1とであるとする。さらに、Reduceタスク割当要求の要求元スレーブノードSlが、スレーブノードD1/R1/Sl#1と、スレーブノードD2/R1/Sl#1とであるとする。このとき、マスタノードMsは、以下の6つのDt()を算出する。
Dt(D1/R1/Sl#1、D1/R1/Sl#1)=0+0=0
Dt(D1/R1/Sl#2、D1/R1/Sl#1)=2+0=2
Dt(D2/R1/Sl#1、D1/R1/Sl#1)=6+1=7
Dt(D1/R1/Sl#1、D2/R1/Sl#1)=6+1=7
Dt(D1/R1/Sl#2、D2/R1/Sl#1)=6+1=7
Dt(D2/R1/Sl#1、D2/R1/Sl#1)=0+0=0
そして、マスタノードMsは、要求元スレーブノードSlとして、スレーブノードD1/R1/Sl#1についての距離Dtの合計を、0+2+7=9と算出する。同様に、マスタノードMsは、要求元スレーブノードSlとして、スレーブノードD2/R1/Sl#1についての距離Dtの合計を、7+7+0=14と算出する。続けて、マスタノードMsは、距離Dtの合計が小さいスレーブノードD1/R1/Sl#1を、Reduceタスク425を割り当てるスレーブノードSlに決定する。
Mapタスク424が割り当てられたスレーブノードSlがない場合(ステップS1404:No)、または、最大数のReduceタスク425が割り当てられている場合(ステップS1405:Yes)、マスタノードMsは、Reduceタスク割当要求の要求元スレーブノードSlのうち、先頭のスレーブノードSlを選択する(ステップS1407)。次に、マスタノードMsは、Mapタスク424が割り当てられたスレーブノードSlと、選択したスレーブノードSlとの間の距離Dtを特定する(ステップS1408)。
続けて、マスタノードMsは、要求元スレーブノードSlの全てを選択したか否かを判断する(ステップS1409)。選択していない要求元スレーブノードSlがある場合(ステップS1409:No)、マスタノードMsは、要求元スレーブノードSlのうちの次のスレーブノードSlを選択する(ステップS1410)。そして、マスタノードMsは、ステップS1408の処理に移行する。
要求元スレーブノードSlの全てを選択した場合(ステップS1409:Yes)、マスタノードMsは、Dtが最小のスレーブノードSlに、Reduceタスク425を割り当てる(ステップS1411)。ステップS1411の処理において、Mapタスク424が割り当てられたスレーブノードSlが複数ある場合、マスタノードMsは、ステップS1406の処理においてDtを用いた処理と同様の処理を行ってもよい。
ステップS1406またはステップS1411の処理終了後、マスタノードMsは、Reduceタスク425を割り当てるスレーブノードSlに、Reduceタスク425を割り当てる(ステップS1412)。ステップS1412の処理終了後、マスタノードMsは、Reduceタスク割当ノード決定処理を終了する。Reduceタスク割当ノード決定処理を実行することにより、マスタノードMsは、Mapタスク424が割り当てられたスレーブノードSlに物理的に近いスレーブノードSlにReduceタスク425を割り当てることができる。
ステップS1403の処理について、全てのスレーブノードSlからReduceタスク割当要求を受信したか否かを判断したが、マスタノードMsは、以下に示す第1〜第3の判断手順のいずれかに従ってもよい。第1の判断手順として、マスタノードMsは、最初にReduceタスク割当要求を受信してから所定時間経過したか否かを判断してもよい。
第2の判断基準として、マスタノードMsは、Mapタスク424が割り当てられたスレーブノードSlとReduceタスク割当要求を発行したスレーブノードSlとのDtを特定し、Dtが所定の閾値以下かを判断してもよい。第2の判断手順が採用された場合、マスタノードMsは、Dtが所定の閾値以下となったスレーブノードSlにReduceタスク425を割り当てる。
第3の判断基準として、マスタノードMsは、リクエストバッファ1101の記憶量が所定量となったか否かを判断してもよい。たとえば、リクエストバッファ1101に記憶可能なReduceタスク割当要求の個数が10であり、リクエストバッファ1101が記憶するReduceタスク割当要求の個数が8となった場合、マスタノードMsは、ステップS1403:Yesと判断する。
以上説明したように、マスタノードMsによれば、スレーブノード群Slnの各々のスレーブノードSl間の距離に基づいて、Reduceタスク425を割当可能なノードからReduceタスク425を割り当てるスレーブノードSlを決定する。マスタノードMsは、スレーブノードSl間の伝送路に含まれるスイッチの数に基づくよりもMapタスク424の処理結果の転送にかかる時間を短縮することができる。短縮できる理由として、スレーブノードSl間の伝送路に含まれるスイッチの数では、スレーブノードSl間の距離を表すには不十分であるためである。Mapタスク424の処理結果の転送にかかる時間が短縮された結果、分散処理システム200は、MapReduce処理にかかる時間を短縮することができる。
本実施の形態では、分散処理システム200が複数のデータセンタにより構築された場合を想定したが、1つのデータセンタ内により構築されていても、本実施の形態にかかる割当方法を適用することができる。分散処理システム200が1つのデータセンタ内により構築されていても、スイッチからスレーブノードSlまでの距離がスレーブノードSlごとで異なる場合もある。この場合、スレーブノードSl間の伝送路に含まれるスイッチの数に基づきReduceタスク425を割り当てるスレーブノードSlを決定するより本実施の形態における割当方法の方がMapタスク424の処理結果の転送にかかる時間を短縮することができる。
また、マスタノードMsによれば、各データセンタ間の距離を表す情報とスレーブノード群Slnの各々が属するデータセンタを特定する情報を用いて、Reduceタスク425を割り当てるスレーブノードSlを決定してもよい。各データセンタ間の距離を表す情報とスレーブノード群Slnの各々が属するデータセンタを特定する情報との情報量は、スレーブノード群Slnの各々のスレーブノードSl間の距離を特定する情報の情報量より少なくなる。また、スレーブノードSl間の距離は、データセンタ間の距離に大きく依存する。したがって、マスタノードMsは、スレーブノードSl間の距離を特定する情報の情報量より少ない情報量で、スレーブノードSl間の距離を特定するとともに、Mapタスク424の処理結果の転送にかかる時間を短縮することができる。
また、マスタノードMsによれば、スレーブノードSlが属するデータセンタ間の距離と、スレーブノードSl間の伝送路に含まれるスイッチの数とに基づいて、Reduceタスク425を割り当てるノードを決定してもよい。これにより、マスタノードMsは、スレーブノードSlが属するデータセンタ間の距離のみを用いる場合と比較してスレーブノードSl間の距離をより正確に特定することができ、Mapタスク424の処理結果の転送にかかる時間を短縮することができる。
また、マスタノードMsによれば、Reduceタスク425を割当可能な複数のスレーブノードSlがあれば、複数のスレーブノードSlのうち、特定した距離が相対的に短いスレーブノードSlにReduceタスク425を割り当てることを決定してもよい。これにより、マスタノードMsは、伝送路が短いスレーブノードSlにReduceタスク425を割り当てることになるため、Mapタスク424の処理結果の転送にかかる時間を短縮することができる。
また、マスタノードMsによれば、Mapタスク424が割り当てられた複数のスレーブノードSlがあれば、複数のスレーブノードSlの各々に対応して特定した距離の合計に基づきReduceタスク425を割り当てるスレーブノードSlを決定してもよい。これにより、マスタノードMsは、Mapタスク424が割り当てられた複数のスレーブノードSlが送信するMap処理の処理結果の転送にかかる時間を短縮することができる。
なお、本実施の形態で説明した割当方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本割当プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本割当プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
通信可能なノード群の各々のノード間の距離を特定する距離情報を参照して、前記ノード群のうちの第1の処理が割り当てられたノードと、前記ノード群のうちの前記第1の処理の処理結果を処理対象とする第2の処理を割当可能なノードと、の間の距離を特定し、
特定した前記距離に基づいて、前記第2の処理を割当可能なノードから前記第2の処理を割り当てるノードを決定する、
処理を実行させることを特徴とする割当プログラム。
(付記2)前記距離情報は、前記ノード群が属する複数のデータセンタの各々のデータセンタ間の距離を表す情報と、前記複数のデータセンタのうちの前記ノード群の各々のノードが属するデータセンタを特定する情報とを含み、
前記特定する処理は、
前記距離情報を参照して、前記複数のデータセンタのうちの前記第1の処理が割り当てられたノードが属するデータセンタと、前記複数のデータセンタのうちの前記第2の処理を割当可能なノードが属するデータセンタと、の間の距離を特定することにより、前記第1の処理が割り当てられたノードと前記第2の処理を割当可能なノードとの間の距離を特定することを特徴とする付記1に記載の割当プログラム。
(付記3)前記距離情報は、さらに、前記各々のノード間の通信路に含まれるスイッチ装置の数を含み、
前記特定する処理は、
前記距離情報を参照して、前記第1の処理が割り当てられたノードが属するデータセンタと前記第2の処理を割当可能なノードが属するデータセンタとの間の距離と、前記第1の処理が割り当てられたノードと前記第2の処理を割当可能なノードとの間の通信路に含まれるスイッチ装置の数と、に基づいて、前記第1の処理が割り当てられたノードと前記第2の処理を割当可能なノードとの間の距離を特定することを特徴とする付記2に記載の割当プログラム。
(付記4)前記特定する処理は、
前記第2の処理を割当可能な複数のノードがある場合、前記距離情報を参照して、前記第1の処理が割り当てられたノードと前記第2の処理を割当可能な複数のノードの各々のノードとの間の距離を特定し、
前記決定する処理は、
前記第2の処理を割当可能な複数のノードのうちの、特定した前記距離が相対的に短いノードに前記第2の処理を割り当てることを決定することを特徴とする付記1〜3のいずれか一つに記載の割当プログラム。
(付記5)前記特定する処理は、
前記第1の処理が割り当てられた複数のノードがある場合、前記距離情報を参照して、前記第1の処理が割り当てられたノードの各々のノードと前記第2の処理を割当可能なノードと間の距離を特定し、
前記決定する処理は、
前記第1の処理が割り当てられた複数のノードの各々のノードに対応して特定した前記距離の合計に基づいて、前記第2の処理を割当可能なノードから前記第2の処理を割り当てるノードを決定することを特徴とする付記1〜4のいずれか一つに記載の割当プログラム。
(付記6)通信可能なノード群の各々のノード間の距離を特定する距離情報を参照して、前記ノード群のうちの第1の処理が割り当てられたノードと、前記ノード群のうちの前記第1の処理の処理結果を処理対象とする第2の処理を割当可能なノードと、の間の距離を特定し、
特定した前記距離に基づいて、前記第2の処理を割当可能なノードから前記第2の処理を割り当てるノードを決定する、
処理をコンピュータに実行させる割当プログラムを記録したことを特徴とする記録媒体。
(付記7)通信可能なノード群の各々のノード間の距離を特定する距離情報を参照して、前記ノード群のうちの第1の処理が割り当てられたノードと、前記ノード群のうちの前記第1の処理の処理結果を処理対象とする第2の処理を割当可能なノードと、の間の距離を特定する特定部と、
前記特定部が特定した前記距離に基づいて、前記第2の処理を割当可能なノードから前記第2の処理を割り当てるノードを決定する決定部と、
を有することを特徴とする割当装置。
(付記8)通信可能なノード群の各々のノード間の距離を特定する距離情報を参照して、前記ノード群のうちの第1の処理が割り当てられたノードと、前記ノード群のうちの前記第1の処理の処理結果を処理対象とする第2の処理を割当可能なノードと、の間の距離を特定する特定部と、
前記特定部が特定した前記距離に基づいて、前記第2の処理を割当可能なノードから前記第2の処理を割り当てるノードを決定する決定部と、
を有するコンピュータを含むことを特徴とする割当装置。
(付記9)コンピュータが、
通信可能なノード群の各々のノード間の距離を特定する距離情報を参照して、前記ノード群のうちの第1の処理が割り当てられたノードと、前記ノード群のうちの前記第1の処理の処理結果を処理対象とする第2の処理を割当可能なノードと、の間の距離を特定し、
特定した前記距離に基づいて、前記第2の処理を割当可能なノードから前記第2の処理を割り当てるノードを決定する、
処理を実行することを特徴とする割当方法。
Ms マスタノード
Sl スレーブノード
100 システム
101 割当装置
102 ノード
110 距離情報
111、424 Mapタスク
200 分散処理システム
425 Reduceタスク
501 特定部
502 決定部

Claims (7)

  1. コンピュータに、
    通信可能なノード群の各々のノード間の距離を特定する距離情報を参照して、前記ノード群のうちの第1の処理が割り当てられたノードと、前記ノード群のうちの前記第1の処理の処理結果を処理対象とする第2の処理を割当可能なノードと、の間の距離を特定し、
    特定した前記距離に基づいて、前記第2の処理を割当可能なノードから前記第2の処理を割り当てるノードを決定する、
    処理を実行させることを特徴とする割当プログラム。
  2. 前記距離情報は、前記ノード群が属する複数のデータセンタの各々のデータセンタ間の距離を表す情報と、前記複数のデータセンタのうちの前記ノード群の各々のノードが属するデータセンタを特定する情報とを含み、
    前記特定する処理は、
    前記距離情報を参照して、前記複数のデータセンタのうちの前記第1の処理が割り当てられたノードが属するデータセンタと、前記複数のデータセンタのうちの前記第2の処理を割当可能なノードが属するデータセンタと、の間の距離を特定することにより、前記第1の処理が割り当てられたノードと前記第2の処理を割当可能なノードとの間の距離を特定することを特徴とする請求項1に記載の割当プログラム。
  3. 前記距離情報は、さらに、前記各々のノード間の通信路に含まれるスイッチ装置の数を含み、
    前記特定する処理は、
    前記距離情報を参照して、前記第1の処理が割り当てられたノードが属するデータセンタと前記第2の処理を割当可能なノードが属するデータセンタとの間の距離と、前記第1の処理が割り当てられたノードと前記第2の処理を割当可能なノードとの間の通信路に含まれるスイッチ装置の数と、に基づいて、前記第1の処理が割り当てられたノードと前記第2の処理を割当可能なノードとの間の距離を特定することを特徴とする請求項2に記載の割当プログラム。
  4. 前記特定する処理は、
    前記第2の処理を割当可能な複数のノードがある場合、前記距離情報を参照して、前記第1の処理が割り当てられたノードと前記第2の処理を割当可能な複数のノードの各々のノードとの間の距離を特定し、
    前記決定する処理は、
    前記第2の処理を割当可能な複数のノードのうちの、特定した前記距離が相対的に短いノードに前記第2の処理を割り当てることを決定することを特徴とする請求項1〜3のいずれか一つに記載の割当プログラム。
  5. 前記特定する処理は、
    前記第1の処理が割り当てられた複数のノードがある場合、前記距離情報を参照して、前記第1の処理が割り当てられたノードの各々のノードと前記第2の処理を割当可能なノードと間の距離を特定し、
    前記決定する処理は、
    前記第1の処理が割り当てられた複数のノードの各々のノードに対応して特定した前記距離の合計に基づいて、前記第2の処理を割当可能なノードから前記第2の処理を割り当てるノードを決定することを特徴とする請求項1〜4のいずれか一つに記載の割当プログラム。
  6. 通信可能なノード群の各々のノード間の距離を特定する距離情報を参照して、前記ノード群のうちの第1の処理が割り当てられたノードと、前記ノード群のうちの前記第1の処理の処理結果を処理対象とする第2の処理を割当可能なノードと、の間の距離を特定する特定部と、
    前記特定部が特定した前記距離に基づいて、前記第2の処理を割当可能なノードから前記第2の処理を割り当てるノードを決定する決定部と、
    を有することを特徴とする割当装置。
  7. コンピュータが、
    通信可能なノード群の各々のノード間の距離を特定する距離情報を参照して、前記ノード群のうちの第1の処理が割り当てられたノードと、前記ノード群のうちの前記第1の処理の処理結果を処理対象とする第2の処理を割当可能なノードと、の間の距離を特定し、
    特定した前記距離に基づいて、前記第2の処理を割当可能なノードから前記第2の処理を割り当てるノードを決定する、
    処理を実行することを特徴とする割当方法。
JP2013126121A 2013-06-14 2013-06-14 割当プログラム、割当装置および割当方法 Pending JP2015001828A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013126121A JP2015001828A (ja) 2013-06-14 2013-06-14 割当プログラム、割当装置および割当方法
US14/256,394 US20140372611A1 (en) 2013-06-14 2014-04-18 Assigning method, apparatus, and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013126121A JP2015001828A (ja) 2013-06-14 2013-06-14 割当プログラム、割当装置および割当方法

Publications (1)

Publication Number Publication Date
JP2015001828A true JP2015001828A (ja) 2015-01-05

Family

ID=52020240

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013126121A Pending JP2015001828A (ja) 2013-06-14 2013-06-14 割当プログラム、割当装置および割当方法

Country Status (2)

Country Link
US (1) US20140372611A1 (ja)
JP (1) JP2015001828A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110543354A (zh) * 2019-09-05 2019-12-06 腾讯科技(深圳)有限公司 任务调度方法、装置、设备及存储介质

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256460B2 (en) 2013-03-15 2016-02-09 International Business Machines Corporation Selective checkpointing of links in a data flow based on a set of predefined criteria
US9323619B2 (en) 2013-03-15 2016-04-26 International Business Machines Corporation Deploying parallel data integration applications to distributed computing environments
US9401835B2 (en) 2013-03-15 2016-07-26 International Business Machines Corporation Data integration on retargetable engines in a networked environment
US9477511B2 (en) * 2013-08-14 2016-10-25 International Business Machines Corporation Task-based modeling for parallel data integration
JP6519111B2 (ja) * 2014-07-18 2019-05-29 富士通株式会社 データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
US10015106B1 (en) 2015-04-06 2018-07-03 EMC IP Holding Company LLC Multi-cluster distributed data processing platform
US10331380B1 (en) * 2015-04-06 2019-06-25 EMC IP Holding Company LLC Scalable distributed in-memory computation utilizing batch mode extensions
US10515097B2 (en) * 2015-04-06 2019-12-24 EMC IP Holding Company LLC Analytics platform for scalable distributed computations
US10706970B1 (en) 2015-04-06 2020-07-07 EMC IP Holding Company LLC Distributed data analytics
US10348810B1 (en) * 2015-04-06 2019-07-09 EMC IP Holding Company LLC Scalable distributed computations utilizing multiple distinct clouds
US10511659B1 (en) * 2015-04-06 2019-12-17 EMC IP Holding Company LLC Global benchmarking and statistical analysis at scale
US10505863B1 (en) 2015-04-06 2019-12-10 EMC IP Holding Company LLC Multi-framework distributed computation
US10425350B1 (en) 2015-04-06 2019-09-24 EMC IP Holding Company LLC Distributed catalog service for data processing platform
US10541936B1 (en) * 2015-04-06 2020-01-21 EMC IP Holding Company LLC Method and system for distributed analysis
US10812341B1 (en) 2015-04-06 2020-10-20 EMC IP Holding Company LLC Scalable recursive computation across distributed data processing nodes
US10791063B1 (en) 2015-04-06 2020-09-29 EMC IP Holding Company LLC Scalable edge computing using devices with limited resources
US10860622B1 (en) 2015-04-06 2020-12-08 EMC IP Holding Company LLC Scalable recursive computation for pattern identification across distributed data processing nodes
US10776404B2 (en) * 2015-04-06 2020-09-15 EMC IP Holding Company LLC Scalable distributed computations utilizing multiple distinct computational frameworks
US10122806B1 (en) 2015-04-06 2018-11-06 EMC IP Holding Company LLC Distributed analytics platform
US10509684B2 (en) 2015-04-06 2019-12-17 EMC IP Holding Company LLC Blockchain integration for scalable distributed computations
US10366111B1 (en) * 2015-04-06 2019-07-30 EMC IP Holding Company LLC Scalable distributed computations utilizing multiple distinct computational frameworks
US10541938B1 (en) 2015-04-06 2020-01-21 EMC IP Holding Company LLC Integration of distributed data processing platform with one or more distinct supporting platforms
US10528875B1 (en) 2015-04-06 2020-01-07 EMC IP Holding Company LLC Methods and apparatus implementing data model for disease monitoring, characterization and investigation
US10404787B1 (en) 2015-04-06 2019-09-03 EMC IP Holding Company LLC Scalable distributed data streaming computations across multiple data processing clusters
US10496926B2 (en) 2015-04-06 2019-12-03 EMC IP Holding Company LLC Analytics platform for scalable distributed computations
WO2017028930A1 (en) * 2015-08-20 2017-02-23 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatus for running an analytics function
US10127237B2 (en) 2015-12-18 2018-11-13 International Business Machines Corporation Assignment of data within file systems
US10656861B1 (en) * 2015-12-29 2020-05-19 EMC IP Holding Company LLC Scalable distributed in-memory computation
US10268521B2 (en) * 2016-01-22 2019-04-23 Samsung Electronics Co., Ltd. Electronic system with data exchange mechanism and method of operation thereof
WO2017212504A1 (en) * 2016-06-06 2017-12-14 Hitachi, Ltd. Computer system and method for task assignment
CN108073990A (zh) * 2016-11-09 2018-05-25 中国国际航空股份有限公司 飞机维修方法及其配置系统和计算设备
US10374968B1 (en) 2016-12-30 2019-08-06 EMC IP Holding Company LLC Data-driven automation mechanism for analytics workload distribution
US10498817B1 (en) * 2017-03-21 2019-12-03 Amazon Technologies, Inc. Performance tuning in distributed computing systems
JP7080033B2 (ja) 2017-11-07 2022-06-03 株式会社日立製作所 タスク管理システム、タスク管理方法、及びタスク管理プログラム
US10776148B1 (en) * 2018-02-06 2020-09-15 Parallels International Gmbh System and method for utilizing computational power of a server farm
CN115174447B (zh) * 2022-06-27 2023-09-29 京东科技信息技术有限公司 一种网络通信方法、装置、系统、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002236673A (ja) * 2001-02-08 2002-08-23 Nippon Telegr & Teleph Corp <Ntt> ネットワーク上の処理制御方法
JP2010218307A (ja) * 2009-03-17 2010-09-30 Hitachi Ltd 分散計算制御装置及び方法
WO2012077390A1 (ja) * 2010-12-07 2012-06-14 株式会社日立製作所 ネットワークシステム、及びそのサービス品質制御方法
JP2012215933A (ja) * 2011-03-31 2012-11-08 Nec Corp ジョブ管理システム及びジョブ管理方法
JP2012247865A (ja) * 2011-05-25 2012-12-13 Nippon Telegr & Teleph Corp <Ntt> ゲストos配置システム及びゲストos配置方法
JP2012248114A (ja) * 2011-05-30 2012-12-13 Canon Inc 情報処理装置、情報処理装置の制御方法、およびプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003209570A (ja) * 2002-01-11 2003-07-25 Fujitsu Ltd 中継方法そのクライアント、サーバ、中継装置
TW201021445A (en) * 2008-10-16 2010-06-01 Koninkl Philips Electronics Nv Method and apparatus for automatic assigning of devices
US8560605B1 (en) * 2010-10-21 2013-10-15 Google Inc. Social affinity on the web
US9582221B2 (en) * 2012-08-24 2017-02-28 Vmware, Inc. Virtualization-aware data locality in distributed data processing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002236673A (ja) * 2001-02-08 2002-08-23 Nippon Telegr & Teleph Corp <Ntt> ネットワーク上の処理制御方法
JP2010218307A (ja) * 2009-03-17 2010-09-30 Hitachi Ltd 分散計算制御装置及び方法
WO2012077390A1 (ja) * 2010-12-07 2012-06-14 株式会社日立製作所 ネットワークシステム、及びそのサービス品質制御方法
JP2012215933A (ja) * 2011-03-31 2012-11-08 Nec Corp ジョブ管理システム及びジョブ管理方法
JP2012247865A (ja) * 2011-05-25 2012-12-13 Nippon Telegr & Teleph Corp <Ntt> ゲストos配置システム及びゲストos配置方法
JP2012248114A (ja) * 2011-05-30 2012-12-13 Canon Inc 情報処理装置、情報処理装置の制御方法、およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
生天目 直哉,外2名: "「分散広域センサネットワークにおけるデータ配送・処理機構」", 電子情報通信学会論文誌, vol. 第J95-B巻 第11号, JPN6017022305, 1 November 2012 (2012-11-01), pages 1461 - 1470, ISSN: 0003580485 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110543354A (zh) * 2019-09-05 2019-12-06 腾讯科技(深圳)有限公司 任务调度方法、装置、设备及存储介质
CN110543354B (zh) * 2019-09-05 2023-06-13 腾讯科技(上海)有限公司 任务调度方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US20140372611A1 (en) 2014-12-18

Similar Documents

Publication Publication Date Title
JP2015001828A (ja) 割当プログラム、割当装置および割当方法
US10394847B2 (en) Processing data in a distributed database across a plurality of clusters
KR102549821B1 (ko) 서버 리소스 할당 방법, 장치, 전자 기기 및 저장 매체
JP5931196B2 (ja) I/oノード及び複数の計算ノードに備えられたキャッシュメモリの制御方法
US8782235B2 (en) Resource migration system and resource migration method
US9329906B2 (en) Virtual machine mobility using resource pools
JP2008165620A (ja) ストレージ装置構成管理方法、管理計算機及び計算機システム
WO2014155555A1 (ja) 管理システム及び管理プログラム
JP5788006B2 (ja) 計算機システム及びその管理方法
JP5396339B2 (ja) リソース制御方法及びリソース制御システム
JP2016024612A (ja) データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
US10459768B2 (en) Computer system, management system, and resource management method
JP6448779B2 (ja) サーバストレージシステムを含んだ計算機システム
JP6244496B2 (ja) サーバストレージシステムの管理システム及び管理方法
JP7310378B2 (ja) 情報処理プログラム、情報処理方法、および情報処理装置
KR101980320B1 (ko) Gpu기반의 빅데이터 검색 질의 병렬 분산처리 방법
KR102064466B1 (ko) 가상화 시스템에서의 가상 데스크톱을 할당하는 방법 및 그 가상화 시스템
JP2015165362A (ja) 性能を測定する情報処理装置、性能測定方法及びそのためのプログラム
US20230176908A1 (en) Systems, methods and computer program products for job management
KR102024846B1 (ko) 파일 시스템 프로그램 및 이를 이용한 데이터 센터 제어 방법
JP6736932B2 (ja) 情報処理システム、ストレージ装置、情報処理方法及びプログラム
WO2015145677A1 (ja) 管理計算機及びプラットフォーム改善方法
CN115373581A (zh) 一种数据存储方法、装置、计算机设备及存储介质
JP5294352B2 (ja) シンクライアントシステム、セッション管理装置、セッション管理方法およびプログラム
JP2017130130A (ja) ストレージ装置、仮想ボリューム制御システムおよび仮想ボリューム制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170120

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170620