JP2012517631A - 分散スペースを用いて分散プログラミング環境を提供するための方法、システム及びコンピュータ読み取り可能な記録媒体 - Google Patents

分散スペースを用いて分散プログラミング環境を提供するための方法、システム及びコンピュータ読み取り可能な記録媒体 Download PDF

Info

Publication number
JP2012517631A
JP2012517631A JP2011549050A JP2011549050A JP2012517631A JP 2012517631 A JP2012517631 A JP 2012517631A JP 2011549050 A JP2011549050 A JP 2011549050A JP 2011549050 A JP2011549050 A JP 2011549050A JP 2012517631 A JP2012517631 A JP 2012517631A
Authority
JP
Japan
Prior art keywords
data
virtual space
application
distributed
node
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.)
Granted
Application number
JP2011549050A
Other languages
English (en)
Other versions
JP5646511B2 (ja
Inventor
ウー ヒュン キム
ドゥ ホ キム
タ イル ユン
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.)
Naver Corp
Original Assignee
Naver Corp
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 Naver Corp filed Critical Naver Corp
Publication of JP2012517631A publication Critical patent/JP2012517631A/ja
Application granted granted Critical
Publication of JP5646511B2 publication Critical patent/JP5646511B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本発明は、分散スペースを用いて分散プログラミング環境を提供するための方法、システム及びコンピュータ読み取り可能な記録媒体に関する。本発明の一実施例によると、分散環境においてデータを処理するための方法であって、多数のノードが提供するリソースを用いて仮想空間を生成し、第1アプリケーションが仮想空間からデータを読み取り又は仮想空間にデータを書き込むこと、を含み、前記データは、データの属性によって決定される仮想空間上の特定の位置領域にマッピングされ、第1アプリケーションは、位置領域において前記データに対する読み取り作業又は書き込み作業を行う方法が提供される。

Description

