JP2017037492A - 分散処理プログラム、分散処理方法および分散処理装置 - Google Patents

分散処理プログラム、分散処理方法および分散処理装置 Download PDF

Info

Publication number
JP2017037492A
JP2017037492A JP2015158537A JP2015158537A JP2017037492A JP 2017037492 A JP2017037492 A JP 2017037492A JP 2015158537 A JP2015158537 A JP 2015158537A JP 2015158537 A JP2015158537 A JP 2015158537A JP 2017037492 A JP2017037492 A JP 2017037492A
Authority
JP
Japan
Prior art keywords
processing
data
distributed
reduce
map
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
JP2015158537A
Other languages
English (en)
Inventor
信貴 今村
Nobutaka Imamura
信貴 今村
敏章 佐伯
Toshiaki Saeki
敏章 佐伯
高橋 秀和
Hidekazu Takahashi
秀和 高橋
美穂 村田
Miho Murata
美穂 村田
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 JP2015158537A priority Critical patent/JP2017037492A/ja
Priority to US15/220,560 priority patent/US20170048352A1/en
Publication of JP2017037492A publication Critical patent/JP2017037492A/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/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning

Landscapes

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

Abstract

【課題】処理時間の長期化を抑制することを課題とする。
【解決手段】スレーブノードは、複数のノードに分散処理される処理対象データの部位ごとのデータ分布であるデータ分布情報を取得する。そして、スレーブノードは、処理対象データが分割された分割データに対する分散処理の処理状況を監視する。その後、監視するスレーブノードは、分散処理の処理状況とデータ分布情報とに基づいて、処理対象とする分割データの処理順序を変更する。
【選択図】図11

Description

