JP2016004328A - タスク割当プログラム、タスク割当方法およびタスク割当装置 - Google Patents

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

Info

Publication number
JP2016004328A
JP2016004328A JP2014122815A JP2014122815A JP2016004328A JP 2016004328 A JP2016004328 A JP 2016004328A JP 2014122815 A JP2014122815 A JP 2014122815A JP 2014122815 A JP2014122815 A JP 2014122815A JP 2016004328 A JP2016004328 A JP 2016004328A
Authority
JP
Japan
Prior art keywords
processing
map
data
task
reduce
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.)
Withdrawn
Application number
JP2014122815A
Other languages
English (en)
Inventor
松田 雄一
Yuichi Matsuda
雄一 松田
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 JP2014122815A priority Critical patent/JP2016004328A/ja
Priority to US14/724,991 priority patent/US20150365474A1/en
Publication of JP2016004328A publication Critical patent/JP2016004328A/ja
Withdrawn 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/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • 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/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ジョブ全体の完了時間を短縮することを課題とする。【解決手段】タスク割当装置は、入力データを分割して得られた第1の分割データ群に含まれる各分割データを、Map処理を行う複数のノードに分配する処理を実行させる。タスク割当装置は、第1の分割データ群のうちの一部の分割データ群についてのMap処理が完了すると、第1の分割データ群の全てのMap処理の完了後に実行されるReduce処理を行う複数のノードへの分配データの生成ルールを、一部の分割データ群についてのMap処理結果について適用して、分配データの各データ量を推定する。タスク割当装置は、推定した各データ量に基づいて、少なくとも一部の分配データについての割り当て先ノードの選択制御を第1の分割データ群の全てのMap処理の完了前に開始する。【選択図】図2

Description