本発明は、分散スペース(distributed space)を用いて分散プログラミング環境(distributed programming environment)を提供するための方法、システム及びコンピュータ読み取り可能な記録媒体に関する。より詳細には、多数のノード又はプロセス(process)がアクセス可能な分散スペースを生成し、前記分散スペースを介してデータを共有できるようにすることで、分散プログラミングを可能にする方法、システム及びコンピュータ読み取り可能な記録媒体に関する。
ネットワーク通信技術の発達によってリモートコンピュータ間の大容量データの送受信が容易になり、これによって、多数のコンピュータが連携して一つの作業を処理する分散プログラミング(又はコンピューティング)(distributed programming (or computing))技術が徐々に普遍化されている。
このような分散プログラミング環境を構築するための主要技術としてSBA(Space−Based Architecture)が挙げられる。SBAは、タプルスペース(tuple space)を利用して処理状態を把握する(stateful)高性能アプリケーションの線形拡張性(linear scalability)を実現するためのソフトウェア構造パターンであって、エール大学のデイヴィッド・ガランター(David Gelernter)が提唱したリンダ(Linda)のタプルスペースの概念に由来している。SBAによると、全ての分散プロセスは、スペースを基盤にして相互通信とリソースシェアリングを行うため、互いに関する詳細な情報を必要としない。また、時間と空間の制約を受けず、単純なインターフェースのみで多様な方式の分散プログラミングが可能になるという長所を有する。
近年、DHT(Distributed Hash Table;分散ハッシュテーブル)という非集中的分散システムが注目されており、DHTは、ハッシュテーブル(hash table)に類似したルックアップ(look‐up)サービスを提供することを特徴としている。DHTは、リソースの均等な分散と構造化されたトポロジー(topology)とによってネットワークの拡張性とロバスト性(robustness)を確保するとともに、迅速なルックアップサービスを提供することができるため、P2Pサービスのような多様な分野で活用されている。
このようにDHTが技術的優位性を有しているにもかかわらず、実際には、分散環境において大規模な計算問題に対するDHTの適用事例を見付けることは容易ではない。そのため、SBA及びDHTの長所を両方持ち合わせる新しい分散プログラミング環境の必要性が台頭している。
本発明は、上記問題点を全て解決することを目的とする。
また、本発明は、作業を分配して分散処理の効率性を向上させるとともに、分散プログラミング環境の線形拡張性を確保することを他の目的とする。
さらに、本発明は、構造化されたトポロジーを基盤にしてデータに対する迅速なアクセスを可能にすることを他の目的とする。
上記目的を達成するための本発明の代表的な構成は以下のとおりである。
本発明の一実施例によると、分散環境においてデータを処理するための方法であって、多数のノードが提供するリソースを用いて仮想空間を生成し、第1アプリケーションが仮想空間からデータを読み取り又は仮想空間にデータを書き込むこと、を含み、前記データは、データの属性によって決定される仮想空間上の特定の位置領域にマッピングされ、第1アプリケーションは、前記位置領域において前記データの読み取り作業又は書き込み作業を行う方法が提供される。
本発明の他の実施例によると、分散環境においてデータを処理するためのシステムであって、多数のノードが提供するリソースを用いて生成される仮想空間と、仮想空間からデータを読み取り又は仮想空間にデータを書き込む第1アプリケーションを含み、前記データは、データの属性によって決定される仮想空間上の特定の位置領域にマッピングされ、第1アプリケーションは、前記位置領域において前記データの読み取り作業又は書き込み作業を行うシステムが提供される。
この他にも、本発明を実現するための他の方法、システム及び前記方法を実行するためのコンピュータプログラムを記録するためのコンピュータ読み取り可能な記録媒体がさらに提供される。
本発明によると、大規模な計算問題を多数のコンピュータを用いて分散処理することにより、作業の効率性を向上させることができる。
また、本発明によると、分散プログラミング環境の線形拡張性を確保するという効果を奏する。
さらに、本発明によると、分散プログラミング環境下でデータに対する迅速なアクセスが可能となる。
本発明の一実施例における全体システムの構成を概略的に示す図である。 本発明の一実施例における仮想空間を例示的に示す図である。 本発明の一実施例における二つの方式のマスターワーカモデルを示す図である。 本発明の一実施例によおける二つの方式のマスターワーカモデルを示す図である。 本発明の一実施例においてフェイルオーバーが行われる例を示す図である。 本発明の一実施例においてフェイルオーバーが行われる例を示す図である。 3−copyレプリケーションポリシー(3−copy replication policy)の下でノードが追加された場合に行われるデータ交換を例示的に示す図である。
以下の本発明に関する詳細な説明において、本発明を実施することのできる特定の実施例を例として図示する添付の図面を参照する。これらの実施例は当業者が本発明を十分に実施することができるように詳細に説明される。本発明の多様な実施例は相互に異なるが相互に排他的である必要はないと理解されるべきである。例えば、本明細書に記載されている特定の形状、構造及び特性は、一実施例において本発明の思想及び範囲を外れない限り他の実施例において実施されてもよい。また、開示された夫々の実施例のうちの個別の構成要素の位置または配置は、本発明の思想及び範囲を外れない限り変更されてもよいと理解されるべきである。従って、以下の詳細な説明は、本発明の範囲を限定的な意味に制限しようとする意図ではない。本発明の範囲は、適切に説明されれば、その特許請求の範囲に記載されているものと均等な全ての範囲とともに添付の特許請求の範囲によってのみ限定される。図面において類似の参照符号は様々な側面に亘って同一または類似の機能を指称する
以下、本発明の属する技術分野における通常の知識を有する者が本発明を容易に実施することができるように、本発明の実施例について添付図面を参照して詳細に説明する。
実施例
全体システムの構成
図1は、本発明の一実施例における全体システム(overall system)の構成を概略的に示す図である。
図1に示すように、本発明の一実施例における全体システムは、通信網100、分散プログラミング環境を構成するクラスタ200、及び分散プログラミング環境を基盤として行われる多数のアプリケーション300で構成されてもよい。
まず、通信網100は、有線及び無線のような通信方式を問題とせずに構成されてもよく、ローカルエリアネットワーク(Local Area Network;LAN)、メトロポリタンエリアネットワーク(Metropolitan Area Networkl;MAN)、ワイドエリアネットワーク(WIDE Area Network;WAN)など多様な通信網で構成されてもよい。
本発明の一実施例によると、クラスタ200は、多数のコンピュータ(以下、「ノード」という。)で構成され、分散プログラミングを行うことができるように演算装置、メモリなどのようなリソースをアプリケーション300に提供する機能を行うものでもよい。即ち、本発明の一実施例におけるクラスタ200は、多数のアプリケーション300がデータ又はプログラムコードを共有することができるように装置を提供し、アプリケーション300の要請に応じて特定のデータを提供したり、アプリケーション300が要請する作業を行った結果をアプリケーション300に返送するものでもよい。
また、本発明の一実施例によると、多数のノードで構成されたクラスタ200が提供するリソースが一つの統合スペースを形成することにより、アプリケーション300は、あたかも一つのコンピュータによって作業を行っているかのように動作するものでもよい。
また、本発明の一実施例によると、統合スペースの各領域は、アプリケーション300の要請に応じて少なくとも一つの仮想空間(virtual space)にマッピングされてもよい。また、仮想空間に特定のアプリケーション300のみがアクセスできるようにすることで、共通の作業を行おうとする多数のアプリケーション300間の通信やデータ共有を可能とし、互いに独立したアプリケーション300間の干渉を排除してもよい。
本発明の一実施例によると、アプリケーション300は、クラスタ200を用いて分散プログラミング作業を行おうとするプログラムであってもよい。
本発明の一実施例によると、アプリケーション300は、仮想空間からデータを読み取る作業を行い、又は仮想空間にデータを書き込む作業を行うことで、他のアプリケーション300と通信してもよく、これにより分散プログラミングを行ってもよい。
一方、図1では、アプリケーション300がクラスタ200を構成するノードから物理的に分離された他のコンピュータ上で実行されているように図示されているが、本発明の他の実施例によると、アプリケーション300は、クラスタ200内に含まれるノード上で動作するプログラムであってもよい。また、本発明において、アプリケーション300は、所定作業を実行したり、所定作業の実行を容易にするために設計されたプログラムの通称であって、応用プログラムだけでなく、プロセス、スレッド(thread)などを包括する最も広い意味で理解されるべきである。
データの保存及び利用
本発明の一実施例によると、特定作業を行おうとするアプリケーション300は、当該アプリケーションに割り当てられた仮想空間にデータを保存したり、保存されたデータを利用したりすることによって作業を行う。より具体的には、アプリケーション300によって扱われるデータは、キー(key)と値(value)のペアからなるものでもよい。ここで、キー(key)は、データに対するインデックスとして機能するものでもよく、値(value)は、データの値であってもよい。
本発明の一実施例によると、前記のようなデータは、所定の基準に基づいて仮想空間内に保存されるが、その具体的な実施例を図2を参照して説明すると以下のとおりである。
図2は、本発明の一実施例における仮想空間を例示的に示す図である。
図2を参照すると、仮想空間は少なくとも一つの仮想ノード210〜270の提供するスペースが統合されたものであって、あたかも一つの巨大メモリであるかのように表現されていることが分かる。従って、仮想ノード210〜270は、仮想空間の領域を多数のセクションに区分する基準点としての機能を担ってもよい。また、それぞれの仮想ノード210〜270の提供するスペースはそれぞれの仮想ノード210〜270が生成されているノード200a〜200f上に存在する特定のリソース(例えば、メモリ)にマッピングされてもよい。ここで、特定のノード(例えば、200a)が仮想ノードを生成するとは、ノード200aのリソース(例えば、メモリの一領域)が当該仮想ノードに割り当てられることを意味する。
本発明の一実施例によると、図2に示されたそれぞれの仮想ノード210〜270は、少なくとも一つのノード200a〜200fによって生成されてもよい。例えば、仮想ノードF260と仮想ノードG270の両方がノード200aによって生成されてもよく、仮想ノードF260は、ノード200aによって生成され、仮想ノードG270はノード200bによって生成されてもよい。
本発明の一実施例によると、仮想空間にデータが保存される場合、保存されたデータは仮想空間内の特定領域にマッピングされてもよい。より具体的には、データのキー(key)に所定のハッシュ関数を適用して仮想空間内にマッピングさせてもよい。図2を参照すると、特定データのキー(key)をパラメータとしてハッシュ関数を適用すると、前記データが仮想空間の「3107」領域にマッピングされることが記載されている。
本発明の一実施例によると、それぞれの仮想ノード210〜270にはそれぞれの仮想ノード210〜270が担当することができる仮想空間のデータ領域に関する情報がID(以下、「スペースID」という。)の形で付与されてもよい。図2を参照すると、仮想ノードF260にはスペースIDとして「2906」が付与されており、仮想ノードG270にはスペースIDとして「3485」が付与されていることが確認できる。このようなスペースIDを用いて仮想空間内のデータをそれぞれの仮想ノードに割り当ててもよい。例えば、図2の仮想ノードF260の場合、そのスペースIDである「2906」以上、仮想ノードG270のスペースIDである「3485」未満のスペースIDを有する仮想空間領域内にマッピングされるデータに対する情報処理(例えば、読み出し(read)、書き込み(write)、取り出し(take)など)を担当してもよい。
上記のようなスペースIDは様々な方式で付与されてもよい。本発明の一実施例によると、スペースIDは分散プログラミング環境を管理するオペレータによって手動で付与されてもよいが、仮想空間の生成や仮想空間に参加する仮想ノード数の変化に応じて自動的に決定されてもよい。
より具体的には、仮想ノードに付与されるスペースIDは仮想空間に保存されるデータがマッピングされ得る領域と密接に関係しているため、データを仮想空間内にマッピングさせるために利用されるハッシュ関数と同一のハッシュ関数を用いて決定されてもよい。本発明の一実施例によると、スペースIDを決定するためにハッシュ関数に入力されるパラメータには、仮想ノードを生成するノードのIPアドレスの情報、comポートの情報、仮想空間の属性情報、仮想空間の名称情報などが含まれてもよい。
前記のように仮想空間にデータを保存する方式が、実際の分散プログラミング環境に適用される一例として、大規模な作業が多数のセグメントに分割されて多数のアプリケーションに割り当てられる場合を想定してもよい。即ち、特定のアプリケーションが大規模な作業を分散処理可能な多数の部分作業に分割してこれを分散スペースに保存することにより、部分作業が多数の他のアプリケーションによって分散処理されてもよい。
本発明の一実施例によると、前記のような方法によって保存されるデータは、当該データに対する読み出し/取り出し(read/take)作業を行おうとするアプリケーション300によって同一の方式でルックアップされてもよい。即ち、アプリケーション300が特定のキー(key)を有するデータをルックアップしようとする場合、当該キー(key)にハッシュ関数を適用して仮想空間内における位置を取得し、当該位置領域に対する処理を担当する仮想ノードから前記キー(key)に対応するデータを取得してもよい。
本発明の他の実施例によると、仮想空間に保存されたデータに対するルックアップは、局所性(locality)を確保する方式で行われてもよい。即ち、アプリケーション300がルックアップすることのできる仮想空間の領域を仮想空間内の特定領域に制限してもよい。例えば、アプリケーション1には仮想ノードA210及び仮想ノードB220が担当する領域に対するルックアップのみを許容し、アプリケーション2には仮想ノードB220及び仮想ノードC230が担当する領域に対するルックアップのみを許容し、アプリケーション3には仮想ノードD240及び仮想ノードE250が担当する領域に対するルックアップのみを許容してもよい。この際、仮想空間に保存されるデータを予めサンプリングしてデータの特性を把握することによりデータが仮想空間上に均一に分布されるため、分散プログラミングをより効率的に行うことができる。これは、データ処理の局所性が確保されるマスターワーカモデル(master−worker model)やスキャッタギャザーモデル(scatter−gather model)においてより重要といえるが、データ処理モデルに関する具体的な内容は後で説明する。
本発明の一実施例によると、仮想空間を利用する多数のアプリケーション300が、仮想空間に参加するノード200a〜200f上に存在する場合に前記のような方式を採択すると、データを処理しようとするアプリケーション300がルックアップすることのできる仮想空間の領域を、アプリケーション300が存在するノードから生成された仮想ノードが担当する領域に限定してもよい。そのため、データを割り当てるアプリケーション300によって作業が分散される過程のみにネットワーク通信が要求され、データを処理しようとするアプリケーション300が分散された作業を処理する過程にはネットワーク通信が不要になるため、分散プログラミング過程においてネットワークにかかる負荷を減らすことができるという長所を有する。
この際、特定のアプリケーション300が二つ以上の仮想ノードに対してルックアップすることができる場合、どの仮想ノードが優先されるべきかについては多様な基準を適用してもよい。例えば、複数の仮想ノードを順に又は任意にルックアップしてもよく、最も大容量のデータが保存された仮想ノードを優先してルックアップすることを想定してもよい。
また、前記のような局所性の確保は、データのルックアップ過程だけでなく、データの保存過程に用いてもよい。例えば、作業を分散させるアプリケーション300が自己に許容された特定領域にのみデータを保存し、分散された作業を処理する場合、任意の仮想ノードからデータをルックアップして処理する方式としてもよい。
以下、仮想空間を用いて作成される実際の分散プログラミングコードの例を本発明の一実施例によって説明し、本発明をより具体的に説明する。
1.クライアントサーバモデル
クライアントサーバモデル(client server model)は、分散環境のための代表的なネットワークプログラミングモデルである。本発明の一実施例におけるクライアントサーバモデルは、一つの仮想空間を割り当てられ、互いに異なるキー(key)に対して書き込み/取り出し(write/take)関数を用いることにより容易に実現されてもよい。
表1に、本発明の一実施例におけるクライアントサーバモデルの実際のインプリメンテーションコード(implementation code)を例示的に示す。
クライアントサーバモデルの分散プログラムコードの例
表1のプログラムコードを見ると、ネットワーク関連イシュー(network related issue)(socket、thread、process、signal、pipeなど)を、分散スペースクラス(distributed space class)(前記コードによると「Coord」クラス)に隠し、ユーザが、書き込みメソッド(write method)又は取り出しメソッド(take method)などを用いて分散スペースにアクセスできるようにすることで、ユーザが自己の開発目的と意図のみに集中できるようにトランスペアレント(transparent)な分散環境を支援する。従って、ユーザはクライアントサーバモデルを開発するために別途のネットワーク関連プログラミングについて熟知する必要がなくなるという長所がある。
2.マスターワーカモデル
マスターワーカモデル(master worker model)は、分散環境においてロードバランス(load balance)を維持する並行処理(parallel processing)を支援するために有用に活用されてもよい。従って、分散環境において並行処理を行うためにマスターワーカモデルが有する意味は非常に大きい。
図3及び図4は、本発明の一実施例における二つの方式のマスターワーカモデルを示している。
図3又は図4を参照すると、本発明の一実施例におけるマスターワーカモデルは大きく分けて二つの方式で実行されてもよいことが分かる。一つは、図3に示すように、マスターとワーカとの間で同一のキー(key)を用いて書き込み/取り出し(write/take)作業を行うことにより作業を割り当てる方式であり、もう一つは、図4に示すように、マスターが様々なキー(key)を用いて書き込み(write)作業を行い、ワーカは自己に割り当てられた分散スペース領域のキー(key)に関してのみ取り出し(take)作業を行う方式である。前者の場合、ワーカはマスターの作業を競争的に割り当てられて処理し、後者の場合、マスターが作業を均等に分散させ、ワーカは自己に割り当てられた作業のみを局所性を確保しながら処理する。
表2に、本発明の一実施例におけるマスターワーカモデルの実際のインプリメンテーションコードを例示的に示す。
マスターワーカモデルの分散プログラムコードの例
表2のプログラムコードを見ると、マスターとワーカが“job”という共通のキー(key)を用いて書き込み/取り出し(write/take)作業を行うことにより作業が割り当てられることを確認することができる。前記のようなマスターワーカモデルの長所は、マスターはどのワーカがどこに位置しており、ワーカの個数はいくつかを認識する必要がないということである。マスターはただ自己が解決しようとする作業を分散スペースに入力するだけで十分であり、ワーカは作業が割り当てられるまで待機し、割り当てられた作業を行えばよい。
本発明の一実施例によると、前記のようなマスターワーカモデルにスケジューラの機能を追加してもよい。スケジューラは、作業の待ち時間(queuing time)とプロセシングタイム(processing time)をモニタリングしながらワーカの個数を動的に調節してもよい。即ち、処理する作業が増加したり作業を行う時間が長くなったりした場合、使用可能なノード又は仮想ノードにワーカをさらに割り当てることで、全体作業の処理性能を向上させてもよい。
3.スキャッタギャザーモデル
スキャッタギャザーモデル(scatter‐gather model)は、大容量データを分散処理する際に有用である。本発明の一実施例におけるスキャッタギャザーモデルは、データを分散してすぐデータを収集処理することができるオンザフライ(on the fly)方式を支援するため、多様な長所を有するものでもよい。これは分散環境のためのパイプライン(pipeline)のようなものであって、リアルタイムで大量のリクエスト(request)を効率的に分散処理しなければならない場合に卓越した効果を奏する。
本発明の一実施例によると、スキャッタギャザーモデルは、多数のスキャッタが処理される作業を仮想空間に入力すると、多数のギャザーに仮想空間に入力されたデータが割り当てられ処理される方式であってもよい。この際、マスターワーカモデルで説明したように、ギャザーは同一のキー(key)を用いて競争的に作業を割り当てられてもよく、自己の仮想空間領域に割り当てられた作業のみを処理することで局所性を確保してもよい。
表3に、本発明の一実施例におけるスキャッタギャザーモデルの実際のインプリメンテーションコードを例示的に示す。
スキャッタギャザーモデルの分散プログラムコードの例
表3のプログラムコードを見ると、スキャッタがget_kv()メソッドを用いて任意のキー(key)を生成し、データを仮想空間に入力すると、ギャザーは入力されたデータのキー(key)を区別せずに、自己に割り当てられた領域に入力されたデータに対して作業を行うことを確認することができる。前記のようなスキャッタギャザーモデルの長所は、スキャッタで単純に(key、value)のペアでデータを入力すると、仮想空間にデータが均一に分散され、ギャザーは自己に割り当てられたデータのみを処理する方式により局所性が確保されるため、性能向上に役に立つという点である。それだけでなく、オンザフライ(on the fly)方式でデータを分散、収集して処理するため、分散処理の効率性が向上するという長所もある。
フェイルオーバー(Failure Countermeasure)
本発明の一実施例における分散プログラミング環境は、データレプリケーション(data replication)方式により障害に対応するものでもよい。これは、一つのノード(ここで、「ノード」は物理ノードと仮想ノードの通称として用いられる)に保存されるデータを他のノードに重複して保存することにより、特定のノードに障害が発生した場合にも障害が発生したノードのデータを復元できるようにする方式である。
図5及び図6は、本発明の一実施例においてフェイルオーバー(failure countermeasure)が行われる場合を例示的に示す図である。前記図面では、一つのノードに存在するデータが他の二つのノードにコピーされ、合計3つのコピー(3−copy)が維持される状況を仮定した。
図5を参照すると、特定のアプリケーション300から入力されたデータaがノードDにマッピングされ保存される場合、ノードDに保存されるデータaはノードDの後続ノードであるノードE及びノードFにコピーされ保存されてもよい。
一方、図6は、ノードDに障害が発生した場合、データaにアクセスしようとするアプリケーション300の動作を図示しているが、より具体的には、アプリケーション300がノードDでデータaに対するルックアップに失敗した場合、ノードDの後続ノードであるノードE及びノードFに対して順次ルックアップを行うことでデータaを取得してもよい。ノードEでデータaに対するルックアップが成功した場合、ノードFにおけるルックアップは省略されてもよい。
前記のようなn−copyレプリケーションポリシーが仮想空間にノードが追加されたり除外されたりする場合にも維持されるようにするためには、仮想空間にノードが追加されたり削除されたりする時点でデータ交換が行われなければならない。
図7は、3−copyレプリケーションポリシーの下でノードが追加された場合に行われるデータ交換を例示的に示す図である。図7に、ノードA、B、C、D、E及びGから構成された仮想空間でノードEとノードGとの間にノードFが追加された状況を仮定して示す。
図7に示す状況で、3−copyレプリケーションポリシーを維持するためには、ノードD及びノードEのデータが新たに追加されたノードFにコピーされなければならず、既にノードGが担当していたデータもまたノードFにコピーされなければならない。即ち、新たに追加されたノードをスペースid(spaceid)と仮定して、任意のノードxの先行ノード及び後続ノードをそれぞれ先行オペレーション(x)(predecessor(x))及び後続オペレーション(x)(successor(x))と仮定すると、次のような三段階のステップが行われてもよい。
1.後続オペレーション(スペースid)は、スペースidにスペースidが担当するデータを伝達する。
2.先行オペレーション(スペースid)は、スペースidにスペースidがレプリケーションするデータを伝達する。
3.先行オペレーション(先行オペレーション(スペースid))はスペースidにスペースidがレプリケーションするデータを伝達する。
前記のようなプロセスは、仮想空間上で特定のノードが除外される場合にも同様に実行されてもよい。
他の実施例
以下では、本発明の理解を容易にするために、本発明にかかる分散プログラミング環境を用いて作業を処理する他の実施例を説明する。
本発明の一実施例における分散プログラミング環境は、大容量のデータをソート(sort)するためのマージソート(merge sort)作業に用いられてもよい。
一般的に分散プログラミング環境で行われる大規模データに対するマージソート作業は、マージソートを行うデータをn個のノードに分配し、それぞれのノードでデータ断片(data fragment)に対する部分的なソートが行われた後、ソートされたn個のデータ断片のうち一部をソート基準に合うように併合して新しいデータ断片を生成する過程を、全てのデータ断片が一つのデータに併合されるまで繰り返し行うことにより行われる。この際、併合が繰り返される回数が増加するほど、データ断片のノード間の移動回数が増加するため、ネットワークの負荷が増加し、処理能力が低下する。
しかし、本発明にかかる分散プログラミング環境下では、前記のような問題点を最小化した状態でマージソートを行うことができるが、その具体的な過程は以下のとおりある。
まず、マージソートが行われるデータをn個のプロセスに分配し、それぞれのノードがソートされるデータを所定のハッシュ関数を用いて分散スペースに保存する。この際、ハッシュ関数を適切に設定する場合、保存されるデータがソート基準に基づいて分散スペース内の所定領域にマッピングされてもよい。例えば、ソートされるデータが1,000以下の自然数で構成され、仮想空間が10個の仮想ノードで構成される場合、ハッシュ関数がモジュラー(modular)演算を含むようにすることで、1〜100間のデータは仮想ノード1の領域にマッピングされ、101〜200間のデータは仮想ノード2の領域にマッピングされ、901〜1,000間のデータは仮想ノード10の領域にマッピングされる。このような場合、それぞれの仮想ノードの領域に保存されたデータをソートした後、仮想ノード1の領域に保存されたデータから仮想ノード10の領域に保存されたデータまでを順次併合することでマージソート作業を完了してもよい。このような方法による場合、既存のマージソート方式に比べてノード間のデータ送受信量が減少しネットワークの負荷を減らすことができ、繰り返しの併合過程が省略されるため、処理能力が向上する。
この際、注意しなければならない点は、データの特性によってデータが仮想空間に集中してマッピングされ得るという点である。例えば、前記マージソートの例においてソートされるデータがいくつかの数字のみで構成される場合、特定の仮想ノードにデータが集中するため、分散プログラミングの効率が低下する虞がある。
本発明の一実施例によると、仮想空間にデータを保存する前に、保存されるデータの集合体に対するサンプリング作業を通じてデータの特性を把握することにより、前記のような状況を防止してもよい。先に例示したマージソート作業を例に挙げてより詳細に説明すると、マージソートが行われるデータの一部をサンプリングし、サンプリングされたデータにハッシュ関数を適用した結果、1〜300間の値を有するデータ数が10パーセント程度を占めることが把握される場合、仮想ノード1の領域に1〜300間のデータが保存されるようにハッシュ関数を調整するか、仮想ノード1が担当する仮想空間上の領域を増加させることで、一部の仮想ノードにデータが集中する現象を防止してもよい。
一方、本発明の一実施例における分散プログラミング環境は、レガシーコード(legacy code)を再使用するためのモデルにも適用されてもよい。より具体的には、ほとんどのソースコードは、部分的にシステムのプラットフォームに従属する特性を有するが、システムのプラットフォームがアップグレードされたり変更されたりする場合には既存のソースコードに対する変更作業が必要となる。しかし、本発明による分散プログラミング環境下では、レガシーコードによって処理されるデータを分散スペースを介して入出力することによりレガシーコードを再使用することができるという効果を奏する。より具体的には、システムのプラットフォームが変更された場合にも、分散スペースに保存されるデータの形式を一定に維持することでレガシーコードによるデータ処理結果が変更されたプラットフォーム下でも適用できるようにしてもよい。
以上で説明した本発明にかかる実施例は、多様なコンピューター構成要素によって実行されるプログラム命令語の形態で実現され、コンピューター読み取り可能な記録媒体に記録されてもよい。前記コンピューター読み取り可能な記録媒体は、プログラム命令語、データファイル、データ構造などを単独に、または組み合わせて含むものでもよい。前記コンピューター読み取り可能な記録媒体に記録されるプログラム命令語は、本発明のために特に設計又は構成されたものであってもよく、コンピューターソフトウェア分野の当業者に公知であり使用可能なものであってもよい。コンピューター読み取り可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD−ROM、DVDなどのような光記録媒体、フロプティカルディスク(floptical disk)のような磁気−光媒体(magneto−optical media)及びROM、RAM、フラッシュメモリなどのような、プログラム命令語を保存及び実行するように特に構成されたハードウェア装置が含まれる。プログラム命令語の例としては、コンパイラによって作成されるもののような機械語コードだけでなく、インタープリタなどを用いてコンピュータによって実行することができる高級言語コードも含まれる。前記ハードウェア装置は、本発明にかかる処理を行うために一つ以上のソフトウェアモジュールとして動作するように構成されてもよく、その逆も同様である。
以上、本発明を具体的な構成要素などのような特定の事項と限定された実施例及び図面を参照して説明したが、これは本発明の全体的な理解をより容易にするために提供されたものにすぎず、本発明は前記実施例によって限定されず、本発明が属する分野で通常の知識を有する者であれば、このような記載から多様な修正及び変形が可能である。
従って、本発明の趣旨は前記実施例に限定されてはならず、添付の特許請求の範囲の記載だけでなく、特許請求の範囲の記載と均等または等価的に変形された全てのものは、本発明の範疇に含まれる。
100 通信網
200 クラスタ
200a〜200f ノード
210〜270 仮想ノード
300 アプリケーション