本発明は、分散処理プログラム、分散処理方法および分散処理装置に関する。
クラウドコンピューティングの普及に伴い、クラウド上に保存される大量のデータを複数のサーバで分散して処理を実行する分散処理システムが利用されている。例えば、分散処理システムとしては、HDFS(Hadoop Distributed File System)とMapReduce処理とを基盤技術とするHadoop(登録商標)が知られている。
HDFSは、複数のサーバにデータを分散格納するファイルシステムである。MapReduceは、HDFS上のデータをタスクと呼ばれる単位で分散処理する仕組みであり、Map処理、Shuffleソート処理、Reduce処理を実行する。
MapReduceによる分散処理においては、複数のスレーブノードにMap処理やReduce処理のタスクが割り当てられて、各スレーブノードで分散して処理が実行される。例えば、マスタノードのジョブトラッカーが、複数のスレーブノードに対してMap処理のタスクを割り当てて、各スレーブノードのタスクトラッカーが、割り当てられたMapタスクを実行する。
また、各スレーブノードで実行されるPatitionerは、Mapタスクの中で、キーのハッシュ値を計算し、その計算で得られた値によって振分先のReduceタスクを決定する。このようにスレーブノードに対するReduceタスクの割り当ては、ハッシュ関数等を用いることにより均等に行われ、最も処理の遅いスレーブノードの処理完了時間がジョブ全体の完了時間となる。
近年では、各スレーブノードに割り当てるReduceタスクを調整する技術として、例えば、入力データのサンプリング等によりキーの出現数を調査し、処理量の異なるReduceタスクを事前に割り当てる技術が知られている。
特開2014−010500号公報 特開2010−271931号公報 特開2010−244470号公報
しかしながら、上記技術では、各ノードの最終的に割り当てられるデータ量を均等としたとしても、ある瞬間においては処理が偏ることがあり、結果として処理全体の長期化に繋がる。
例えば、MapReduce処理においては、キーに応じて各スレーブノードにReduceタスクを割当てるが、入力データの部位によりキーの出願分布が異なる場合がある。この場合、全体としては各スレーブノードに同じデータ量が割与えられたとしても、ある瞬間では特定のスレーブノードにデータ量が偏るので、特定のスレーブノードの処理負荷が高くなり、処理速度が低下する。また、各スレーブノードを仮想マシンで実現する場合、他の仮想マシンがプロセッサ資源やネットワークを使用することで、Reduce処理を実行する仮想マシンの処理速度が低下する場合がある。これらの結果として、各スレーブノードに同じデータ量が割与えられたにも関わらす、特定のスレーブノードの処理完了時間が遅くなり、ジョブ全体の完了時間も遅くなる。
1つの側面では、処理時間の長期化を抑制することができる分散処理プログラム、分散処理方法および分散処理装置を提供することを目的とする。
第1の案では、分散処理プログラムは、コンピュータに、複数のノードに分散処理される処理対象データの部位ごとのデータ分布であるデータ分布情報を取得する処理を実行させる。分散処理プログラムは、コンピュータに、前記処理対象データが分割された分割データに対する前記分散処理の処理状況を監視する処理を実行させる。分散処理プログラムは、コンピュータに、前記分散処理の処理状況と前記データ分布情報とに基づいて、処理対象とする前記分割データの処理順序を変更する処理を実行させる。
一実施形態によれば、処理時間の長期化を抑制することができる。
図1は、実施例1に係る分散処理システムの全体構成例を示す図である。 図2は、Hadoopの仕組みを説明する図である。 図3は、Map処理を説明する図である。 図4は、Shuffle処理を説明する図である。 図5は、Reduce処理を説明する図である。 図6は、マスタノードの機能構成を示す機能ブロック図である。 図7は、ジョブリストDBに記憶される情報の例を示す図である。 図8は、タスクリストDBに記憶される情報の例を示す図である。 図9は、推定結果DBに記憶される情報の例を示す図である。 図10は、推定処理を説明する図である。 図11は、スレーブノードの機能構成を示す機能ブロック図である。 図12は、割当確定テーブルに記憶される情報の例を示す図である。 図13は、割当変更の例を説明する図である。 図14は、分散処理システムが実行する処理の流れを示すフローチャートである。 図15は、処理の長期化を説明する図である。 図16は、閾値の変形例を説明する図である。 図17は、装置のハードウェア構成例を示す図である。
以下に、本願の開示する分散処理プログラム、分散処理方法および分散処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
[全体構成]
図1は、実施例1に係る分散処理システムの全体構成例を示す図である。図1に示すように、この分散処理システムは、マスタノード30、複数のスレーブノード50がネットワーク1を介して互いに通信可能に接続される。この分散処理システムでは、Hadoop(登録商標)などの分散処理フレームワークを使用した分散処理アプリケーションが各サーバで実行されており、データ基盤としてHDFSなどを使用する。
マスタノード30は、分散処理システムを統括的に管理するサーバであり、MapReduce処理におけるジョブトラッカーとして機能する。例えば、マスタノード30は、メタ情報などを用いて、どのデータがいずれのスレーブノード50に格納されているのかを特定する。また、マスタノード30は、各スレーブノード50に割当てるタスクやジョブなどを管理し、Map処理やReduce処理などのタスクをスレーブノード50に割当てる。
各スレーブノード50は、Map処理およびReduce処理を実行するサーバであり、MapReduce処理におけるデータノードやタスクトラッカー、ジョブクライアント、Mapper、Reducerとして機能する。また、各スレーブノード50は、マスタノード30によって割り当てられたMapタスクを実行し、Mapタスクの中でキーのハッシュ値を計算し、その計算で得られた値によって振分先のReduceタスクを決定する。その後、各スレーブノード50は、マスタノード30に割り当てられたReduceタスクを実行する。
ここで、各スレーブノード50が実行するMapタスク、Reduceタスクについて説明する。図2は、Hadoopの仕組みを説明する図である。
図2に示すように、MapReduce処理は、MapタスクとReduceタスクから構成されMapタスクは、Map処理から構成され、ReduceタスクはShuffle処理とReduce処理とから構成される。マスタノード30は、MapタスクキューとReduceタスクキューを有し、スレーブノード50に対して、MapタスクやReduceタスクの割り当てを行う。
各スレーブノード50は、少なくとも1つのMapスロットと少なくとも1つのReduceスロットを有する。各スレーブノード50は、1つのMapスロット内でMapアプリとPartitonerを実行する。Mapアプリは、ユーザが所望する処理を実行するアプリケーションであり、Partitonerは、Mapアプリの実行結果によって振分先のReduceタスクを決定する。
さらに、各スレーブノード50は、1つのReduceスロット内でSort処理とReduceアプリとを実行する。Sort処理は、割り当てられたReduceタスクに使用するデータを各スレーブノード50から取得してソートし、ソートした結果をReduceアプリに入力する。Reduceアプリは、ユーザが所望する処理を実行するアプリケーションである。このようにして各スレーブノード50が実行した結果を収集して出力結果が得られる。
ここで、Map処理、Shffule処理、Reduce処理の一例を説明する。なお、ここで示す処理や入力データはあくまで一例であり、処理を限定するものではない。
(Map処理)
図3は、Map処理を説明する図である。図3に示すように、各スレーブノード50は、入力データとして「Hello Apple!」と「Apple is red」を受信し、それぞれの入力データに対してMap処理を実行して、「キー、Value」のペアを出力する。
図3の例では、スレーブノード50は、「Hello Apple!」に対してMap処理を実行して、入力データの各要素の数を計数し、要素を「キー」、計数結果を「Value」とする「キー、Value」のペアを出力する。具体的には、スレーブノード50は、入力データ「Hello Apple!」から「Hello、1」、「Apple、1」、「!、1」を生成する。同様に、スレーブノード50は、入力データ「Apple is red」から「Apple、1」、「is、1」、「red、1」を生成する。
(Shuffle処理)
図4は、Shuffle処理を説明する図である。図4に示すように、各スレーブノード50は、各スレーブノードからMap処理結果を取得してShuffle処理を実行する。
図4の例では、スレーブノード(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処理)
次に、スレーブノード50が実行するReduce処理について説明する。図5は、Reduce処理を説明する図である。図5に示すように、各スレーブノード50は、各スレーブノードの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」を生成する。
このような分散処理システムにおいて、各スレーブノード50は、MapReduce処理の各Reduce処理に割り当てられるキーについて、各スレーブノード50に分散処理される処理対象データの部位ごとの出現数を示すデータ分布状況を取得する。そして、各スレーブノード50は、各Reduce処理に転送されるMap処理の処理結果が格納される、各Reduce処理の各バッファのデータ量を監視する。その後、各スレーブノード50は、バッファの記憶量が少ないReduceに割り当てられるキーの出現数が多い部位の分割データを優先的にMap処理に配信するように、マスタノード30に要求する。
つまり、各スレーブノード50は、入力データの部位毎のキー分布状況に基づいて、負荷が小さいReduceが担当するキーを多く含む部位を優先的にMap処理することができる。この結果、空いているReduce処理をなくして、Reduce処理を均等化し、処理時間の長期化を抑制することができる。
[マスタノードの機能構成]
図6は、マスタノードの機能構成を示す機能ブロック図である。図6に示すように、マスタノード30は、通信制御部31、記憶部32、制御部40を有する。
通信制御部31は、各スレーブノード50との通信を制御する処理部であり、例えばネットワークインタフェースカードなどである。この通信制御部31は、各スレーブノード50に対して、MapタスクやReduceタスクの割当状況を送信する。また、通信制御部31は、各スレーブノード50から、MapタスクやReduceタスクの処理結果を受信する。また、通信制御部31は、各スレーブノード50から、Mapタスクへ入力するデータの割当変更要求などを受信する。
記憶部32は、制御部40が実行するプログラムや各種データを記憶する記憶部であり、例えばハードディスクやメモリなどである。この記憶部32は、ジョブリストDB33、タスクリストDB34、推定結果DB35を記憶する。また、記憶部32は、MapReduce処理で使用される一般的な各種情報を記憶する。また、記憶部32は、MapReduce処理対象の入力データを記憶する。
ジョブリストDB33は、分散処理対象のジョブ情報を記憶するデータベースである。図7は、ジョブリストDBに記憶される情報の例を示す図である。図7に示すように、ジョブリストDB33は、「JobID、総Mapタスク数、総Reduceタスク数」を対応付けて記憶する。
ここで記憶される「JobID」は、ジョブを識別する識別子である。「総Mapタスク数」は、ジョブに含まれるMap処理タスクの総数である。「総Reduceタスク数」は、ジョブに含まれるReduce処理タスクの総数である。なお、「JobID、総Mapタスク数、総Reduceタスク数」は、管理者等によって設定更新される。
図7の例では、「JobID」が「Job001」のジョブは、6つのMap処理タスクと4つのReduce処理タスクで構成されることを示す。同様に、「JobID」が「Job002」のジョブは、4つのMap処理タスクと2つのReduce処理タスクで構成されることを示す。
タスクリストDB34は、Map処理タスクやReduce処理タスクに関する情報を記憶するデータベースである。図8は、タスクリストDBに記憶される情報の例を示す図である。図8に示すように、タスクリストDB34は、「JobID、TaskID、種別、状態、割り当てスレーブID、必要スロット数」などを記憶する。
ここで記憶される「JobID」は、ジョブを識別する識別子である。「TaskID」は、タスクを識別する識別子である。「種別」は、Map処理やReduce処理を示す情報である。「状態」は、該当タスクが処理完了(Done)状態、実行中(Running)、割り当て前(Not assigned)のいずれであるかを示す。「割り当てスレーブID」は、タスクが割当てられたスレーブノードを識別する識別子であり、例えばホスト名などである。「必要スロット数」は、タスクを実行するのに使用するスロット数である。
図8の場合、「JobID」が「Job001」であるジョブで、1スロットを用いるMap処理タスク「Map000」が「Node1」のスレーブノード50に割当てられる。そして、この「Node1」のスレーブノード50は、Map処理を実行し、実行が完了していることを示す。また、「JobID」が「Job001」であるジョブで、1スロットを用いて実行されるReduce処理タスク「R2」が、Partionerによる割り当て前であることを示す。
なお、JobID、TaskID、種別については、ジョブリストDB33に記憶される情報にしたがって生成される。データのあるスレーブIDは、メタ情報等により特定することができる。状態は、タスクの割り当て状況やスレーブノード50からの処理結果等によって更新される。割当スレーブIDは、タスクの割当時点で更新される。必要スロット数は、1タスクについて1スロットなどのように予め指定することができる。なお、これらの情報以外にも、処理の実行状況に基づいて、例えばデータが格納されるスレーブノードの情報や各タスクの処理データ量などを記憶させることもできる。
推定結果DB35は、MapReduce処理の各Reduce処理に割り当てられるキーについて、分散処理される処理対象の部位ごとの出現数を示すデータ分布状況の推定結果を記憶するデータベースである。つまり、推定結果DB35は、入力データの各部位におけるキーの出現数の推定結果を記憶する。
図9は、推定結果DBに記憶される情報の例を示す図である。図9に示すように、推定結果DB35は、Reducerごとに、入力データの各領域におけるキーの出現数を示すヒストグラムを記憶する。すなわち、推定結果DB35は、各Reducerについて、領域ごとに発生するデータ転送量を記憶する。なお、Reducerは、Reduceタスクを実行するアプリケーションの一例であり、ここでは一例として、各スレーブノードが1つのReducerであり、ReducerとReduceタスクとが対応付けられている例で説明する。また、これに限定されず、1つのReducerが複数のReduceタスクを実行することもできる。
一例を挙げると、推定結果DB35は、キー「AAA」が割与えられたReducer「ID=R1」について、入力データの領域1における出現数、領域2における出現数、領域3における出現数、領域4における出現数を記憶する。なお、ここでは、ヒストグラムで記憶する例を説明したが、これに限定されるものではなく、例えばテーブル形式で記憶することもできる。
制御部40は、マスタノード30全体の処理を司る処理部であり、推定部41、Map割当部42、Reduce割当部43、割当変更部44を有する。制御部40は、例えばプロセッサなどの電子回路であり、推定部41、Map割当部42、Reduce割当部43、割当変更部44は、電子回路の一例や制御部40が実行するプロセスの一例である。
推定部41は、MapReduce処理の各Reduce処理に割り当てられるキーについて、分散処理される処理対象の部位ごとの出現数を示すデータ分布状況を推定する処理部である。具体的には、推定部41は、入力データの各部位におけるキーの出現数を計数する。そして、推定部41は、各キーの出現数を用いて、各Reducer対して領域ごとに発生するデータ転送量を推定する。その後、推定部41は、推定結果を推定結果DB35に格納するとともに、各スレーブノード50に配信する。
図10は、推定処理を説明する図である。図10に示すように、推定部41は、入力データを4つの領域に分けて、各領域について、キー「AAA」、キー「BBB」、キー「CCC」・・・などの各キーの出現数を計数する。そして、推定部41は、キー「AAA」が割与えられたReducer「ID=R1」について、入力データの領域1における出現数、領域2における出現数、領域3における出現数、領域4における出現数を対応付ける。同様に、推定部41は、キー「BBB」が割与えられたReducer「R2」、キー「CCC」が割与えられたReducer「R3」、キー「DDD」が割与えられたReducer「R4」について、入力データの各領域における出現数を対応付ける。このようにして、推定部41は、各Mapperから各Reducerに対して、入力データのどの領域ではどのくらいのデータ転送が発生するかを推定する。
Map割当部42は、各ジョブにおけるMap処理のタスクであるMapタスクをスレーブノード50のMapスロットに割当てる処理部である。そして、Map割当部42は、図8に示した「割り当てスレーブID」や「状態」等を更新する。
一例を挙げると、Map割当部42は、スレーブノード50等からMapタスクの割当要求を受信した場合に、タスクリストDB34を参照して「状態」が「Not assigned」のMapタスクを特定する。続いて、Map割当部42は、任意の方法でMapタスクを選び、割当対象のMapタスクとする。その後、Map割当部42は、割当要求を送信したスレーブノード50のIDを、割当対象のMapタスクの「割当スレーブID」に格納する。
その後、Map割当部42は、特定した割当先のスレーブノード50に、TaskIDや必要スロット数等を通知して、Mapタスクを割当てる。また、Map割当部42は、割当てたMapタスクの「状態」を「Not assigned」から「Running」に更新する。
Reduce割当部43は、Reduceタスクをスレーブノード50のReduceスロットに割り当てる処理部である。具体的には、Reduce割当部43は、予め指定されるReduceタスクの割当ルール等にしたがって、各ReduceタスクをReduceスロットに割り当てる。割り当てに伴って、Reduce割当部43は、タスクリストDB34を随時更新する。つまり、Reduce割当部43は、Reduceタスク(ReduceID)とスレーブノード50(Reducer)との対応付けを実行し、ハッシュ値ではなく主キーによる割り当てを実行する。
一例を挙げると、Reduce割当部43は、Reduceタスクを特定するReduceIDが小さい順にReduceタスクをReduceスロットに割り当てる。このとき、例えば、Reduce割当部43は、任意のReduceスロットに割り当ててもよく、Map処理が終わっているReduceスロットを優先して割当ててもよい。なお、Reduce割当部43は、Mapタスクが全体の所定値(例えば80%)以上終了すると、各スレーブノード50にReduceタスクの処理開始を指示する。
割当変更部44は、各スレーブノードに対して、入力データの割当や割当の変更を実行する処理部である。つまり、割当変更部44は、各Mapperに対する入力データの割当を実行する。例えば、割当変更部44は、タスクリストDB34を参照して、Mapタスクが割り当てられているスレーブノード50を特定する。そして、割当変更部44は、特定した各スレーブノード50に、処理対象の入力データまたは処理対象の入力データの格納先を配信する。
このとき、割当変更部44は、任意の手法で割り当てを変更することができる。例えば、割当変更部44は、Mapper#1であるNode1には、入力データの領域1、領域2、領域3、領域4の順に割当て、Mapper#2であるNode2には、入力データの領域3、領域4、領域2、領域1の順に割当てることができる。また、割当変更部44は、割当てた各領域のデータを所定数ずつ処理させるように指示することもでき、割当てた領域のデータについてのMap処理が終了した後に次の領域のデータを処理するように指示することもできる。
さらに、割当変更部44は、Mapperであるスレーブノード50からの要求にしたがって、割当を変更する処理を実行する。例えば、割当変更部44は、Mapper#1であるNode1から、データ転送量が少ないReducerであるReducer#3(ReduceID=R3)を含む割当変更要求を受信した場合、推定結果DB35におけるReducer#3(ReduceID=R3)の推定結果を参照する。そして、割当変更部44は、Reducer#3(ReduceID=R3)については入力データの領域2にキーが多く含まれていることを特定する。
この結果、割当変更部44は、要求元のMapper#1に対して、領域2のデータを優先的に割り当てるように、割当を変更する。例えば、割当変更部44は、一定時間は領域2のデータのみを割当てることもできる。また、割当変更部44は、各領域の割当比率について領域2の割当比率を他の領域よりも高くすることで、Mapper#1に対して領域2のデータを他よりも多く割当てることもできる。
[スレーブノードの構成]
図11は、スレーブノードの機能構成を示す機能ブロック図である。図11に示すように、スレーブノード50は、通信制御部51と、記憶部52と、制御部60とを有する。
通信制御部51は、マスタノード30や他のスレーブノード50などとの通信を実行する処理部であり、例えばネットワークインタフェースカードなどである。例えば、通信制御部51は、マスタノード30から各種タスクの割当などを受信し、各種タスクの完了通知を送信する。また、通信制御部51は、各種タスク処理の実行に伴って、該当する入力データが分割された分割データを受信する。
記憶部52は、制御部60が実行するプログラムや各種データを記憶する記憶部であり、例えばハードディスクやメモリなどである。この記憶部52は、推定結果DB53、割当DB54を記憶する。また、記憶部52は、各種処理の実行時にデータを一時的に記憶する。さらに、記憶部52は、Map処理の入力およびReduce処理の出力を記憶する。
推定結果DB53は、MapReduce処理の各Reduce処理に割り当てられるキーについて、分散処理される処理対象の部位ごとの出現数を示すデータ分布状況の推定結果を記憶するデータベースである。具体的には、推定結果DB53は、マスタノード30から配信された推定結果を記憶する。
割当DB54は、Reduceタスクとキーの対応付けを記憶するデータベースである。具体的には、割当DB54は、通常の各Reduceタスクと処理対象のキーの対応付け、および、スペアReduceタスクと処理対象のキーの対応付けを記憶する。図12は、割当確定テーブルに記憶される情報の例を示す図である。図12に示すように、割当DB54は、「ReduceID、処理するキー」を対応付けて記憶する。
ここで記憶される「ReduceID」は、主キーを処理するReducerを特定する情報であり、Reduceタスクを実行するスレーブノードに割与えられる。「処理するキー」は、Reducerが処理対象とするキーであり、Reduceタスクで処理対象となるキーである。図12の場合、ReduceID=R1のReducerの処理対象のキーが「AAA」であることを示す。
制御部60は、スレーブノード50全体の処理を司る処理部であり、取得部61、Map処理部62、Reduce処理部70を有する。制御部60は、例えばプロセッサなどの電子回路であり、取得部61、Map処理部62、Reduce処理部70は、電子回路の一例や制御部60が実行するプロセスの一例である。
取得部61は、マスタノード30から各種情報を取得する処理部である。例えば、取得部61は、MapReduce処理の開始タイミングや予め設定されたタイミングで、マスタノード30からプッシュ式で送信された推定結果や割り当て情報を受信し、それぞれ推定結果DB53と割当DB54に格納する。
Map処理部62は、Mapタスク実行部63とバッファ群64と監視部65を有し、これらによって、マスタノード30から割り当てられたMapタスクを実行する。
Mapタスク実行部63は、ユーザが指定した処理に対応するMapアプリケーションを実行する処理部である。つまり、Mapタスク実行部63は、一般的なMap処理におけるMapタスクを実行する。
例えば、Mapタスク実行部63は、ハートビートなどを用いて、マスタノード30にMapタスクの割当を要求する。このとき、Mapタスク実行部63は、スレーブノード50の空きスロット数も通知する。そして、Mapタスク実行部63は、マスタノード30から、「TaskID、必要スロット数」などを含むMap割当情報を受信する。
その後、Mapタスク実行部63は、受信したMap割当情報にしたがって、マスタノード30から処理対象のデータを受信して、必要なスロットを用いて該当するMapタスクを実行する。また、Mapタスク実行部63は、バッファ群64が有する複数のバッファ64aのうち、該当するバッファにMap処理結果を格納する。例えば、Mapタスク実行部63は、キー「AAA」が含まれる入力データに対してMapタスクを実行した場合、キー「AAA」と対応付けられるReducer向けのデータを記憶するバッファに、Mapタスクの処理結果を格納する。
バッファ群64は、キーが割当てられたReducerごとのバッファ64aを有し、Reducerに対して出力されるMap処理結果を保持する。各バッファ64aは、ReduceID=R1、R2、R3、R4ごとに設けられ、Mapタスク実行部63によってデータが格納される。また、各バッファ64aに格納されるデータは、各Reducerによって読み出される。
監視部65は、バッファ群64の各バッファ64aに記憶されるバッファ量を監視する処理部である。具体的には、監視部65は、各バッファ64aのバッファ量を定期的に監視し、バッファ量の偏りを監視する。つまり、監視部65は、閾値を超える極端にデータ量が多いバッファや閾値を下回る極端にデータ量が少ないバッファを検出する。
例えば、監視部65は、ReduceID=R1が対応付けられたバッファ、ReduceID=R2が対応付けられたバッファ、ReduceID=R3が対応付けられたバッファ、ReduceID=R4が対応付けられたバッファの各バッファ量を監視する。そして、閾値以上のデータ量が格納されるバッファを検出すると、その時点で最もバッファ量が少ないバッファを特定し、特定したバッファに対応付けられるReduceIDを特定する。その後、監視部65は、特定したReduceIDを含む割当変更要求をマスタノード30に送信する。
また、別の例としては、監視部65は、各バッファ量を監視し、閾値未満のバッファ量が格納されるバッファを検出すると、検出したバッファに対応付けられるReduceIDを特定する。その後、監視部65は、特定したReduceIDを含む割当変更要求をマスタノード30に送信する。
このように、監視部65は、処理量が少ないReducer、すなわち処理を実行していないReducerを検出すると、当該Reducerが処理対象とするデータを優先的に割り当てるように、割当変更要求をマスタノード30に送信する。
ここで、割当変更の例を説明する。図13は、割当変更の例を説明する図である。図13に示すように、監視部65は、RedeuceIDがR1のReducerのバッファに記憶されるデータ量とIDがR3のReducerのバッファに記憶されるデータ量とが、閾値未満であることを検出する。すると、監視部65は、よりデータ量が少ないReducerのID=R3を含む割当変更要求をマスタノード30に送信する。
別例としては、監視部65は、データ量が少ないReducerのID=R3を検出すると、推定結果DB53におけるID=R3の推定結果を参照する。そして、監視部65は、ID=R3の推定結果において、ID=R3のReducerが処理するデータが領域2に最も多く含まれていることを特定する。すると、監視部65は、マスタノード30に対して、領域2のデータの割当を多くする要求を送信することもできる。
Reduce処理部70は、Shuffle処理部71とReduceタスク実行部72を有し、これらによってReduceタスクを実行する処理部である。このReduce処理部70は、マスタノード30から割り当てられたReduceタスクを実行する。
Shuffle処理部71は、Map処理の結果をキーでソートし、同じキーを有するレコード(データ)をマージして、Reduceタスクの処理対象を生成する処理部である。具体的には、Shuffle処理部71は、マスタノード30からReduce処理の開始が通知されると、当該Map処理が属するジョブのReduceタスクを実行する準備として、各スレーブノード50のバッファ群64から該当するMap処理結果を取得する。そして、Shuffle処理部71は、Map処理の結果を予め指定されたキーでソートし、同じキーを有する処理結果をマージして記憶部52に格納する。
例えば、Shuffle処理部71は、「JobID」が「Job001」のMapタスクである「Map000、Map001、Map002、Map003」が終了したこと、つまり、「JobID」が「Job001」のReduce処理タスクの実行開始をマスタノード30から受信する。すると、Shuffle処理部71は、Node1、Node2、Node3、Node4等からMap処理結果を取得する。続いて、Shuffle処理部71は、Map処理結果のソートおよびマージを実行して記憶部52等に格納する。
Reduceタスク実行部72は、ユーザが指定した処理に対応するReduceアプリケーションを実行する処理部である。具体的には、Reduceタスク実行部72は、マスタノード30から割当てられたReduceタスクを実行する。
例えば、Reduceタスク実行部72は、「JobID、TaskID、必要スロット数」などから構成されるReduceタスクの情報を受信する。そして、Reduceタスク実行部72は、受信した情報を記憶部52等に格納する。その後、Reduceタスク実行部72は、各スレーブノード50から該当データを取得してReduceアプリケーションを実行し、その結果を記憶部52に格納する。なお、Reduceタスク実行部72は、Reduceタスクの結果をマスタノード30に送信してもよい。
[処理の流れ]
図14は、分散処理システムが実行する処理の流れを示すフローチャートである。図14に示すように、マスタノード30の推定部41は、管理者等から処理開始が指示されると(S101:Yes)、入力データを読み込む(S102)。そして、推定部41は、入力データをサンプリングし(S103)、各Reducerへのデータ転送量を推定する(S104)。このとき、推定部41は、推定結果を推定結果DB35に格納し、各スレーブノード50に配信する。その後、Map割当部42が各スレーブノード50にMapタスクを割当て、Reduce割当部43が各スレーブノード50にReduceタスクを割当て、Map割当部42が各スレーブノード50にMap処理の開始を指示する(S105)。なお、Reduceタスクの割当は、このタイミングに限定されず、例えば所定数以上のMapタスクが完了した時点で割り当てることもできる。
続いて、各スレーブノード50のMapタスク実行部63は、Map処理を開始する(S106)。なお、Mapタスク実行部63は、Mapタスクを実行すると、実行結果をマスタノード30に送信する。
そして、マスタノード30のReduce割当部43は、Mapタスクが所定数以上終了すると(S107:Yes)、各スレーブノード50にReduce処理の開始を指示する(S108)。
続いて、各スレーブノード50のReduce処理部70は、Shuffle処理及びReduce処理を開始する(S109)。なお、Reduce処理部70は、Reduceタスクを実行すると、実行結果をマスタノード30に送信することもできる。
すると、各スレーブノード50の監視部65は、Reducerに割当てられる各バッファ64aの監視を開始する(S110)。そして、監視部65は、いずれかのバッファ64aにおいて閾値以上のバッファ量を検出した場合(S111:Yes)、割当変更要求をマスタノード30に送信する(S112)。例えば、監視部65は、現在処理中のチャンクを保持したまま、閾値以上のバッファ量になったノード以外で処理を行っているReducer用のデータを多く持っている部分を、Reducer名を引数にしてマスタノード30に依頼する。
そして、マスタノード30の割当変更部44は、要求元のスレーブノード50に対して、入力データの配信を変更する(S113)。例えば、割当変更部44は、推定結果DB35に記憶されるヒストグラムを参照し、通知されたReducerへのデータ数が多い領域から処理されるように、適切なデータを割り当てる。その後、スレーブノード50のMapタスク実行部63は、新たに割当てられて配信される入力データに対してMap処理を再開する(S114)。
その後、Map処理が終了するまで(S115:No)、S111以降が繰り返され、Reduce処理が終了すると(S115:Yes)、Reduce処理が完了するまで、Reduce処理が実行される(S116)。そして、Reduce処理が完了すると(S116:Yes)、MapReduce処理が終了する。なお、S111において、いずれのバッファ64aにおいても閾値以上のバッファ量が検出されない場合(S111:No)、S115以降が実行される。
[効果]
このように、実施例1に係る分散処理システムは、入力データ待ちが発生するReducerを検出し、そのReducerのキーを多く含む部位を優先的にMap処理させることができる。したがって、Reducerが待機する時間を削減し、処理を均等化することができるので、処理の長期化を抑制できる。
図15は、処理の長期化を説明する図である。図15に示すように、入力データの場所によってキーの分布が異なる。例えば、ある小説家が書いた複数の小説から登場単語の数を計数するMapReduce処理を実行する場合、当該小説家の初期の作品と晩年の作品とでは、語彙力の違いなどにより、使用される単語も異なってくる。
このため、単純に、入力データ全体のキー出現数等によって、Reducerへのキー割り振りを均等化したとしても、MapperからReducerへの転送データ量に偏りが生じすることがある。例えば、図15において網掛けの部分が、処理データがない時を示している。さらには、外乱などにより、Reducerの処理遅延も発生する。例えば、各スレーブノードを仮想マシンで実現した場合、他の仮想マシンがプロセッサ資源やネットワークを使ってしまう事でReduceが時間当たりに処理できる量が減ってしまう事がある。また、Java(登録商標)のガベージコレクションのような突発的な高負荷の影響により、Reducerの負荷が高くなることもある。
この結果、図15に示すように、均等に負荷分散させたはずのReducerにおいて、処理すべきデータが入力されず、待機しているReducerが発生する。その一方で、外乱やキーの出現数等により、処理負荷が高くてデータを取得できないReducerも発生する。このように、瞬間を見ると、データ量が不均一であり、結果として、処理の長期化が発生する。
これに対して、実施例1に係る分散処理システムでは、Mapperであるスレーブノード50が、Reducerのバッファ量を監視し、バッファ量が少ないReducer、すなわち処理すべきデータが少ないReducerを検出することができる。そして、スレーブノード50は、処理すべきデータが少ないReducerが処理対象とするキーを多く有する入力データの優先的な配信を、マスタノード30に要求することができる。この結果、瞬間瞬間で、Reducerの処理を負荷分散することができるので、処理データ量を均一化し、処理の長期化を抑制することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
[閾値の設定]
上記実施例では、バッファ量の閾値として1つの閾値を設定する例を説明したが、これに限定されるものではなく、複数の閾値を設定することもできる。図16は、閾値の変形例を説明する図である。図16に示すように、スレーブノード50の監視部65は、各バッファ64aのバッファ量の閾値として上限値と下限値とを設定する。
そして、監視部65は、上限値を超えるバッファ量が検出された場合、その時点で最もバッファ量が少ないReducerへの割当を増やす割当変更要求をマスタノード30に送信する。また、監視部65は、上限値を超えるバッファ量が検出されない場合でも、下限値を下回るバッファ量が検出された場合、当該バッファ量のバッファに対応するReducerへの割当を増やす割当変更要求をマスタノード30に送信する。つまり、スレーブノード50は、特定のReducerにおける処理状況が遅延した場合だけでなく、積極的に、MapReduceの処理時間を短くするために、処理量の少ないReducerへの割当を増やすこともできる。
[中央管理]
上記実施例では、各スレーブノード50がバッファ量を監視する例を説明したが、これに限定されるものではなく、マスタノード30が各スレーブノード50の各バッファ量を監視することもできる。例えば、マスタノード30は、定期的に、各スレーブノード50から各バッファ量を取得する。そして、マスタノード30は、各スレーブノード50に対して、上限値や下限値などの閾値を超えるバッファ量が検出された場合、上記処理と同様に、割当変更を実行する。このように、マスタノード30が集中管理することにより、各スレーブノード50のバッファ監視による処理負荷を低減することができる。
[分散処理]
上記実施例では、分散処理としてMapReduce処理を例にして説明したが、これに限定されるものではなく、例えば前処理と前処理の結果を用いて後処理を実行する様々な分散処理に適用することができる。
[入力データ]
上記実施例では、マスタノード30が入力データを保持し、各スレーブノード50に配信する例を説明したが、これに限定されるものではない。例えば、各スレーブノード50が入力データを分散して保持することもできる。例えば、マスタノード30は、Map処理対象のデータを保持するスレーブノードを識別する識別子としてホスト名などを設定した「データのあるスレーブID」を、タスクリストのJobIDにさらに対応付けて記憶する。
そして、マスタノード30は、Mapperである各スレーブノード50に対して、処理対象のデータを保持するスレーブノードのID(スレーブID)を通知する。このようにして、スレーブノード50は、該当スレーブノードからデータを取得して、Map処理を実行する。また、マスタノード30は、割当変更要求を受信した場合、処理量を増やすために、該当キーを多く含む部位の入力データを保持するスレーブノードのスレーブIDを通知することで、該当Reducerの処理量を増やすことができる。
[システム]
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[ハードウェア]
次に、各サーバのハードウェア構成例を説明するが、各装置は同様の構成を有するので、ここでは一例を説明する。図17は、装置のハードウェア構成例を示す図である。図17に示すように、装置100は、通信インタフェース101、メモリ102、複数のHDD(ハードディスクドライブ)103、プロセッサ装置104を有する。
通信インタフェース101は、各機能部の説明時に示した通信制御部に該当し、例えばネットワークインタフェースカードなどである。複数のHDD103は、各機能部の説明時に示した処理部を動作させるプログラムやDB等を記憶する。
プロセッサ装置104が有する複数のCPU(Central Processing Unit)105は、各機能部の説明時に示した各処理部と同様の処理を実行するプログラムをHDD103等から読み出してメモリ102に展開することで、図6や図11等で説明した各機能を実行するプロセスを動作させる。すなわち、このプロセスは、マスタノード30が有する推定部41、Map割当部42、Reduce割当部43、割当変更部44と同様の機能を実行する。また、このプロセスは、スレーブノード50が有する取得部61、Map処理部62、Reduce処理部70と同様の機能を実行する。
このように装置100は、プログラムを読み出して実行することで、分散処理制御方法またはタスク実行方法を実行する情報処理装置として動作する。また、装置100は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、装置100によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
30 マスタノード
31 通信制御部
32 記憶部
33 ジョブリストDB
34 タスクリストDB
35 推定結果DB
40 制御部
41 推定部
42 Map割当部
43 Reduce割当部
44 割当変更部
50 スレーブノード
51 通信制御部
52 記憶部
53 推定結果DB
54 割当DB
60 制御部
61 取得部
62 Map処理部
63 Mapタスク実行部
64 バッファ群
64a バッファ
65 監視部
70 Reduce処理部
71 Shuffle処理部
72 Reduceタスク実行部