本発明は、タスク割当プログラム、タスク割当方法およびタスク割当装置に関する。
クラウドコンピューティングの普及に伴い、クラウド上に保存される大量のデータを複数のサーバで分散して処理を実行する分散処理システムが利用されている。分散処理システムとしては、HDFS(Hadoop Distributed File System)とMapReduce処理とを基盤技術とするHadoop(登録商標)が知られている。
HDFSは、複数のサーバにデータを分散格納するファイルシステムである。MapReduceは、HDFS上のデータをタスクと呼ばれる単位で分散処理する仕組みであり、Map処理、Shuffleソート処理、Reduce処理を実行する。
MapReduceによる分散処理においては、マスタサーバが、ハッシュ関数等を用いて、複数のスレーブサーバに対してMap処理やReduce処理のタスクを割り当てるとともに、分割したデータを各スレーブサーバに送信する。そして、各スレーブサーバが、割り当てられたタスクを実行する。
スレーブサーバに対するタスクの割り当ては、ハッシュ関数等を用いることにより、均等に行われる。その一方で、各Reduceタスクに対応する処理量は、Reduceタスクに対応するキー等に関連づけられたReduce対象のデータ量等により均等になるとは限らない。
例えば、ハッシュ関数の種類等によっては、1つのスレーブサーバに複数の振分キーが集中する。また、各スレーブサーバに振分キーが均等に振り分けられたとしても、Reduceタスクごとに処理量が異なる。これらのことから、各スレーブサーバでの処理完了時間が異なるので、複数タスクからなるジョブ全体の完了が最も処理が遅いスレーブサーバの処理完了に左右されることとなる。このため、全Reduceタスクをスレーブサーバに割り当てた後、各Reduceタスクに対応する処理量が均等となるように、データ量を調整する技術が知られている。
特開2012−118669号公報 特開2010−244469号公報 特開2007−264794号公報 特開2013−69189号公報 特開2010−218307号公報
しかしながら、各Reduceタスクの処理量が不均一となることは、入力データやMap処理の結果など様々な影響により異なるので、上記技術のような調整処理を行うことが、ジョブ全体の完了時間を早くするものとは限らない。
例えば、Reduceタスクの処理量を調整するには、全Map処理の完了を待ってから調整することになるので、各スレーブサーバでのReduce処理の実行開始が遅れることになり、却ってジョブ全体の処理時間が長くなる場合もある。
1つの側面では、ジョブ全体の完了時間を短縮することができるタスク割当プログラム、タスク割当方法およびタスク割当装置を提供することを目的とする。
第1の案では、タスク割当プログラムは、コンピュータに、入力データを分割して得られた第1の分割データ群に含まれる各分割データを、Map処理を行う複数のノードに分配する処理を実行させる。タスク割当プログラムは、コンピュータに、前記第1の分割データ群のうちの一部の分割データ群についてのMap処理が完了すると、前記第1の分割データ群の全てのMap処理の完了後に実行されるReduce処理を行う複数のノードへの分配データの生成ルールを、前記一部の分割データ群についてのMap処理結果について適用して、分配データの各データ量を推定する処理を実行させる。タスク割当プログラムは、コンピュータに、推定した前記各データ量に基づいて、少なくとも一部の分配データについての割り当て先ノードの選択制御を前記第1の分割データ群の全てのMap処理の完了前に開始する処理を実行させる。
1実施形態によれば、ジョブ全体の完了時間を短縮することができる。
図1は、実施例1に係る分散処理システムの全体構成例を示す図である。 図2は、実施例2に係るマスタサーバの機能構成を示す機能ブロック図である。 図3は、ジョブリストDBに記憶される情報の例を示す図である。 図4は、タスクリストDBに記憶される情報の例を示す図である。 図5は、クラスタプロファイルDBに記憶される情報の例を示す図である。 図6は、Map処理の完了通知の例を示す図である。 図7は、実施例2に係るスレーブサーバの機能構成を示す機能ブロック図である。 図8は、Map処理を説明する図である。 図9は、Shuffle処理を説明する図である。 図10は、Reduce処理を説明する図である。 図11は、Reduce処理の割当変更を説明する図である。 図12は、実施例2に係るマスタサーバが実行する処理の流れを示すフローチャートである。 図13は、実施例2に係るスレーブサーバが実行する処理の流れを示すフローチャートである。 図14は、タスクの進行イメージと閾値との関係を説明する図である。 図15は、サーバのハードウェア構成例を示す図である。
以下に、本願の開示するタスク割当プログラム、タスク割当方法およびタスク割当装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。なお、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
[全体構成]
図1は、実施例1に係る分散処理システムの全体構成例を示す図である。図1に示すように、この分散処理システムは、入出力DB(DataBase)サーバ2、マスタサーバ10、複数のスレーブサーバ30がネットワーク1を介して互いに通信可能に接続される。
この分散処理システムでは、Hadoop(登録商標)などの分散処理フレームワークを使用した分散処理アプリケーションが各計算機で実行されており、データ基盤としてHDFSなどを使用する。
入出力DBサーバ2は、分散処理対象のデータのメタ情報等を記憶するデータベースサーバである。例えば、入出力DBサーバ2が記憶するメタ情報は、どのデータがどのスレーブサーバ30に格納されているかを特定するのに使用される。
マスタサーバ10は、分散処理システムを統括的に管理するサーバである。例えば、マスタサーバ10は、入出力DBサーバ2が記憶するメタ情報から、どのデータがいずれのスレーブサーバ30に格納されているのかを特定する。また、マスタサーバ10は、各スレーブサーバ30に割当てるタスクやジョブなどを管理し、Map処理やReduce処理などのタスクをスレーブサーバ30に割当てる。なお、マスタサーバ10は、タスク割当装置の一例である。
各スレーブサーバ30は、分散処理アプリケーションを実装し、Map処理やReduce処理を実行して、HDFSで管理されるデータを分散処理するサーバである。例えば、スレーブサーバ30は、複数のプロセッサ、複数のディスクを有する。また、各スレーブサーバ30は、一意に識別される識別子が割り与えられる。なお、スレーブサーバ30は、ノードの一例である。
このスレーブサーバ30は、入出力DBサーバ2から取得したデータに対して、マスタサーバ10から割当てられたMap処理のタスクを実行する。また、スレーブサーバ30は、各スレーブサーバのMap処理結果を用いて、Shuffle&Sort処理を実行し、マスタサーバ10から割り当てられたReduce処理のタスクを実行する。
ここで、各処理について説明する。Map処理は、ユーザが定義したMap関数を実行する処理である。例えば、Map処理は、入力データから中間結果として「Key、Value」のペアを出力する。Shuffle&Sort処理は、Map処理の結果を「Key」でソートし、同じ「Key」を有する「Key、Value」のペアをマージする。Reduce処理は、ユーザが定義したReduce関数を実行する処理である。例えば、Reduce処理は、Shuffle&Sort処理の結果から、同じ「Key」の「Value」に対して重ね合わせ処理を実行して、新しい形式の「Key、Value」のペアを生成する。
このような状態において、マスタサーバ10は、入力データを分割して得られた第1の分割データ群に含まれる各分割データを、Map処理を行う複数のスレーブサーバ30に分配する。そして、マスタサーバ10は、第1の分割データ群のうちの一部の分割データ群についてのMap処理が完了すると、第1の分割データ群の全てのMap処理の完了後に実行されるReduce処理を行う複数のノードへの分配データの生成ルールを、一部の分割データ群についてのMap処理結果について適用して、分配データの各データ量を推定する。その後、マスタサーバ10は、推定した各データ量に基づいて、少なくとも一部の分配データについての割り当て先ノードの選択制御を第1の分割データ群の全てのMap処理の完了前に開始する。
例えば、マスタサーバ10は、MapReduceによる分散処理の実行を開始すると、予め指定された振分キーに関するハッシュ関数等を用いて、各スレーブサーバ30に対してMap処理のタスクを割当てる。続いて、マスタサーバ10は、予め指定された振分キーに関するハッシュ関数等を用いて、各スレーブサーバ30に対してReduce処理のタスクを割当てる。
このとき、マスタサーバ10は、Reduce処理のタスクの割当てを抑制する。そして、マスタサーバ10は、所定数のMap処理が完了すると、この所定数のMap処理結果を用いてReduceタスクの処理量を見積もる。そして、マスタサーバ10は、処理量が多いRedecu処理のタスクを高スペックのスレーブサーバ30に割当てるように、Reduce処理のタスクの割当てを開始する。
この結果、マスタサーバ10は、処理量が多いReduce処理を高スペックのスレーブサーバ30に割当てることができ、各Reduce処理の処理時間を均等化することができる。したがって、マスタサーバ10は、Reduce処理の処理完了が極端に遅くなることを抑制でき、ジョブ全体の完了時間を短縮することができる。
実施例1では、Reduce処理タスクの割当を抑制してから、Map処理によりReduce処理量を予測し、予測結果にしたがってReduce処理の割当を実行する例を説明したが、これに限定されるものではない。
一般的に、MapReduceによる分散処理では、データが入力されて処理が開始されると、ハッシュ関数によって、Map処理の割当およびReduce処理の割当が自動的に実行されることがある。このような場合でも、実施例2に係るマスタサーバ10は、Reduce処理の再割当を実行することができる。そこで、実施例2では、Reduce処理の再割当について説明する。なお、全体構成は、図1と同様とする。
[マスタサーバの構成]
図2は、実施例2に係るマスタサーバの機能構成を示す機能ブロック図である。図2に示すように、マスタサーバ10は、通信制御部11と、記憶部12と、制御部13とを有する。
通信制御部11は、スレーブサーバ30などの他装置と通信を実行する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信制御部11は、各スレーブサーバ30に、Map処理タスクやReduce処理タスクを送信する。また、通信制御部11は、Map処理結果等を各スレーブサーバ30から受信する。
記憶部12は、ジョブリストDB12a、タスクリストDB12b、クラスタプロファイルDB12cを有する記憶装置であり、例えばメモリやハードディスクなどである。また、記憶部12は、制御部13が実行するプログラムなどを記憶する。
ジョブリストDB12aは、分散処理対象のジョブ情報を記憶するデータベースである。図3は、ジョブリストDB12aに記憶される情報の例を示す図である。図3に示すように、ジョブリストDB12aは、「JobID、総Mapタスク数、総Reduceタスク数、Reduce割当許可」を対応付けて記憶する。
ここで記憶される「JobID」は、ジョブを識別する識別子である。「総Mapタスク数」は、ジョブに含まれるMap処理タスクの総数である。「総Reduceタスク数」は、ジョブに含まれるReduce処理タスクの総数である。「Reduce割当許可」は、Reduce処理タスクが割当可能な状態か否かを示し、可能な場合は「true」が設定され、可能ではない場合は「false」が設定され、ジョブの新規追加時も「false」が設定される。なお、「JobID、総Mapタスク数、総Reduceタスク数」は、管理者等によって設定更新される。
図3の例では、「JobID」が「Job001」のジョブは、4つのMap処理タスクと2つのReduce処理タスクで構成され、現在はまだ割当することができない状態であることを示す。同様に、「JobID」が「Job002」のジョブは、4つのMap処理タスクと2つのReduce処理タスクで構成され、現在はまだ割当することができない状態であることを示す。
タスクリストDB12bは、Map処理タスクやReduce処理タスクに関する情報を記憶するデータベースである。図4は、タスクリストDB12bに記憶される情報の例を示す図である。図4に示すように、タスクリストDB12bは、「JobID、TaskID、種別、Reduceの項番、データのあるスレーブID、状態、割り当てスレーブID、必要スロット数、処理データ量、再割当スレーブID」を記憶する。
ここで記憶される「JobID」は、ジョブを識別する識別子である。「TaskID」は、タスクを識別する識別子である。「種別」は、Map処理やReduce処理を示す情報である。「データのあるスレーブID」は、Map処理対象のデータを保持するスレーブサーバ30を識別する識別子であり、例えばホスト名などである。「状態」は、該当タスクが処理完了(Done)状態、実行中(Running)、割り当て前(Not assigned)のいずれであるかを示す。「Reduceの項番」は、該当Reduceの実行順を示す。
「割当スレーブID」は、ハッシュ関数を用いて、タスクが割当てられたスレーブサーバ30を識別する識別子であり、例えばホスト名などである。「必要スロット数」は、タスクを実行するのに使用するスロット数である。「処理データ量(単位はGB)」は、該当Reduce処理タスクのデータ量である。「再割当スレーブID」は、ハッシュ関数を用いた割り当て後にReduce処理タスクの割り当てが変更されたスレーブサーバ30を識別する識別子である。
図4の場合、「JobID」が「Job001」であるジョブで、1スロットを用いるMap処理タスク「Map000」が「Node1」のスレーブサーバ30に割当てられる。そして、この「Node1」のスレーブサーバ30は、「Node1」のスレーブサーバ30と「Node2」のスレーブサーバ30とからデータを取得して、Map処理を実行し、実行が完了していることを示す。また、このMap処理タスク「Map000」の処理データ量が300GBであることを示す。
また、「JobID」が「Job001」であるジョブで、1スロットを用いてReduce処理の2番目に実行されるReduce処理タスク「Reduce002」が、ハッシュ関数によって「Node4」のスレーブサーバ30に割当てられる。しかし、その後、Reduce処理タスク「Reduce002」は、「Node10」のスレーブサーバ30に再割当てされていることを示す。
なお、JobID、TaskID、種別、Reduce項番については、ジョブリストDB12aに記憶される情報にしたがって生成される。データのあるスレーブIDは、入出力DBサーバ2が記憶するメタ情報等により特定することができる。状態は、タスクの割り当て状況やスレーブサーバ30からの処理結果等によって更新される。割当スレーブIDは、タスクを割当時点で更新される。必要スロット数は、1タスクについて1スロットなどのように予め指定することができる。Reduce処理の処理データ量は、Map処理の終了結果から予測することができる。
クラスタプロファイルDB12cは、各スレーブサーバのスペックを記憶するデータベースである。図5は、クラスタプロファイルDB12cに記憶される情報の例を示す図である。図5に示すように、クラスタプロファイルDB12cは、「スレーブID、CPU、メモリ、HDD、割当状態」を記憶する。なお、「スレーブID、COU、メモリ、HDD」は、管理者等によって設定される値であり、「割当状態」は、制御部13によって更新される情報である。
ここで記憶される「スレーブID」は、スレーブサーバ30を一意に識別する識別子である。「CPU」は、スレーブサーバ30が有するプロセッサの数を示し、「メモリ」は、スレーブサーバ30が有するメモリ容量を示し、「HDD」は、スレーブサーバ30が有するハードディスク容量を示す。「割当状態」は、Reduce処理タスクが割り当て済みか否かを示す情報であり、割り当て前はNot assignedが設定され、割当済みはassignedが設定される。
図5の場合、「Node9」のスレーブサーバ30は、プロセッサが2コアでメモリ容量が2GBでHDD容量が100GBであり、Reduce処理タスクが割当て済みであることを示す。また、「Node10」のスレーブサーバ30は、プロセッサが8コアでメモリ容量が16GBでHDD容量が1TBであり、Reduce処理タスクが割当て前であることを示す。
制御部13は、マスタサーバ10全体の処理を司る処理部であり。Map割当部14、Reduce割当部15、予測部16、再割当部17を有する。制御部13は、例えばプロセッサなどの電子回路であり、Map割当部14、Reduce割当部15、予測部16、再割当部17は、電子回路の一例や制御部13が実行するプロセスの一例である。
Map割当部14は、予め指定された振分キーに関するハッシュ関数等を用いて、各ジョブにおけるMap処理のタスクであるMap処理タスクを1つ以上のスレーブサーバ30に割当てる処理部である。そして、Map割当部14は、図4に示した「割当スレーブID」や「状態」等を更新する。
一例を挙げると、Map割当部14は、スレーブサーバ30等からMap処理タスクの割当要求を受信した場合に、タスクリストDB12bを参照して「状態」が「Not assigned」のMap処理タスクを特定する。続いて、Map割当部14は、割当要求を送信したスレーブサーバ30のIDが「データのあるスレーブID」に含まれるMap処理タスクがあればそのMap処理タスクを優先して選ぶ。Map割当部14は、そのようなMap処理タスクがなければ任意の方法でMap処理タスクを選び、割当対象のMap処理タスクとする。その後、Map割当部14は、割当要求を送信したスレーブサーバ30のIDを、割当対象のMap処理タスクの「割当スレーブID」に格納する。
その後、Map割当部14は、特定した割当先のスレーブサーバ30に、TaskID、データのあるスレーブID、必要スロット数等を通知して、Map処理タスクを割当てる。また、Map割当部14は、割当てたMap処理タスクの「状態」を「Not assigned」から「Running」に更新する。
Reduce割当部15は、予め指定された振分キーに関するハッシュ関数等を用いて、各ジョブにおけるReduce処理のタスクであるReduce処理タスクを1つ以上のスレーブサーバ30に割り当てる。
例えば、Reduce割当部15は、スレーブサーバ30等からReduce処理タスクの割当要求を受信した場合に、タスクリストDB12bを参照して「状態」が「Not assigned」のReduce処理タスクを特定する。続いて、Reduce割当部15は、ハッシュ関数等を用いて割当先のスレーブサーバを特定する。その後、Reduce割当部15は、特定した割当先のスレーブサーバ30のIDを、割当対象のReduce処理タスクの「割当スレーブID」に格納する。さらに、Reduce割当部15は、クラスタプロファイルDB12cにおいて割当先のスレーブサーバ30に対応する割当状態を「Not assigned」から「assigned」に更新する。
その後、Reduce割当部15は、特定した割当先のスレーブサーバ30に、TaskID、必要スロット数、処理データ量、フラグ等を通知して、Reduce処理タスクを割当てる。また、Reduce割当部15は、割当てたReduce処理タスクの「状態」を「Not assigned」から「Running」に更新する。なお、Reduce割当部15は、Reduce処理タスクの完了通知を受信した場合、該当Reduce処理タスクの「状態」を「Running」から「Done」に更新する。
予測部16は、一部のMap処理タスクの処理結果から処理データ量が多いReduce処理を予測する処理部である。具体的には、予測部16は、全Map処理タスクのうち所定数のMap処理タスクが完了すると、処理が完了したMap処理タスクの処理データ量やMap処理の処理データ量から得られるReduce処理のデータ量から、処理データ量が多いReduce処理を予測する。
例えば、予測部16は、スレーブサーバ30から通知されるMap処理の完了通知から、Map処理のデータ量を取得する。そして、予測部16は、Map処理の処理データ量が所定量を超えるMap処理を特定した後、ジョブリストDB12aやタスクリストDB12b等を参照して、特定したMap処理を用いるReduce処理を特定する。その後、予測部16は、特定したReduce処理を、処理量が閾値を超えるReduce処理として再割当部17に通知する。
図4の例では、予測部16は、処理データ量が閾値(1000)以上のMap処理タスクとして「Map001」と「Map002」とを特定する。その後、予測部16は、Map処理タスク「Map001」および「Map002」と同じJobID「Job001」を有するReduce処理タスク「Reduce001」と「Reduce002」とを特定する。そして、予測部16は、Reduce処理タスク「Reduce001」と「Reduce002」とを、処理量が閾値を超えるReduce処理として再割当部17に通知する。
また、別例としては、予測部16は、Map処理の処理結果からReduce処理のデータ量を推定することもできる。図6は、Map処理の完了通知の例を示す図である。図6に示す完了通知は、各スレーブサーバ30がマスタサーバ10に送信する完了通知である。図6に示すように、完了通知は、「通知種別、JobID、完了Map TaskID、Mapタスクを実行したスレーブID」から構成されるMap完了内容と、「通知種別、JobID、完了Map TaskID、Reduce TaskID、データ量」から構成されるMap完了内容とを含む。
ここで記憶される「通知種別」は、Map処理の完了通知かReduce情報かを示す情報であり、Map処理の完了通知の場合には「Map完了」が設定され、Reduce情報の場合には「Reduceデータ量」が設定される。「JobID」には、Map処理が属するジョブの識別子が設定される。「完了Map TaskID」は、完了したMap処理タスクを特定する識別子が設定される。「Mapタスクを実行したスレーブID」は、当該Map処理タスクを実行し、完了通知を送信したスレーブサーバの識別子が設定される。「Reduce TaskID」は、当該Map処理の実行結果からデータ量が判明したReduce処理タスクを特定する識別子が設定される。「データ量(単位はGB)」は、当該Map処理の実行結果から判明したReduce処理タスクデータ量設定される。
図6の例は、「JobID」が「Job013」のジョブにおける「Map135」のMap処理タスクの完了結果を示している。このMap処理タスク「Map135」は、スレーブサーバ「Node1」で実行されたタスクである。また、このMap処理タスク「Map135」によって、「JobID」が「Job013」のジョブにおけるReduce処理が「Reduce131」、「Reduce132」、「Reduce133」の3つあることが判明したことを示す。さらに、このMap処理タスク「Map135」によって、Reduce処理タスク「Reduce131」のデータ量が「1000」、Reduce処理タスク「Reduce132」のデータ量が「1200」、Reduce処理タスク「Reduce133」のデータ量が「8000」であることが判明したことを示す。
予測部16は、このようにしてMap処理タスクの完了通知からReduce処理タスクのデータ量を取得して加算していく。そして、予測部16は、加算した結果が「10000」を超える場合に、処理データ量が多いReduce処理が発生すると予測する。
ここで、予測部16がReduce処理の合計を見積もる契機を様々に設定することができる。つまり、どの程度のMap処理タスクが完了した時点で、処理データ量が閾値を超えるか否かを判定するのかを任意に設定することができる。
例えば、予測部16は、全Map処理タスクのうち予め指定した割合のMap処理が完了した時点で判定することができる。また、予測部16は、最初のMap処理タスクが終了してから予め指定した時間が過ぎた時点で判定することができる。また、予測部16は、上記2つの時点のいずれか早い時点で判定することもできる。
なお、最初のMap処理タスクについても、ランダムに指定することもできる。このように、Map処理タスクのタスク数等に基づいて予測タイミングを任意に変更することができるので、入力データによってカスタマイズすることができる。
再割当部17は、予測部16によって処理量が閾値以上と予測されたReduce処理に対して、スレーブサーバ30の再割当を実行する処理部である。具体的には、再割当部17は、処理量が多いReduce処理タスクに対して、ハッシュ関数によってスペックの低いスレーブサーバ30が割り当てられた場合に、当該Reduce処理タスクをスペックの高いスレーブサーバ30に割当直す。
例えば、再割当部17は、通知された処理量の多いReduce処理が既に割り振られているスレーブサーバ30をタスクリストDB12bから特定し、特定したスレーブサーバ30のスペックをクラスタプロファイル12cから特定する。そして、再割当部17は、特定したスペックが、条件「CPUが3core以上、かつ、メモリが10GB以上、かつ、HDDが30GB以上」を満たすかを判定する。なお、この条件も任意に設定変更することができる。
ここで、再割当部17は、割当済みのスレーブサーバのスペックが条件を満たす場合、ハッシュ関数による割り当てを維持する。一方、再割当部17は、割当済みのスレーブサーバのスペックが条件を満たさない場合、クラスタプロファイル12cを参照して、割当状態が「Not assigned」のスレーブサーバ30のうち条件を満たすスレーブサーバ30を検索する。そして、再割当部17は、検索したスレーブサーバ30に対応する割当状態を「assigned」に変更するとともに、該当Reduce処理タスクに対応する「再割当スレーブID」に、検出したスレーブサーバ30のスレーブIDを設定する。このようにして、再割当部17は、Reduce処理タスクの再割当を実行する。
図4の例では、再割当部17は、予測部16から「Reduce001」および「Reduce002」のReduce処理タスクの処理量が多いとの通知を受信する。そして、再割当部17は、クラスタプロファイル12cを参照して、割当済みのNode2とNode4が低スペックであり、再割当を要すると判断する。すると、再割当部17は、クラスタプロファイル12cを参照して、高スペックのNode10とNode11が未割当であることを確認して、これらのスレーブサーバに通知されたReduce処理タスクを割当てる。ここでは、再割当部17は、「Reduce001」に対してNode11を再度割当て、「Reduce002」に対してNode10を再度割当てて、タスクリストDB12bを更新する。ここで、再割当部17は、よりデータ量が多いタスクをより高スペックのサーバに割当てる。
なお、再割当部17は、「Not assigned」のスレーブサーバ30がない場合には、「assigned」のスレーブサーバ30に割当てられているReduce処理と、処理量が多いReduce処理とを交換するように、割当の変更を実行することもできる。
[スレーブサーバの構成]
図7は、実施例2に係るスレーブサーバの機能構成を示す機能ブロック図である。図7に示すように、スレーブサーバ30は、通信制御部31と、記憶部32と、制御部33とを有する。
通信制御部31は、マスタサーバ10や他のスレーブサーバ30などと通信を実行する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信制御部31は、マスタサーバ10から各種タスクの割当を受信し、各種タスクの完了通知を送信する。また、通信制御部31は、各種タスク処理の実行に伴って、該当するスレーブサーバ30から読み出されたデータを受信する。
記憶部32は、一時ファイルDB32aと入出力ファイルDB32bとを有する記憶装置であり、例えばメモリやハードディスクなどである。また、記憶部32は、制御部33が実行するプログラムなどを記憶する。
一時ファイルDB32aは、Map処理、Shuffle処理、Reduce処理等で生成される中間データ、他のスレーブサーバ30等から読み出されたデータや各処理部が処理を実行する際に使用するデータを一時的に記憶するデータベースである。入出力ファイルDB32bは、Map処理の入力およびReduce処理の出力を記憶するデータベースであり、入出力DBサーバ2と連携したデータベースである。
制御部33は、スレーブサーバ30全体の処理を司る処理部であり、例えばプロセッサなどである。この制御部33は、Map処理部34、Map結果送信部35、Shuffle処理部36、Reduce処理部37を有する。また、Map処理部34、Map結果送信部35、Shuffle処理部36、Reduce処理部37は、電子回路の一例またはプロセッサが実行するプロセスの一例である。
Map処理部34は、Map処理タスクを実行する処理部である。具体的には、Map処理部34は、ハートビートを用いて、マスタサーバ10にMap処理タスクの割当を要求する。このとき、Map処理部34は、スレーブサーバ30の空きスロット数も通知する。そして、Map処理部34は、マスタサーバ10から、「TaskID、データのあるスレーブID、必要スロット数」などを含むMap割当情報を受信する。
その後、Map処理部34は、受信したMap割当情報にしたがって、「データのあるスレーブID」で特定されるスレーブサーバ30が処理を行っているスレーブサーバであれば、入出力DB32bからデータを取得する。そうでなければ、Map処理部34は、「データのあるスレーブID」で特定されるスレーブサーバ30からデータを取得して一時ファイルDB32a等に保存し、「必要スロット数」で指定されるスロット数を用いてMap処理を実行する。そして、Map処理部34は、Map処理結果を一時ファイルDB32a等に格納する。ここで、生成されるMap処理結果は、例えば図6に示すように、Reduce処理のタスクIDやデータ量などが含まれる。
Map結果送信部35は、Map処理部34が実行したMap処理の結果をマスタサーバ10に送信する処理部である。例えば、Map結果送信部35は、Map処理部34からMap処理が終了したことが通知されると、一時ファイルDB32aなどからMap処理結果の一部を読み出す。そして、Map結果送信部35は、図6に示した完了通知を生成してマスタサーバ10に送信する。
Shuffle処理部36は、Map処理の結果を「Key」でソートし、同じ「Key」を有する「Key、Value」ペアをマージして、Reduce処理の処理対象を生成する処理部である。具体的には、Shuffle処理部36は、マスタサーバ10からMap処理が終了したことを通知されると、当該Map処理が属するジョブのReduce処理を実行する準備として、各スレーブサーバ30から該当するMap処理結果を取得する。そして、Shuffle処理部36は、Map処理の結果を予め指定された「Key」でソートし、同じ「Key」を有する処理結果をマージして、一時ファイルDB32aに格納する。
例えば、Shuffle処理部36は、「JobID」が「Job001」のMap処理タスクである「Map000、Map001、Map002、Map003」が終了したこと、つまり、「JobID」が「Job001」のReduce処理タスクの実行開始をマスタサーバ10から受信する。すると、Shuffle処理部36は、Node1、Node2、Node3、Node4からMap処理結果を取得する。続いて、Shuffle処理部36は、Map処理結果のソートおよびマージを実行し、その結果を一時ファイルDB32a等に格納する。
Reduce処理部37は、マスタサーバ10から割当てられたReduce処理タスクを受信し、Reduce処理タスクを実行する処理部である。例えば、Reduce処理部37は、「JobID、TaskID、必要スロット数、処理データ量」などから構成されるReduce処理タスクの情報を受信する。そして、Reduce処理部37は、受信した情報を一時ファイルDB32a等に格納する。その後、Reduce処理部37は、各スレーブサーバ30から該当データを取得して、Reduce処理を実行し、その結果を入出力ファイルDB32bに格納する。なお、Reduce処理部37は、Reduce処理の結果をマスタサーバ10に送信してもよい。
(Map処理の説明)
ここで、スレーブサーバ30が実行するMap処理について説明する。図8は、Map処理を説明する図である。図8に示すように、各スレーブサーバ30は、入力データとして「Hello Apple!」と「Apple is red」を受信し、それぞれの入力データに対してMap処理を実行して、「Key、Value」のペアを出力する。
図8の例では、スレーブサーバ30は、「Hello Apple!」に対してMap処理を実行して、入力データの各要素の数を計数し、要素を「Key」、計数結果を「Value」とする「Key、Value」のペアを出力する。具体的には、スレーブサーバ30は、入力データ「Hello Apple!」から「Hello、1」、「Apple、1」、「!、1」を生成する。同様に、スレーブサーバ30は、入力データ「Apple is red」から「Apple、1」、「is、1」、「red、1」を生成する。
(Shuffle処理)
次に、スレーブサーバ30が実行するShuffle処理について説明する。図9は、Shuffle処理を説明する図である。図9に示すように、各スレーブサーバ30は、各スレーブサーバからMap処理結果を取得してShuffle処理を実行する。
図9の例では、スレーブサーバ(A)、(B)、(C)・・・が同じジョブ(例えば、JobID=20)に属するMap処理タスクを実行し、スレーブサーバ(D)と(Z)とが、JobID=20に属するReduce処理タスクを実行する。
例えば、スレーブサーバ(A)がMap処理1を実行して「Apple、1」、「is、3」を生成し、スレーブサーバ(B)がMap処理2を実行して「Apple、2」、「Hello、4」を生成し、スレーブサーバ(C)がMap処理3を実行して「Hello、3」、「red、5」を生成する。スレーブサーバ(X)がMap処理1000を実行して「Hello、1000」、「is、1002」を生成する。
続いて、スレーブサーバ(D)およびスレーブサーバ(Z)は、割当てられたReduce処理タスクで使用する各スレーブサーバのMap処理結果を取得して、ソートおよびマージを実行する。具体的には、スレーブサーバ(D)には、「Apple」と「Hello」についてのReduce処理タスクが割当てられて、スレーブサーバ(Z)には、「is」と「red」についてのReduce処理タスクが割当てられたとする。
この場合、スレーブサーバ(D)は、スレーブサーバ(A)からMap処理1の結果「Apple、1」を取得し、スレーブサーバ(B)からMap処理2の結果「Apple、2」および「Hello、4」を取得する。また、スレーブサーバ(D)は、スレーブサーバ(C)からMap処理3の結果「Hello、3」を取得し、スレーブサーバ(X)からMap処理1000の結果「Hello、1000」を取得する。そして、スレーブサーバ(D)は、これらの結果をソートおよびマージして、「Apple、[1,2]」および「Hello、[3,4,1000]」を生成する。
同様に、スレーブサーバ(Z)は、スレーブサーバ(A)からMap処理1の結果「is、3」を取得し、スレーブサーバ(C)からMap処理3の結果「red、5」を取得し、スレーブサーバ(X)からMap処理1000の結果「is、1002」を取得する。そして、スレーブサーバ(Z)は、これらの結果をソートおよびマージして、「is、[3,1002]」および「red、[5]」を生成する。
(Reduce処理)
次に、スレーブサーバ30が実行するReduce処理について説明する。図10は、Reduce処理を説明する図である。図10に示すように、各スレーブサーバ30は、各スレーブサーバのMap処理結果から生成したShuffle結果を用いて、Reduce処理を実行する。具体的には、Shuffle処理の説明と同様、スレーブサーバ(D)には、「Apple」と「Hello」についてのReduce処理タスクが割当てられて、スレーブサーバ(Z)には、「is」と「red」についてのReduce処理タスクが割当てられたとする。
この例では、スレーブサーバ(D)は、Shuffle処理の結果である「Apple、[1,2]」および「Hello、[3,4,1000]」から値を積算し、Reduce処理結果として「Apple、3」および「Hello、1007」を生成する。同様に、スレーブサーバ(Z)は、Shuffle処理の結果である「is、[3,1002]」および「red、[5]」から値を積算し、Reduce処理結果として「is、1005」および「red、5」を生成する。
[割当変更例]
図11は、Reduce処理の割当変更を説明する図である。図11の例では、Job001のジョブに関するMap処理とReduce処理とを例にして説明するが、他のジョブのMap処理等も実行されているものとする。なお、ここでは、Node1からNode4は低スペックのスレーブサーバであるとする。
図11の左図に示すように、マスタサーバ10は、Map処理タスクについてハッシュ関数を用いて、「Map000」をNode1に割当て、「Map001」をNode2に割当て、「Map002」をNode3に割当て、「Map003」をNode4に割当て。同様に、マスタサーバ10は、Reduce処理タスクについてハッシュ関数を用いて、「Reduce001」をNode2に割当て、「Reduce002」をNode2に割当てる。
この状態で、マスタサーバ10は、Job001のジョブ以外のジョブのMap処理が実行中に、Job001の「Map000」から「Map003」の処理が完了すると、各Map処理タスクの処理データ量を取得する。ここで、マスタサーバ10は、「Map001」の処理データ量が閾値(1000GB)を超える「2000GB」であり、「Map003」の処理データ量が閾値(1000GB)を超える「3000GB」であることを検出する。このため、マスタサーバ10は、Job001に対応するReduce処理を再割当対象に決定する。
すると、マスタサーバ10は、クラスタプロファイル12cを参照して、割当状態が「Not assigned」かつ高スペックのサーバとして、Node10とNode11を特定する。そして、図11の右図に示すように、マスタサーバ10は、Job001に対応するReduce処理の「Reduce001」をNode11に割当て、「Reduce002」をNode10に割当てる。
つまり、マスタサーバ10は、「Reduce001」を実行するスレーブサーバ30を、ハッシュ関数によって割り当てられたNode2からNode11に変更する。同様に、マスタサーバ10は、「Reduce002」を実行するスレーブサーバ30を、ハッシュ関数によって割り当てられたNode4からNode10に変更する。このようにして、マスタサーバ10は、処理量の多いReduce処理タスクの再割当を実行する。
[マスタサーバの処理]
図12は、実施例2に係るマスタサーバが実行する処理の流れを示すフローチャートである。図12に示すように、マスタサーバ10のMap割当部14は、ジョブが投入されると(S101:Yes)、各スレーブサーバから空きスロット数を受信する(S102)。
そして、Map割当部14は、予め指定された振分キーに関するハッシュ関数を用いて、Map処理タスクの各スレーブサーバに割当てる(S103)。ここで、Map割当部14は、割当結果にしたがって、タスクリストDB12bを更新する。
続いて、Reduce割当部15は、予め指定された振分キーに関するハッシュ関数を用いて、Reduce処理タスクの各スレーブサーバに割当てる(S104)。ここで、Reduce割当部15は、割当結果にしたがって、タスクリストDB12bおよびクラスタプロファイル12cを更新する。
その後、予測部16は、Map処理タスクの完了通知を受信すると(S105:Yes)、タスクリストDB12bを更新する(S106)。具体的には、予測部16は、処理が完了したMap処理タスクの状態を「Running」から「Done」に変更する。
そして、予測部16は、現時点で全Map処理タスクのうちどのくらいのMap処理タスクが完了しているかを示すタスク完了率(Tk)を算出し(S107)、タスク完了率(Tk)が閾値(α)を超えるかを判定する(S108)。
ここで、タスク完了率(Tk)が閾値(α)以下の場合(S108:No)、予測部16は、S105に戻って次のMap処理タスクの完了を待ち、以降の処理を繰り返す。一方、予測部16は、タスク完了率(Tk)が閾値(α)を超える場合(S108:Yes)、終了済みのMap処理タスクの完了結果から各Reduce処理タスクの処理データ量を予測する(S109)。
そして、予測部16は、推定した各Reduce処理タスクの処理データ量から、処理データ量が最も多いReduce処理タスクを特定する(S110)。続いて、予測部16は、特定したReduce処理タスクの処理データ量(Di)が閾値(β)を超えるかを判定する(S111)。
ここで、予測部16は、Reduce処理タスクの処理データ量(Di)が閾値(β)未満の場合(S111:No)、ハッシュ関数によるReduce処理タスクの割当を維持する(S112)。すなわち、予測部16は、Reduce処理タスクの再割当を実行しない。
一方、予測部16は、Reduce処理タスクの処理データ量(Di)が閾値(β)を超える場合(S111:Yes)、該当Reduce処理タスクを、高スペックのスレーブサーバに割当てる(S113)。そして、予測部16は、割当結果にしたがって、クラスタプロファイル12cおよびタスクリストDB12bを更新する(S114)。すなわち、予測部16は、Reduce処理タスクの再割当を実行する。
[スレーブサーバの処理]
図13は、実施例2に係るスレーブサーバが実行する処理の流れを示すフローチャートである。図13に示すように、スレーブサーバ30は、マスタサーバ10に、ハートビートでタスク要求を送信する(S201)。
続いて、スレーブサーバ30は、タスク要求の応答としてジョブ情報とタスク情報を取得し(S202)、取得したタスク情報がMap処理タスクの情報か否かを判定する(S203)。
そして、スレーブサーバ30のMap処理部34は、取得したタスク情報がMap処理タスクの情報であると判定された場合(S203:Map)、入力データを読み込み(S204)、Map処理タスクを起動する(S205)。
例えば、Map処理部34は、取得したMap処理タスクの情報における「データのあるスレーブID」で特定されるスレーブサーバ30から入力データを取得し、取得したMap処理タスクの情報によって割当てられたMap処理タスクを起動する。
その後、Map処理部34は、一時ファイルDB32aに、Reduce処理タスクごとに分けて処理結果を保存し(S206)、Map処理タスクが終了するまで待機する(S207)。そして、Map結果送信部35は、ハートビートを利用してMap処理タスクの完了とReduce向けデータ量をマスタサーバ10に送信する(S208)。
一方、Reduce処理部37が取得したタスク情報が、Reduce処理タスクの情報であると判定された場合(S203:Reduce)、Shuffle処理部36は、各スレーブサーバ30からMap処理結果を取得して、Shuffle処理を実行する(S209)。
Reduce処理部37は、取得したReduce処理タスクを実行して(S210)、タスクが終了するまで待機し(S211)、タスクが完了すると、ハートビート等で完了通知をマスタサーバ10に送信する(S212)。
このように、マスタサーバ10は、Map処理の進行状況を監視し、すべてのMap処理の完了を待たずに、一部のMap処理の完了結果からデータが集中しそうなReduceを予測する。そして、マスタサーバ10は、ある特定のスレーブサーバ30にキーあるいはデータが集中すると予想される場合、マシンパワーが高いスレーブサーバ30へデータを転送することで回避する。
一般的に、Map処理の完了と転送を待っていると、ハッシュ関数に基づいて、ある特定のスレーブサーバ30のReduce処理にデータが集中して割当てられる場合がある。しかし、マスタサーバ10は、一部のMap処理の結果からReduce処理の処理量を予測することで、スペックの低いスレーブサーバの処理量が増大することを回避する。
つまり、マスタサーバ10は、予めMap処理後の出力結果の容量を監視する仕組みを取り入れることによって、マシンパワーが高いスレーブサーバ30に、処理量の多いReduce処理を割り振る。この結果、スレーブサーバ30のマシンリソースを最大限に利用でき、全体の処理時間を短縮することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
[タスク完了率]
図14は、タスクの進行イメージと閾値との関係を説明する図である。図14に示すように、MapReduceは、Map処理、Shuffle&Sort処理、Reduce処理の3つのフェーズによって構成される。
Map処理は、割り与えられたスレーブサーバ30上で各々のタイミングで実行される。同様に、Shuffle&Sort処理も割り与えられたスレーブサーバ30上で各々のタイミングで実行される。しかし、Reduce処理は、全Map処理および全Shuffle&Sort処理の完了を待ってから、各スレーブサーバ30が同時に実行を開始する。そのため、MapReduceは、一つのジョブを複数のタスクへ分けて、さらにこのタスクを並列処理するため、ジョブネットのように途中でショブ間において処理の待ち合わせの過程がないことが特長である。
マスタサーバ10は、一部のMap処理タスクの完了結果をどの程度とするかは、任意に設定することができる。例えば、図14の例では、6タスクの中で3タスクの完了を待つ場合(A)、タスク完了率は50%であり、すべてのMap処理タスクが完了する場合(C)は、タスク完了率は100%となる。
マスタサーバ10は、タスク完了率が100%に近いほど予想精度が高まるが、再割当を開始するタイミングが遅くなるので、Reduce処理が開始される可能性もある。一方、マスタサーバ10は、タスク完了率が0%に近いほど予想精度は低下するが、再割当を開始するタイミングが早くなるので、Reduce処理前に確実に再割当を実行できる。このため、マスタサーバ10は、システム、ジョブ数、ジョブ種別に適したタスク完了率の閾値を、0%から100%の範囲で任意に設定することができる。
[Map処理タスクの選択]
マスタサーバ10は、実行が完了した一部のMap処理タスクの中から、Reduce処理の処理データ量の予測に使用するMap処理タスクを任意の手法で選択することができる。一例を挙げると、マスタサーバ10は、実行が完了した順に、所定数のMap処理タスクを選択することもできる。また、マスタサーバ10は、実行が完了したタスクの中から、ランダムに選択することもでき、特定の関数等によって算出された順番で選択することもできる。
また、マスタサーバ10は、データ転送時間が長いタスクから順に選択することもできる。具体的には、マスタサーバ10は、各スレーブサーバ間の通信速度と、転送対象のMap処理のデータ量とから、Map処理結果の転送時間を算出する。そして、マスタサーバ10は、転送時間が長い順に所定数のMap処理結果を選択することもできる。
つまり、マスタサーバ10は、処理完了後のMap処理結果について、スレーブサーバ間の通信速度とデータ転送量とから、Map処理結果の転送元スレーブサーバと転送先スレーブサーバとのデータ転送時間を算出する。そして、マスタサーバ10は、データ転送時間が閾値以上となるMap処理タスクを用いて、Reduce処理の処理データ量を予測することができる。
[サーバリソース]
実施例2では、マスタサーバ10は、スペックの高いスレーブサーバ30に、処理量の多いReduce処理を割当てる例を説明したが、これに限定されるものではない。例えば、マスタサーバ10は、空きリソースが多いスレーブサーバ30に、処理量の多いReduce処理を割当てることもできる。
具体的には、マスタサーバ10は、各スレーブサーバ30からCPU使用率、メモリ使用率、ハードディスクのスループットを定期的に取得して平均値を算出する。そして、マスタサーバ10は、予測開始時点で空きリソースが多いスレーブサーバ30を、再割当先として選択することができる。なお、マスタサーバ10は、平均値ではなく、予測開始時点での空きリソースが多いスレーブサーバ30を再割当先として選択することができる。
[割当]
例えば、マスタサーバ10は、データ量が多いReduce処理の数よりも高スペックなスレーブサーバの数の方が多い場合、各Reduce処理を各スレーブサーバに割当てるとともに、データ量が少ないReduce処理も高スペックなスレーブサーバに割当てることができる。一方、マスタサーバ10は、データ量が多いReduce処理の数よりも高スペックなスレーブサーバの数の方が少ない場合、最もデータ量が多い各Reduce処理を高スペックなスレーブサーバに割当て、それ以外は低スペックなスレーブサーバに割当てる。
[システム]
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[ハードウェア]
次に、各サーバのハードウェア構成例を説明するが、各サーバは同様の構成を有するので、ここでは一例を説明する。図15は、サーバのハードウェア構成例を示す図である。図15に示すように、サーバ100は、通信インタフェース101、メモリ102、複数のHDD(ハードディスクドライブ)103、プロセッサ装置104を有する。
通信インタフェース101は、図2や図7に示した通信制御部に該当し、例えばネットワークインタフェースカードなどである。複数のHDD103は、図2や図7に示した機能を動作させるプログラムやDB等を記憶する。
プロセッサ装置104が有する複数のCPU105は、図2や図7に示した各処理部と同様の処理を実行するプログラムをHDD103等から読み出してメモリ102に展開することで、図2や図7等で説明した各機能を実行するプロセスを動作させる。すなわち、このプロセスは、マスタサーバ10が有するMap割当部14、Reduce割当部15、予測部16、再割当部17と同様の機能を実行する。また、このプロセスは、スレーブサーバ30が有するMap処理部34、Map結果送信部35、Shuffle処理部36、Reduce処理部37と同様の機能を実行する。
このようにサーバ100は、プログラムを読み出して実行することで、タスク割当方法またはタスク実行方法を実行する情報処理装置として動作する。また、サーバ100は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、サーバ100によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
10 マスタサーバ
11 通信制御部
12 記憶部
12a ジョブリストDB
12b タスクリストDB
12c クラスタプロファイルDB
13 制御部
14 Map割当部
15 Reduce割当部
16 予測部
17 再割当部
30 スレーブサーバ
31 通信制御部
32 記憶部
32a 一時ファイルDB
32b 入出力ファイルDB
33 制御部
34 Map処理部
35 Map結果送信部
36 Shuffle処理部
37 Reduce処理部