Claims (19)

  1. 分散環境においてデータを処理するための方法であって、
    多数のノードが提供するリソースを用いて仮想空間を生成し、
    第1アプリケーションが前記仮想空間からデータを読み取り又は前記仮想空間にデータを書き込むこと、を含み、
    前記データは、前記データの属性によって決定される前記仮想空間上の特定の位置領域にマッピングされ、
    前記第1アプリケーションは、前記位置領域において前記データに対する読み取り作業又は書き込み作業を行うことを特徴とする方法。
  2. 前記多数のノードのそれぞれは、前記仮想空間の少なくとも一つの仮想ノードに対応することを特徴とする請求項1に記載の方法。
  3. 前記位置領域は、前記データに所定のハッシュ関数を適用することにより決定されることを特徴とする請求項1に記載の方法。
  4. 前記ハッシュ関数は、前記データを前記仮想空間上の特定位置にマッピングさせるためのものであることを特徴とする請求項3に記載の方法。
  5. 前記ハッシュ関数によって処理されるデータは、予めサンプリングされたものであることを特徴とする請求項4に記載の方法。
  6. 前記ハッシュ関数又は前記多数のノードのそれぞれが提供する前記仮想空間の一領域は、前記サンプリングを通じて調節されることを特徴とする請求項5に記載の方法。
  7. 前記書き込まれたデータを第2アプリケーションに提供する段階をさらに含むことを特徴とする請求項1に記載の方法。
  8. 前記第1アプリケーション及び前記第2アプリケーションは、同一のキーを共有することを特徴とする請求項7に記載の方法。
  9. 前記データの属性は、前記キーを含み、前記第2アプリケーションは前記キーを用いて前記データを取得することを特徴とする請求項8に記載の方法。
  10. 請求項1乃至9のいずれか一項に記載の方法を実行するためのコンピュータプログラムを記録することを特徴とするコンピュータ読み取り可能な記録媒体。
  11. 分散環境においてデータを処理するための方法であって、
    多数のノードが提供するリソースを用いて生成される仮想空間と、
    前記仮想空間からデータを読み取り又は前記仮想空間にデータを書き込む第1アプリケーションと、を含み、
    前記データは、前記データの属性によって決定される前記仮想空間上の特定の位置領域にマッピングされ、
    前記第1アプリケーションは、前記位置領域において前記データに対する読み取り作業又は書き込み作業を行うことを特徴とするシステム。
  12. 前記多数のノードのそれぞれは、前記仮想空間の少なくとも一つの仮想ノードに対応することを特徴とする請求項11に記載のシステム。
  13. 前記位置領域は、前記データに所定のハッシュ関数を適用することにより決定されることを特徴とする請求項11に記載のシステム。
  14. 前記ハッシュ関数は、前記データを前記仮想空間上の特定位置にマッピングさせるためのものであることを特徴とする請求項13に記載のシステム。
  15. 前記ハッシュ関数によって処理されるデータは予めサンプリングされたものであることを特徴とする請求項14に記載のシステム。
  16. 前記ハッシュ関数、又は前記多数のノードそれぞれが提供する前記仮想空間の一領域は、前記サンプリングを通じて調節されることを特徴とする請求項15に記載のシステム。
  17. 前記書き込まれたデータが提供される第2アプリケーションをさらに含むことを特徴とする請求項11に記載のシステム。
  18. 前記第1アプリケーション及び前記第2アプリケーションは、同一のキーを共有することを特徴とする請求項17に記載のシステム。
  19. 前記データの属性は、前記キーを含み、前記第2アプリケーションは前記キーを用いて前記データを取得することを特徴とする請求項18に記載のシステム。