Claims (7)

  1. コンピュータに、
    複数のノードに分散処理される処理対象データの部位ごとのデータ分布であるデータ分布情報を取得する処理と、
    前記処理対象データが分割された分割データに対する前記分散処理の処理状況を監視する処理と、
    前記分散処理の処理状況と前記データ分布情報とに基づいて、処理対象とする前記分割データの処理順序を変更する処理と
    を実行させることを特徴とする分散処理プログラム。
  2. 前記取得する処理は、第1の処理と前記第1の処理の処理結果を用いて実行される第2の処理を有する前記分散処理において、各第2の処理に割り当てられるキーについて前記処理対象の部位ごとの出現数を示す前記データ分布状況を取得し、
    前記変更する処理は、処理量の少ないキーの出現数が多い前記部位の前記分割データが優先的に割当てられるように、前記分割データを割当てるノードに要求することを特徴とする請求項1に記載の分散処理プログラム。
  3. 前記監視する処理は、前記第1の処理の処理結果が格納される、前記各第2の処理の各バッファのデータ量を監視し、
    前記変更する処理は、該バッファ量が閾値を下回る前記第2の処理に割り当てられる前記キーの出現数が多い前記部位の前記分割データが優先的に割り当てられるように、前記ノードに要求することを特徴とする請求項2に記載の分散処理プログラム。
  4. 前記変更する処理は、前記各第2の処理の各バッファのデータ量の偏りが検出された場合、前記バッファ量が最も少ない前記第2の処理に割り当てられる前記キーの出現数が多い前記部位の前記分割データが優先的に割当てられるように、前記ノードに要求することを特徴とする請求項2に記載の分散処理プログラム。
  5. 前記取得する処理は、前記分散処理であるMapReduce処理における各Reduce処理に割り当てられるキーについて、前記処理対象の部位ごとの出現数を示す前記データ分布状況を取得し、
    前記監視する処理は、前記各Reduce処理に転送されるMap処理の処理結果が格納される、前記各Reduce処理の各バッファのデータ量を監視し、
    前記変更する処理は、バッファのデータ量が少ないReduceに割り当てられるキーの出現数が多い前記部位の前記分割データが前記Map処理に割当てられるように、前記分割データを配信するノードに要求することを特徴とする請求項1に記載の分散処理プログラム。
  6. コンピュータが、
    複数のノードに分散処理される処理対象データの部位ごとのデータ分布であるデータ分布情報を取得する処理と、
    前記処理対象データが分割された分割データに対する前記分散処理の処理状況を監視する処理と、
    前記分散処理の処理状況と前記データ分布情報とに基づいて、処理対象とする前記分割データの処理順序を変更する処理と
    を含むことを特徴とする分散処理方法。
  7. 複数のノードに分散処理される処理対象データの部位ごとのデータ分布であるデータ分布情報を取得する取得部と、
    前記処理対象データが分割された分割データに対する前記分散処理の処理状況を監視する監視部と、
    前記分散処理の処理状況と前記データ分布情報とに基づいて、処理対象とする前記分割データの処理順序を変更する変更部と
    を有することを特徴とする分散処理装置。