Claims (7)

  1. コンピュータに、
    入力データを分割して得られた第1の分割データ群に含まれる各分割データを、Map処理を行う複数のノードに分配し、
    前記第1の分割データ群のうちの一部の分割データ群についてのMap処理が完了すると、前記第1の分割データ群の全てのMap処理の完了後に実行されるReduce処理を行う複数のノードへの分配データの生成ルールを、前記一部の分割データ群についてのMap処理結果について適用して、分配データの各データ量を推定し、
    推定した前記各データ量に基づいて、少なくとも一部の分配データについての割り当て先ノードの選択制御を前記第1の分割データ群の全てのMap処理の完了前に開始する
    処理を実行させることを特徴とするタスク割当プログラム。
  2. 前記推定する処理は、完了したMap処理のうち、完了した順に、所定数のMap処理結果を選択し、選択した前記所定数のMap処理の処理結果から前記分配データの各データ量を推定することを特徴とする請求項1に記載のタスク割当プログラム。
  3. 前記推定する処理は、前記複数のノード間の通信速度と、推定した前記各データ量とに基づいて、前記分配データの転送時間が長い順に所定数のMap処理結果を選択し、選択した前記所定数のMap処理の処理結果から前記分配データの各データ量を推定することを特徴とする請求項1に記載のタスク割当プログラム。
  4. 前記開始する処理は、推定した前記各データ量のうち閾値を超えるデータ量を有する前記分配データを、前記複数のノードのうちプロセッサ数、メモリ容量、ハードディスク容量の少なくとも1つから特定されるハードウェアスペックが閾値を超えるノードに割当てることを特徴とする請求項1に記載のタスク割当プログラム。
  5. 前記開始する処理は、推定した前記各データ量のうち閾値を超えるデータ量を有する前記分配データを、前記複数のノードのうちプロセッサ使用率、メモリ使用率、ハードディスクのスループットの少なくとも1つから特定される空リソース量が閾値を超えるノードに割当てることを特徴とする請求項1に記載のタスク割当プログラム。
  6. コンピュータが、
    入力データを分割して得られた第1の分割データ群に含まれる各分割データを、Map処理を行う複数のノードに分配し、
    前記第1の分割データ群のうちの一部の分割データ群についてのMap処理が完了すると、前記第1の分割データ群の全てのMap処理の完了後に実行されるReduce処理を行う複数のノードへの分配データの生成ルールを、前記一部の分割データ群についてのMap処理結果について適用して、分配データの各データ量を推定し、
    推定した前記各データ量に基づいて、少なくとも一部の分配データについての割り当て先ノードの選択制御を前記第1の分割データ群の全てのMap処理の完了前に開始する
    処理を含むことを特徴とするタスク割当方法。
  7. 入力データを分割して得られた第1の分割データ群に含まれる各分割データを、Map処理を行う複数のノードに分配する分配部と、
    前記第1の分割データ群のうちの一部の分割データ群についてのMap処理が完了すると、前記第1の分割データ群の全てのMap処理の完了後に実行されるReduce処理を行う複数のノードへの分配データの生成ルールを、前記一部の分割データ群についてのMap処理結果について適用して、分配データの各データ量を推定する推定部と、
    推定した前記各データ量に基づいて、少なくとも一部の分配データについての割り当て先ノードの選択制御を前記第1の分割データ群の全てのMap処理の完了前に開始する選択実行部と
    有することを特徴とするタスク割当装置。