JP2011549050A 2009-02-11 2009-04-17 分散スペースを用いて分散プログラミング環境を提供するための方法、システム及びコンピュータ読み取り可能な記録媒体 Active JP5646511B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2009-0011103 2009-02-11
KR1020090011103A KR100983479B1 (ko) 2009-02-11 2009-02-11 분산 스페이스를 이용하여 분산 프로그래밍 환경을 제공하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
PCT/KR2009/002014 WO2010093084A1 (ko) 2009-02-11 2009-04-17 분산 스페이스를 이용하여 분산 프로그래밍 환경을 제공하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체

Publications (2)

Publication Number Publication Date
JP2012517631A true JP2012517631A (ja) 2012-08-02
JP5646511B2 JP5646511B2 (ja) 2014-12-24

Family

ID=42561918

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011549050A Active JP5646511B2 (ja) 2009-02-11 2009-04-17 分散スペースを用いて分散プログラミング環境を提供するための方法、システム及びコンピュータ読み取り可能な記録媒体

Country Status (4)

Country Link
US (1) US8799619B2 (ja)
JP (1) JP5646511B2 (ja)
KR (1) KR100983479B1 (ja)
WO (1) WO2010093084A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101140484B1 (ko) * 2010-08-24 2012-04-30 엔에이치엔비즈니스플랫폼 주식회사 수평적 구조의 파일 시스템을 이용하여 계층적 구조의 파일 시스템을 지원하는 파일 관리 시스템 및 파일 관리 방법
RU2708043C2 (ru) * 2016-11-01 2019-12-03 Общество с ограниченной ответственностью "НПО Аналитика" Способ сбора информации в оффлайне для анализа аудиторий в наружной рекламе и измерения эффективности размещения наружной рекламы
KR102019799B1 (ko) * 2016-11-09 2019-09-09 건국대학교 산학협력단 읽기 및 쓰기가 가능한 가상 디스크의 병합 마운팅을 통한 가상 클러스터 구축 방법 및 장치
RU2725056C1 (ru) * 2019-08-30 2020-06-29 Общество с ограниченной ответственностью "Шопстер Технологии" Способ измерения контактов с рекламным носителем в наружной рекламе

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004252663A (ja) * 2003-02-19 2004-09-09 Toshiba Corp ストレージ装置、分担範囲決定方法及びプログラム
JP2004266796A (ja) * 2002-09-11 2004-09-24 Microsoft Corp 効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
KR100349658B1 (ko) * 2000-12-04 2002-08-24 한국전자통신연구원 분산 가상환경을 위한 실시간 상태관리 서버와 그의공유공간 상태정보 관리방법
KR100899462B1 (ko) 2004-07-21 2009-05-27 비치 언리미티드 엘엘씨 블록 맵 캐싱 및 vfs 적층 가능 파일 시스템 모듈들에기초한 분산 저장 아키텍처
JP2006065525A (ja) 2004-08-26 2006-03-09 Hitachi Ltd 分散環境における仮想共有空間の実現方法
US7734890B2 (en) * 2006-10-06 2010-06-08 Okralabs Llc Method and system for using a distributable virtual address space
JP5373295B2 (ja) * 2008-02-04 2013-12-18 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチノード・サーバシステム、負荷分散方法、リソース管理サーバ、およびプログラム
US8386750B2 (en) * 2008-10-31 2013-02-26 Cray Inc. Multiprocessor system having processors with different address widths and method for operating the same
US20110276776A1 (en) * 2010-05-07 2011-11-10 Tatu Ylonen Oy Ltd Addressing for Huge Direct-Mapped Object Systems
KR101694977B1 (ko) * 2010-12-17 2017-01-11 한국전자통신연구원 통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004266796A (ja) * 2002-09-11 2004-09-24 Microsoft Corp 効率的な分散データ構造を備えた改良されたオーバレイネットワークを生成するシステムおよび方法
JP2004252663A (ja) * 2003-02-19 2004-09-09 Toshiba Corp ストレージ装置、分担範囲決定方法及びプログラム