JP2015158537A 2015-08-10 2015-08-10 分散処理プログラム、分散処理方法および分散処理装置 Pending JP2017037492A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015158537A JP2017037492A (ja) 2015-08-10 2015-08-10 分散処理プログラム、分散処理方法および分散処理装置
US15/220,560 US20170048352A1 (en) 2015-08-10 2016-07-27 Computer-readable recording medium, distributed processing method, and distributed processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015158537A JP2017037492A (ja) 2015-08-10 2015-08-10 分散処理プログラム、分散処理方法および分散処理装置

Publications (1)

Publication Number Publication Date
JP2017037492A true JP2017037492A (ja) 2017-02-16

Family

ID=57994496

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015158537A Pending JP2017037492A (ja) 2015-08-10 2015-08-10 分散処理プログラム、分散処理方法および分散処理装置

Country Status (2)

Country Link
US (1) US20170048352A1 (ja)
JP (1) JP2017037492A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10979328B2 (en) * 2017-03-31 2021-04-13 Intel Corporation Resource monitoring
CN107070753A (zh) * 2017-06-15 2017-08-18 郑州云海信息技术有限公司 一种分布式集群***的数据监控方法、装置及***
US11237864B2 (en) * 2018-02-06 2022-02-01 Rubrik, Inc. Distributed job scheduler with job stealing
CN108763312B (zh) * 2018-04-26 2021-07-06 大连理工大学 一种基于负载的从数据节点筛选方法
CN110209488B (zh) * 2019-06-10 2021-12-07 北京达佳互联信息技术有限公司 任务执行方法、装置、设备、***及存储介质
KR20210029615A (ko) * 2019-09-06 2021-03-16 에스케이하이닉스 주식회사 반도체장치
US11966630B2 (en) * 2022-06-27 2024-04-23 Western Digital Technologies, Inc. Key-to-physical table optimization for key value data storage devices