JP2014122815A 2014-06-13 2014-06-13 タスク割当プログラム、タスク割当方法およびタスク割当装置 Withdrawn JP2016004328A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014122815A JP2016004328A (ja) 2014-06-13 2014-06-13 タスク割当プログラム、タスク割当方法およびタスク割当装置
US14/724,991 US20150365474A1 (en) 2014-06-13 2015-05-29 Computer-readable recording medium, task assignment method, and task assignment apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014122815A JP2016004328A (ja) 2014-06-13 2014-06-13 タスク割当プログラム、タスク割当方法およびタスク割当装置

Publications (1)

Publication Number Publication Date
JP2016004328A true JP2016004328A (ja) 2016-01-12

Family

ID=54837182

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014122815A Withdrawn JP2016004328A (ja) 2014-06-13 2014-06-13 タスク割当プログラム、タスク割当方法およびタスク割当装置

Country Status (2)

Country Link
US (1) US20150365474A1 (ja)
JP (1) JP2016004328A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10360065B2 (en) * 2016-09-08 2019-07-23 International Business Machines Corporation Smart reduce task scheduler
US10778660B1 (en) * 2016-09-21 2020-09-15 Amazon Technologies, Inc. Managing multiple producer consumer—systems with non-identical idempotency keys
CN109636093A (zh) * 2018-10-29 2019-04-16 平安医疗健康管理股份有限公司 任务分配方法、装置、设备及存储介质
JP2023000031A (ja) * 2021-06-17 2023-01-04 富士通株式会社 データ配置プログラム、プロセッサ、及びデータ配置方法
CN117290062A (zh) * 2022-06-25 2023-12-26 华为技术有限公司 数据处理方法、装置、设备和系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012118669A (ja) * 2010-11-30 2012-06-21 Ntt Docomo Inc 負荷分散処理システム及び負荷分散処理方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007264794A (ja) * 2006-03-27 2007-10-11 Fujitsu Ltd 並列分散処理プログラム及び並列分散処理システム
US9268815B2 (en) * 2009-08-20 2016-02-23 Hewlett Packard Enterprise Development Lp Map-reduce and parallel processing in databases
US8555265B2 (en) * 2010-05-04 2013-10-08 Google Inc. Parallel processing of data
US8799916B2 (en) * 2011-02-02 2014-08-05 Hewlett-Packard Development Company, L. P. Determining an allocation of resources for a job
WO2012105969A1 (en) * 2011-02-02 2012-08-09 Hewlett-Packard Development Company, L.P. Estimating a performance characteristic of a job using a performance model
WO2012144985A1 (en) * 2011-04-19 2012-10-26 Hewlett-Packard Development Company, L.P. Scheduling map and reduce tasks of jobs for execution according to performance goals
US9213584B2 (en) * 2011-05-11 2015-12-15 Hewlett Packard Enterprise Development Lp Varying a characteristic of a job profile relating to map and reduce tasks according to a data size
US9244751B2 (en) * 2011-05-31 2016-01-26 Hewlett Packard Enterprise Development Lp Estimating a performance parameter of a job having map and reduce tasks after a failure
US9128763B2 (en) * 2011-08-23 2015-09-08 Infosys Limited System and method for job scheduling optimization
US9201690B2 (en) * 2011-10-21 2015-12-01 International Business Machines Corporation Resource aware scheduling in a distributed computing environment
US8732720B2 (en) * 2011-12-22 2014-05-20 Hewlett-Packard Development Company, L.P. Job scheduling based on map stage and reduce stage duration
US9367601B2 (en) * 2012-03-26 2016-06-14 Duke University Cost-based optimization of configuration parameters and cluster sizing for hadoop
US20130290972A1 (en) * 2012-04-27 2013-10-31 Ludmila Cherkasova Workload manager for mapreduce environments
JP5853866B2 (ja) * 2012-06-05 2016-02-09 富士通株式会社 割当プログラム、割当装置、および割当方法
US20130339972A1 (en) * 2012-06-18 2013-12-19 Zhuoyao Zhang Determining an allocation of resources to a program having concurrent jobs
US9268716B2 (en) * 2012-10-19 2016-02-23 Yahoo! Inc. Writing data from hadoop to off grid storage
US9471390B2 (en) * 2013-01-16 2016-10-18 International Business Machines Corporation Scheduling mapreduce jobs in a cluster of dynamically available servers
US9152469B2 (en) * 2013-01-28 2015-10-06 Hewlett-Packard Development Company, L.P. Optimizing execution and resource usage in large scale computing
CN104035747B (zh) * 2013-03-07 2017-12-19 伊姆西公司 用于并行计算的方法和装置
US20140359624A1 (en) * 2013-05-30 2014-12-04 Hewlett-Packard Development Company, L.P. Determining a completion time of a job in a distributed network environment
US9612876B2 (en) * 2013-12-19 2017-04-04 Xerox Corporation Method and apparatus for estimating a completion time for mapreduce jobs
US9910860B2 (en) * 2014-02-06 2018-03-06 International Business Machines Corporation Split elimination in MapReduce systems
US9582189B2 (en) * 2014-04-25 2017-02-28 International Business Machines Corporation Dynamic tuning of memory in MapReduce systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012118669A (ja) * 2010-11-30 2012-06-21 Ntt Docomo Inc 負荷分散処理システム及び負荷分散処理方法