Also Published As

Publication number Publication date
US8799619B2 (en) 2014-08-05
WO2010093084A1 (ko) 2010-08-19
KR100983479B1 (ko) 2010-09-27
US20120030446A1 (en) 2012-02-02
JP5646511B2 (ja) 2014-12-24
KR20100091757A (ko) 2010-08-19

Similar Documents

Publication Publication Date Title
CN112204513B (zh) 多租户存储系统中的基于组的数据复制
US10394847B2 (en) Processing data in a distributed database across a plurality of clusters
US10108632B2 (en) Splitting and moving ranges in a distributed system
US8290919B1 (en) System and method for distributing and accessing files in a distributed storage system
US11847098B2 (en) Metadata control in a load-balanced distributed storage system
Essa et al. Mobile agent based new framework for improving big data analysis
US8392368B1 (en) System and method for distributing and accessing files in a distributed storage system
CN102981929B (zh) 磁盘镜像的管理方法和系统
US9535756B2 (en) Latency-hiding context management for concurrent distributed tasks in a distributed system
Long et al. A toolkit for modeling and simulating cloud data storage: An extension to cloudsim
JP2021503640A (ja) 複製されたタスク結果を使用してコンピュータクラスタを管理すること
US20200401458A1 (en) Adaptive Work Distribution in Distributed Systems
JP5646511B2 (ja) 分散スペースを用いて分散プログラミング環境を提供するための方法、システム及びコンピュータ読み取り可能な記録媒体
Li et al. Wide-area spark streaming: Automated routing and batch sizing
US20190173759A1 (en) Network traffic management for virtualized graphics devices
Hadadian Nejad Yousefi et al. IMOS: improved meta-aligner and Minimap2 on spark
Anjos et al. BIGhybrid: a simulator for MapReduce applications in hybrid distributed infrastructures validated with the Grid5000 experimental platform
JP5446746B2 (ja) 仮想コンピュータシステム、仮想コンピュータ管理方法および管理プログラム
Kumar et al. Graphsteal: Dynamic re-partitioning for efficient graph processing in heterogeneous clusters
Liu et al. The comprehensive performance rating for hadoop clusters on cloud computing platform
JP2008225686A (ja) 分散型データ処理プラットフォームにおけるデータ配置管理装置と方法、システム及びプログラム
JP2004046372A (ja) 分散処理システム、リソース割当方法およびプログラムならびにリソース割当プログラムが記録された記録媒体
CN103631648B (zh) 一种任务处理方法及系统
CN107851101B (zh) 在分布式计算系统中执行容错数据处理的方法及容错分布式计算系统
US10824640B1 (en) Framework for scheduling concurrent replication cycles

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140507

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140807

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140814

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140908

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141007

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141105

R150 Certificate of patent or registration of utility model

Ref document number: 5646511

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250