Also Published As

Publication number Publication date
US20170048352A1 (en) 2017-02-16

Similar Documents

Publication Publication Date Title
US11675815B1 (en) Multi-cluster warehouse
JP2017037492A (ja) 分散処理プログラム、分散処理方法および分散処理装置
US20170031622A1 (en) Methods for allocating storage cluster hardware resources and devices thereof
KR101827369B1 (ko) 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법
JP4313336B2 (ja) 監視システムおよび監視方法
US9286123B2 (en) Apparatus and method for managing stream processing tasks
KR101781063B1 (ko) 동적 자원 관리를 위한 2단계 자원 관리 방법 및 장치
JP5664098B2 (ja) 複合イベント分散装置、複合イベント分散方法および複合イベント分散プログラム
US20200174838A1 (en) Utilizing accelerators to accelerate data analytic workloads in disaggregated systems
JP6519111B2 (ja) データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
JP4992408B2 (ja) ジョブ割当プログラム、方法及び装置
Rupprecht et al. SquirrelJoin: Network-aware distributed join processing with lazy partitioning
WO2016061935A1 (zh) 一种资源调度方法、装置及计算机存储介质
Jaiman et al. Héron: Taming tail latencies in key-value stores under heterogeneous workloads
US11438271B2 (en) Method, electronic device and computer program product of load balancing
Madsen et al. Dynamic resource management in a massively parallel stream processing engine
US20150365474A1 (en) Computer-readable recording medium, task assignment method, and task assignment apparatus
Wang et al. Dependency-aware network adaptive scheduling of data-intensive parallel jobs
KR101656706B1 (ko) 고성능 컴퓨팅 환경에서의 작업 분배 시스템 및 방법
Hussain et al. A counter based approach for reducer placement with augmented Hadoop rackawareness
JP6357807B2 (ja) タスク割当プログラム、タスク実行プログラム、マスタサーバ、スレーブサーバおよびタスク割当方法
Sakthivelmurugan et al. Enhanced load balancing technique in public cloud
US9503353B1 (en) Dynamic cross protocol tuner
US10824640B1 (en) Framework for scheduling concurrent replication cycles
CN104468701A (zh) 一种用于异构存储集群***的i/o服务质量维护方法