Also Published As

Publication number Publication date
US20150365474A1 (en) 2015-12-17

Similar Documents

Publication Publication Date Title
JP5664098B2 (ja) 複合イベント分散装置、複合イベント分散方法および複合イベント分散プログラム
JP6519111B2 (ja) データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
JP6233413B2 (ja) タスク割り当て判定装置、制御方法、及びプログラム
Ajit et al. VM level load balancing in cloud environment
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
JP6881575B2 (ja) 資源割当システム、管理装置、方法およびプログラム
JP2016004328A (ja) タスク割当プログラム、タスク割当方法およびタスク割当装置
JP2017037492A (ja) 分散処理プログラム、分散処理方法および分散処理装置
WO2012105056A1 (ja) 並列分散処理システムのデータ転送制御方法、並列分散処理システム及び記憶媒体
KR20110080735A (ko) 컴퓨팅 시스템 및 방법
Garala et al. A performance analysis of load Balancing algorithms in Cloud environment
US10164904B2 (en) Network bandwidth sharing in a distributed computing system
KR20140117905A (ko) 클라우드 서비스의 가상자원 할당을 위한 퍼지 로직 기반의 자원평가 장치 및 방법
Kherani et al. Load balancing in cloud computing
Hu et al. Job scheduling without prior information in big data processing systems
JP6357807B2 (ja) タスク割当プログラム、タスク実行プログラム、マスタサーバ、スレーブサーバおよびタスク割当方法
JP6010975B2 (ja) ジョブ管理装置、ジョブ管理方法、及びプログラム
Khetan et al. A novel survey on load balancing in cloud computing
KR101595967B1 (ko) 데드라인 부여된 작업의 분산 처리 성능 향상을 위한 맵리듀스 스케쥴링 시스템 및 방법
Sakthivelmurugan et al. Enhanced load balancing technique in public cloud
Liu et al. Computing load aware and long-view load balancing for cluster storage systems
KR101639947B1 (ko) 하둡 선점 데드라인 제약 스케줄링 방법 및 그 방법을 수행하는 컴퓨터프로그램과, 그 프로그램이 기록된 매체
Sekaran et al. SIQ algorithm for efficient load balancing in cloud
JP5526748B2 (ja) パケット処理装置、パケット振り分け装置、制御プログラム及びパケット分散方法
Liu et al. Towards long-view computing load balancing in cluster storage systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180131

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20180213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180220