JP6580566B2 - 分散ファイルシステム内のデータへの並列アクセス - Google Patents

分散ファイルシステム内のデータへの並列アクセス Download PDF

Info

Publication number
JP6580566B2
JP6580566B2 JP2016530184A JP2016530184A JP6580566B2 JP 6580566 B2 JP6580566 B2 JP 6580566B2 JP 2016530184 A JP2016530184 A JP 2016530184A JP 2016530184 A JP2016530184 A JP 2016530184A JP 6580566 B2 JP6580566 B2 JP 6580566B2
Authority
JP
Japan
Prior art keywords
data
processes
computing system
designation
distributed processing
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.)
Active
Application number
JP2016530184A
Other languages
English (en)
Other versions
JP2017506373A (ja
Inventor
アン エム. ウォルラス
アン エム. ウォルラス
ブライアン フィル ダウロス
ブライアン フィル ダウロス
マーシャル アラン イスマン
マーシャル アラン イスマン
ティモシー ウェイクリング
ティモシー ウェイクリング
Original Assignee
アビニシオ テクノロジー エルエルシー
アビニシオ テクノロジー エルエルシー
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 アビニシオ テクノロジー エルエルシー, アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2017506373A publication Critical patent/JP2017506373A/ja
Application granted granted Critical
Publication of JP6580566B2 publication Critical patent/JP6580566B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/1858Parallel file systems, i.e. file systems supporting multiple processors
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • User Interface Of Digital Computer (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)

Description

関連出願の相互参照
本出願は、2013年11月26日に出願した米国特許出願第14/090,434号明細書の優先権を主張するものである。
本発明は、分散ファイルシステム内のデータへの並列アクセスに関する。
分散ファイルシステムの例は、Hadoop分散ファイルシステム(HDFS,Hadoop Distributed File System)である。HDFSは、Javaで記述された分散型のスケーラブル及びポータブルなファイルシステムである。HDFSは、ファイルシステム内のファイルに関するデータを保持する1組のノード(「データノード(datanode)」)を有し、データネットワークを介してファイルのブロックをサーバアップする(server up)ことができる。概して、各ファイルは、複数のノードに分散される。ファイルシステムに関するディレクトリは、1組のノード(「ネームノード(namenode)」)によって保有される。このディレクトリは、ファイルシステム内のそれぞれの命名されたファイルに関する分散されたブロックの位置を特定するために使用され得る。
図1A〜Bを参照すると、分散ファイルシステム内の、例えば、HDFS内のデータを処理する1つの方法は、MapReduceプログラミングモデルを使用することである。概して、MapReduceプログラムは、フィルタリング及びソート(生徒をファーストネームによってそれぞれの名前につき1つのキューにソートするなど)を実行するMapプロシージャと、集計動作(各キュー内の生徒の数を数えて名前の頻度を生成するなど)を実行するReduceプロシージャとを含む。システムのユーザは、Mapプロシージャ及びReduceプロシージャを指定するが、必ずしも各プロシージャ(すなわち、「プロセス」)のインスタンス(若しくは呼び出し)の数又はそれらのプロシージャが実行されるノードを決定しない。むしろ、「MapReduceシステム」(「インフラストラクチャ」、「フレームワーク」とも呼ばれる)が、1組の分散されたノードを整理し、さまざまなタスク(例えば、Mapプロシージャ及びReduceプロシージャ及び関連する通信)を並列に実行し、システムのさまざまな部分の間のすべての通信及びデータの転送を管理し、冗長性及び故障に備え、プロセス全体を包括的に管理することによってまとまる。MapReduceシステムは、データの位置を意識しながらMap又はReduceプロシージャのインスタンスの実行をスケジューリングすることができる。図1Aにおいては、HDFSが、分散ファイルシステム110の例であり、Hadoopフレームワークは、1組のマップ(map)プロシージャ24がファイルシステム110内の分散されたファイルの部分14を処理し、出力ファイル16を記憶するためにプロセッサ122上で並列に実行されるような分散処理システムの例である。図1Bにおいては、1組のリデュース(reduce)プロシージャ26が、マッププロシージャの出力を処理して出力ファイル18を生成し、MapReduceの実行を完了させる。
MapReduceシステムと統合された分散ファイルシステムを用いて得られ得る計算の有利さがあるものの、その他のプログラミングパラダイムによる処理のためのデータへのアクセスは、非効率的である可能性がある。例えば、データの抽出が、ボトルネックをもたらす可能性があり、例えば、データの処理がそれ自体は並列的であるとしても、ファイルに関するすべてのデータを単一のデータストリームを通じて渡すことになる可能性がある。例えば、HDFSは、コンテンツが並列に処理され得るプロセス又はサーバに潜在的にストリーミングされるファイルのコンテンツを標準出力に渡すファイルシステムコマンド(hadoop fs -cat file)を提供する。
この種のボトルネックを防止する1つの手法は、大きなファイルを別々の命名された(つまり、ディレクトリ内に個々のエントリを有する)部分に明示的に分割し、それから、各部分が別々のストリームで抽出されるようにすることである。しかし、そのような手法は、欠点、例えば、部分の数に関する事前の判断を必要とすることと、例えば、命名された部分がそれら自体分散されるので、部分を抽出すべきノードの潜在的に準最適な選択とを有する可能性がある。
分散ファイルシステムからアプリケーション、例えば、データベースエンジンにデータを提供する別の手法は、ファイルシステム内にアプリケーションを実装するか、又はファイルシステムに密接に結合されたアプリケーションを実装することである。しかし、そのような手法は、特定のアプリケーションを用いる処理に制限される可能性があり、ファイルシステムにポーティング(port)されないアプリケーションの実装の進歩の恩恵を必ずしも受けない。
一態様においては、概して、分散ファイルシステムからのデータの並列的な抽出の新しい手法が、所望のユニットのすべてのデータが複数のストリーム上に分割されるように複数の並列的なデータストリームを生成することによってファイルシステム内の1又は2以上の命名されたユニット(例えば、ファイル)への並列アクセスを提供する。一部の例においては、複数のストリームが、グラフに基づく計算システム、データフローに基づくシステム、及び/又は(例えば、リレーショナル)データベースシステムなどの計算システムの並列的な実装への複数の入力を形成する。
手法の1つの実装は、ファイルシステム内の1又は2以上の命名されたユニット(例えば、ファイル)の指定及び指定されたユニットのコンテンツに関する1組の送信先の指定を受領するファイルストレージシステムのスーパーバイザ又はマネージャ機能を利用する。そのとき、スーパーバイザ機能は、抽出プロシージャの複数の実行されるインスタンスを生成する。抽出プロシージャの各インスタンスは、所望のコンテンツの部分にアクセスするためにスーパーバイザ機能によって構成され、例えば、データストリーミング(例えば、TCPストリーム、ローカルの名前付きパイプなど)を用いて1組の指定された送信先のうちの1つにそのコンテンツを転送するように構成される。一部の例において、スーパーバイザ機能は、抽出プロシージャのインスタンスの所望の数(又は制限)、送信先への送信の前に抽出されたコンテンツに対して実行すべき特定の計算プロシージャ、又は抽出プロシージャがホストされるべき所望の場所(例えば、ノード)に関する情報などのその他の情報も受信する。
さまざまな手法が、1組の送信先を指定し、抽出プロシージャとそれらのプロシージャからのデータの消費者との間の接続を確立するために使用され得る。一例において、1組の送信先は、名前を有し、各抽出プロシージャは、共有された「ブローカ」にアクセスする方法(例えば、ネットワークアドレス)を用いて構成される。データを転送する前に、抽出プロシージャは、要求元の抽出プロセスからコンテンツの送信先に特定の位置(例えば、ネットワークアドレス)を提供するブローカと通信する。
抽出プロシージャの1つの実装は、(例えば、Reduce段階のない)標準的なMap機能を利用する。標準的なスーパーバイザ機能は、Mapのインスタンスをどこで実行すべきか及びMapによって処理される所望のファイルのセグメントを決定する。そのとき、マップによって実行される特定のプロシージャ(例えば、Mapのユーザ指定の出力フィルタ)が、コンテンツをファイルシステム上に記憶させるのではなく所望の送信先にそのコンテンツをストリーミングする。
システムのいくつかのバージョンにおいては、抽出されたコンテンツの消費者又は潜在的な消費者であるプロセスのインスタンスが、抽出プロシージャをホストするために利用可能な同じ計算ノード上で実行され、ブローカによって実装される判断プロセスが、抽出プロシージャ及び抽出プロシージャによって抽出されたデータの消費者を一緒に配置しようと試み、それによって、(例えば、インメモリメッセージング、UNIXの名前付きパイプなどを通じた)処理するためのコンテンツのローカル転送を可能にし得る。一部のそのようなバージョンにおいては、ブローカが、例えば、抽出プロシージャと同じ計算ノード上に一緒に配置される送信先プロセスを選択することによって各抽出プロシージャからの抽出されたデータに関する送信先を選択する。
一部の実装においては、特定の処理が、抽出プロシージャ内で効率的に実施されるか又は抽出プロシージャと密接にリンクされる。例えば、特定のデータフィルタリング、フォーマットの再構築、又は場合によっては特定の集約タスクが、抽出プロシージャ内でホストされる可能性がある。
一態様においては、概して、データを処理するための方法が、分散処理システムの分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を受信するステップと、分散処理システムとは別々の計算システムへのデータ接続を確立するための指定を受信するステップと、分散処理システム上の第1の複数のプロセスを呼び出すステップであって、第1の複数のプロセスの各プロセスが、分散ファイルシステム内の命名されたユニットの対応する部分にアクセスするために分散ファイルシステムのストレージ要素とのデータ接続を確立する、ステップと、分散処理システムと計算システムとの間の複数のデータ接続を形成するためにデータ接続を確立するための指定を用いるステップであって、少なくとも1つのデータ接続が、第1の複数のプロセスの各プロセスと計算システムとの間で形成される、ステップと、分散処理システムから計算システムに複数のデータ接続を介して同時にデータを渡すステップとを含む。
態様は、以下の特徴のうちの1又は2以上を含み得る。
同時にデータを渡すステップは、第1の複数のプロセスのプロセスによってファイルシステムからデータを抽出するステップと、抽出されたデータを、分散ファイルシステムにさらに記憶することなく前記プロセスから計算システムに送信するステップとを含む。
命名されたユニットの指定を受領することは、命名されたユニットのテキストのファイル名を受領することを含む。
命名されたユニットの部分は、命名されていない。
データ接続を確立するための指定を受領することは、ブローカの指定を受領することを含み、データ接続を形成することは、第1の複数のプロセスの各プロセスがブローカと通信して計算システムとのデータ接続を確立するためのさらなる指定を決定することを含む。
データ接続を確立するための指定を受領することは、計算システムへのブロードキャストのための指定を受領することを含む。
計算システムは、第2の複数のプロセスを含み、第1の複数のプロセスの各プロセスと計算システムとの間のデータ接続を形成することが、第1の複数のプロセスのプロセスと第2の複数のプロセスのプロセスとの間のデータ接続を形成することを含む。
方法は、計算システムの第2の複数のプロセスのプロセスを呼び出すステップをさらに含む。
第1の複数のプロセスの少なくとも一部及び第2の複数のプロセスの少なくとも一部は、プロセッサの共通の組で実行される。
分散処理システム及び計算システムは、データネットワークを介して結合されるはっきりと異なる計算リソースを使用する。
分散処理システム及び計算システムは、計算リソースを共有する。
別の態様においては、概して、ソフトウェアが、データを処理するための、非一時的コンピュータ可読媒体上に記憶される。ソフトウェアは、システムに、分散処理システムの分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を受信することと、分散処理システムとは別々の計算システムへのデータ接続を確立するための指定を受信することと、分散処理システム上の第1の複数のプロセスを呼び出すことであって、第1の複数のプロセスの各プロセスが、分散ファイルシステム内の命名されたユニットの対応する部分にアクセスするために分散ファイルシステムのストレージ要素とのデータ接続を確立する、呼び出すことと、分散処理システムと計算システムとの間の複数のデータ接続を形成するためにデータ接続を確立するための指定を用いることであって、少なくとも1つのデータ接続が、第1の複数のプロセスの各プロセスと計算システムとの間で形成される、用いることと、分散処理システムから計算システムに複数のデータ接続を介して同時にデータを渡すこととを行わせるための命令を含む。
別の態様においては、概して、データを処理するためのシステムが、分散ファイルシステムを含む分散処理システムと、分散処理システムとは別々の計算システムとを含む。分散処理システムは、分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を受信すること、計算システムとのデータ接続を確立するための指定を受信すること、第1の複数のプロセスを呼び出すことであって、第1の複数のプロセスの各プロセスが、分散ファイルシステム内の命名されたユニットの対応する部分にアクセスするために分散ファイルシステムのストレージ要素とのデータ接続を確立する、呼び出すこと、分散処理システムと計算システムとの間の複数のデータ接続を形成するためにデータ接続を確立するための指定を用いることであって、少なくとも1つのデータ接続が、第1の複数のプロセスの各プロセスと計算システムとの間で形成される、用いること、及び計算システムに複数のデータ接続を介して同時にデータを渡すことを行うように構成される。
別の態様においては、概して、データを処理するための方法が、分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を提供するステップと、計算システムとのデータ接続を確立するための指定を提供するステップと、分散処理システム上での呼び出しのために第1の複数のプロセスのプロセスに関する指定を提供するステップであって、第1の複数のプロセスの各プロセスが、分散ファイルシステム内の命名されたユニットの対応する部分にアクセスするために分散ファイルシステムのストレージ要素とのデータ接続を確立するために指定される、ステップと、分散処理システムと計算システムとの間の複数のデータ接続を形成する要求を受信し、第1の複数のプロセスの各プロセスと計算システムとの間にある少なくとも1つのデータ接続を形成するための情報を提供するステップと、計算システムにおいて第1の複数のプロセスから複数のデータ接続を介して同時にデータを受信するステップとを含む。
態様は、以下の特徴のうちの1又は2以上を含み得る。
方法は、計算システムにおいて第2の複数のプロセスを呼び出すステップであって、データ接続が第1の複数のプロセスのプロセスと第2の複数のプロセスのプロセスとの間で形成される、ステップをさらに含む。
第2の複数のプロセスを呼び出すステップは、第1の複数のプロセスをホストするプロセッサ上で前記プロセスの少なくとも一部を呼び出すステップを含み、データ接続の少なくとも一部が、前記プロセッサのローカルにある。
データ接続を形成するための情報を提供するステップは、要求元のプロセスの位置及び複数の利用可能なエンドポイントの位置に従って利用可能なエンドポイントからデータ接続のためのエンドポイントを選択するステップを含む。
別の態様においては、概して、ソフトウェアが、データを処理するための、非一時的コンピュータ可読媒体上に記憶される。ソフトウェアは、システムに、分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を提供することと、計算システムとのデータ接続を確立するための指定を提供することと、分散処理システム上での呼び出しのために第1の複数のプロセスのプロセスに関する指定を提供することであって、第1の複数のプロセスの各プロセスが、分散ファイルシステム内の命名されたユニットの対応する部分にアクセスするために分散ファイルシステムのストレージ要素とのデータ接続を確立するために指定される、提供することと、分散処理システムと計算システムとの間の複数のデータ接続を形成する要求を受信し、第1の複数のプロセスの各プロセスと計算システムとの間にある少なくとも1つのデータ接続を形成するための情報を提供することと、計算システムにおいて第1の複数のプロセスから複数のデータ接続を介して同時にデータを受信することとを行わせるための命令を含む。
別の態様においては、概して、データを処理するためのシステムが、分散ファイルシステムと、分散処理システムと、計算システムと、分散処理システムのクライアントであって、分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を提供すること、計算システムとのデータ接続を確立するための指定を提供すること、分散処理システム上での呼び出しのために第1の複数のプロセスのプロセスに関する指定を提供することであって、第1の複数のプロセスの各プロセスが、分散ファイルシステム内の命名されたユニットの対応する部分にアクセスするために分散ファイルシステムのストレージ要素とのデータ接続を確立するために指定される、提供すること、分散処理システムと計算システムとの間の複数のデータ接続を形成する要求を受信し、第1の複数のプロセスの各プロセスと計算システムとの間にある少なくとも1つのデータ接続を形成するための情報を提供すること、及び計算システムにおいて第1の複数のプロセスから複数のデータ接続を介して同時にデータを受信することとを行うように構成された、クライアントとを含む。
別の態様においては、概して、マップ−リデュースデータ処理フレームワークを実装する分散処理システムから提供されるデータを処理するための方法が、分散処理システム上での呼び出しのためにマッププロシージャに関する指定を分散処理システムに提供するステップであって、マッププロシージャの指定が、処理するための分散ファイルシステム内の1又は2以上の命名されたユニットを特定し、分散処理システムとは別々の計算システムとのデータ接続を確立するための指定を含む、ステップと、分散処理システム上でマッププロシージャの複数のインスタンスの実行を引き起こすステップと、マッププロシージャの実行されるインスタンスと計算システムとの間の複数のデータフロー接続を形成する要求を受信し、マッププロシージャのそれぞれの実行されるインスタンスと計算システムとの間にある少なくとも1つのデータフロー接続を形成するための情報を提供するステップと、複数のデータフロー接続を介して同時にデータを受信し、受信されたデータを計算システムにおいて処理するステップとを含む。
態様は、以下の特徴のうちの1又は2以上を含み得る。
分散処理システムは、Apache Hadoop(登録商標)システムを含む。
データフロー接続は、トランスポートレイヤデータネットワーク通信接続を含む。
別の態様においては、概して、ソフトウェアが、データを処理するために、非一時的コンピュータ可読媒体上に記憶され、データは、マップ−リデュースデータ処理フレームワークを実装する分散処理システムから提供される。ソフトウェアは、システムに、分散処理システム上での呼び出しのためにマッププロシージャに関する指定を分散処理システムに提供することであって、マッププロシージャの指定が、処理するための分散ファイルシステム内の1又は2以上の命名されたユニットを特定し、分散処理システムとは別々の計算システムとのデータ接続を確立するための指定を含む、提供することと、分散処理システム上でマッププロシージャの複数のインスタンスの実行を引き起こすことと、マッププロシージャの実行されるインスタンスと計算システムとの間の複数のデータフロー接続を形成する要求を受信し、マッププロシージャのそれぞれの実行されるインスタンスと計算システムとの間にある少なくとも1つのデータフロー接続を形成するための情報を提供することと、複数のデータフロー接続を介して同時にデータを受信し、受信されたデータを計算システムにおいて処理することとを行わせるための命令を含む。
別の態様においては、概して、データを処理するためのシステムが、分散ファイルシステムと、分散処理システムと、分散処理システムとは別々の計算システムと、分散処理システムのクライアントであって、分散処理システム上での呼び出しのためにマッププロシージャに関する指定を分散処理システムに提供することであって、マッププロシージャの指定が、処理するための分散ファイルシステム内の1又は2以上の命名されたユニットを特定し、計算システムとのデータ接続を確立するための指定を含む、提供すること、分散処理システム上でマッププロシージャの複数のインスタンスの実行を引き起こすこと、マッププロシージャの実行されるインスタンスと計算システムとの間の複数のデータフロー接続を形成する要求を受信し、マッププロシージャのそれぞれの実行されるインスタンスと計算システムとの間にある少なくとも1つのデータフロー接続を形成するための情報を提供すること、及び複数のデータフロー接続を介して同時にデータを受信し、受信されたデータを計算システムにおいて処理することを行うように構成された、クライアントとを含む。
手法の1又は2以上の態様は、分散ファイルシステム内に記憶されたデータへの効率的なアクセスの技術的問題に対処する。それぞれが計算システムにデータのストリームを提供する(例えば、スーパーバイザ又はマネージャの制御下の)抽出プロシージャの複数のインスタンスを呼び出す技術的な解決策は、抽出プロシージャの複数のインスタンスがデータに効率的に並列にアクセスすることを可能にする。この解決策は、例えば、ネイティブのファイルシステムコマンド(例えば、「hadoop fs -cat file」コマンド)を用いるデータの抽出のボトルネックを避けるという技術的利点を有する。ボトルネックを避けることによって、別々の計算システムにおいてデータ処理を実行することが実現され得る可能性があり、それによって、ファイルシステム上で利用され得る可能性がある計算の形態(例えば、MapReduce)に限定されない。
1若しくは2以上の態様は、通常のHadoopシステムに優る計算の有利さを提供する。通例、Hadoopは、Mapジョブの出力及びReduceジョブの出力がファイルに書き込まれるMapReduceパラダイムで動作する。これは、極めて並列的であるが、複数のファイル書き込みが原因で入力/出力の課題を抱えている。通例、これは、人がHadoopによって得る並列性の恩恵のおかげで許容される。しかしながら、並列性の恩恵は、本明細書において説明される手法によって入力/出力のコストなしに実現され得る。一部の例においては、Mapジョブの出力を並列に傍受し、それらの結果をファイルに書き込むことなく、その代わりに、それらの結果を、並列にデータを処理することができる並列オペレーティングシステムにTCP/IPによって送信することによって効率性が実現される。それによって、そのような方法は、並列の速さと、ファイル入力/出力のコストがかからないこととの両方を実現する。別の恩恵は、MapReduceが比較的柔軟性が低く、動作が遅く、その他のデータベースとうまく結びつかず、データをMapReduceパラダイムから脱却させることによって、さらなる柔軟性、相互運用性、効率、速度などが得られる可能性があることである。
本発明のその他の特徴及び利点は、以下の説明及び請求項から明らかになるであろう。
マップ動作及びリデュース動作をそれぞれ示すブロック図である。 分散ファイルシステムへの並列アクセスを提供するためのシステムのブロック図である。 ファイルシステムへの並列アクセスを確立するための制御通信を示すシステムのブロック図である。
図2を参照すると、コンピューティングシステム100が、分散ファイルシステム110、分散処理システム120を含み、さらに、計算システム130を含むか又は計算システム130にアクセスすることができる。この種のファイルシステム110の一例は、Hadoop分散ファイルシステム(HDFS)であり、分散処理システム120は、Hadoopフレームワークであるが、本明細書において説明される手法はHDFSに関連した使用に限定されないことを理解されたい。分散ファイルシステム110は、語「ファイル」によって特定の属性を暗示することを意図せずに以下で「ファイル」と呼ばれる多くの命名されたユニットのためのストレージを含む。概して、ファイルの名前は、フォルダなどの包含するユニットを参照するパスを含む可能性がある。概して、各ファイルは、そのファイルの部分をファイルシステムの異なるデータストレージ112(例えば、ディスクサブシステム)上に記憶させる可能性がある。
一部の実装において、上述の手法は、マッププロシージャ124がHadoopファイルシステム内の命名されたファイルの部分114に効率的にアクセスするように、Hadoopフレームワークを利用してプロセッサ122上で並列にマッププロシージャ124のコピーの実行を引き起こす。しかし、図1Bに示されたようにしてリデュースフェーズにおいてさらに処理するために、図1Aに示されたようにして、Hadoopフレームワークを用いてマッププロシージャに中間ファイルをHadoopファイルシステム内に記憶させるのではなく、マッププロシージャ124は、中間データがHadoopファイルシステム内に記憶されることを必要とせずに、ファイルの部分114から決定されたデータを計算システム130に複数の別々のストリームで直接ストリーミングするように構成される。Hadoopシステムは、マッププロシージャ124の数及びマッププロシージャ124が実行されるべき適切なプロセッサ122を決定し、それによって、部分114への効率的なアクセスを提供することができる。そのような実装においては、データがマッププロシージャから直接渡されるので、リデュースプロシージャが省略され得る。以下の説明はHadoopインフラストラクチャを利用する実装に限定されないことに留意されたい。
コンピューティングシステム100によってサポートされる1つの機能は、計算システム130において処理するためにファイルシステム110内の命名されたユニットのうちの1つ又は集合のコンテンツを並列に抽出することである。概して、計算システム130は、すべてのデータが単一のストリームを通じて渡された場合より効率的にデータの複数のストリームを受信し、処理する能力を有する。一部の例において、これらのストリームはローカルエリアネットワークを介したTCP/IPに基づくセッションを利用し、その他の例においては、(例えば、Unixの名前付きパイプを用いる)その他の形態のデータ転送が使用される。転送されているデータを「ストリーム」と呼ぶことは、包括的に理解されるべきであり、データ転送のいかなる特定の形式(例えば、「ストリーミング」)を暗示すると理解されるべきでないことに留意されたい。
代表的な命名されたユニットが、複数のデータストレージ112に存在する部分114を有するものとして図2に示される。並列抽出機能が、計算システム130のプロセス134へのこれらの部分114のデータの転送を提供する。例えば、各プロセス134は、1又は2以上のデータストリームにアクセスすることができる可能性がある。したがって、場合によっては、データの部分114とプロセス134との間に一対一の対応がある可能性があるが、より広く、部分とプロセスとの間に多対一の関係がある可能性がある。一部の実施形態において、分散ファイルシステム110に記憶された命名されたユニットは、サブユニットの特定の特徴を暗示するように意図せずに説明のために本明細書において「レコード」と呼ばれる1組のこれらのサブユニットからなる。ファイルシステム内の命名されたユニットの各部分114は、これらのレコードのうちの1又は2以上からなる。以下の検討において、これらのレコードは、順序付けられていないものとして扱われる。しかし、レコードは、順序付けられ、ファイル全体に関する順序を再構成するために使用され得るレコード番号に関連付けられる(例えば、レコードに関連して記憶される)可能性がある。
分散処理システム120は、いくつかの別々のプロセッサ122(例えば、物理的若しくは仮想的な計算ノード、サーバ、及び/又は計算サービスを提供するその他のユニット)を有する。各プロセッサは、データストレージ112(例えば、物理的若しくは論理的なディスク、複数のディスクサブシステムなど)のうちの1又は2以上にアクセスすることができる。概して、特定のプロセッサ122が、その他のプロセッサ122よりも効率的にデータストレージ112のうちの1又は2以上にアクセスする可能性がある。例えば、プロセッサ122は、データがローカルエリアネットワークを介して転送されることを必要とするストレージ112にアクセスすることができるよりも効率的に、そのプロセッサへのローカルデータ接続を有するストレージ112にアクセスすることができる可能性がある。抽出機能の実行中、抽出プロセス124(例えば、オペレーティングシステムプロセス又はオペレーティングシステムプロセス内の計算ユニット)が、分散処理システムのプロセッサ122のそれぞれ又は複数で実行される。各プロセスが、抽出されるべきファイルの1又は2以上の部分114にアクセスし、その部分のコンテンツ(例えば、レコード)が、計算システム130のプロセス134へのデータ接続を通る。
図3を参照すると、並列抽出機能の実施形態が、抽出プロセスに含まれるプロセスの呼び出しを調整し、これらのプロセスの間のデータ接続の確立を支援するいくつかの要素を利用する。図3は、プロセス124(例えば、Hadoopマッププロシージャ)と、プロセス124によって提供されたデータがさらに処理されるプロセス134との間の接続の確立を調整するために使用されるプロシージャ及びその他の構成要素を示す。点線は、接続を確立する際に使用される制御通信の経路を示す。この実施形態においては、コーディネータ142が、分散ファイルシステム110内にある特定のファイル又はファイルの集合に関するデータのいくつかのプロセス134による処理を引き起こす役割を担う。コーディネータ142は、(例えば、オペレーティングシステムプロセス又はオペレーティングシステムプロセス内のその他の計算ユニットとして)プロセス134を呼び出させる。また、コーディネータ142は、それぞれの呼び出されたプロセス134がブローカ144に連絡することができるようにそのプロセスに情報を渡し、それぞれの呼び出されたプロセス134は、そのプロセスの位置についての情報(例えば、プロセスをホストするプロセッサの識別情報)を含む情報をブローカに渡す。一部の実装においては、ブローカ144が、コーディネータ142によってやはり呼び出されるか、又はコーディネータ142及びブローカ144の機能が、1つのユニットへと組み合わされる。そして、コーディネータ142は、分散ファイルシステム110及び関連する処理システム120のマネージャ115と通信する。コーディネータ142は、処理されるべきファイル又はファイルの集合の名前及びブローカ144の位置をマネージャ115に渡す。
現時点で、又は従来の構成において、コーディネータ142は、命名されたファイルの部分を抽出するためにプロセッサ120上で呼び出されるべきプロシージャをマネージャ115に対して(例えば、名前、コードによって)特定する。マネージャ115は、命名されたファイルの部分114(図1参照)がどこにあるかを判定し、これに基づいて、どのプロセッサ120(図1参照)上でプロセス124のうちの1つとしてプロシージャを呼び出すべきかを決定する。呼び出されるプロセス124は、それらのプロセス124が呼び出されるときに、又はマネージャ115とのその後の通信によって、ブローカ144にどのようにして連絡すべきかを知らされる。各プロセス124は、データを受信するプロセス134のうちの1つに連絡すべきアドレスなどの情報を要求するブローカに連絡する。少なくとも一部の実装において、ブローカは、例えば、(例えば、プロセスを1つのプロセッサ上に一緒に配置することによって)要求元の抽出プロセス124及び受信するプロセス134からのデータ転送における通信オーバーヘッドを削減するためにプロセスの位置に応じてプロセス134のうちの1つを選択し、選択されたプロセス134に関するアドレス情報を抽出プロセス124に送り返す。それから、プロセス124は、プロセス134に連絡してデータ接続を確立する。
この時点で、(図2の太線で示された)データストレージ112、プロセス124、及びプロセス134の間のデータ接続が確立され、プロセス124が分散ファイルシステム110から計算システム130のプロセス134に並列的にデータを転送し始める。
明示的なブローカ144の機能がすべての実装で必要である訳ではないことに留意されたい。例えば、プロセス124は、接続を形成するために応答するプロセス134を招待するためにネットワークブロードキャストの手法を使用することができ、プロセス134は、接続を形成するためにプロセス124に個々に応答するか又はグループとして調整して応答することができる。
分散ファイルシステムがHadoop分散ファイルシステム(HDFS)である1つの特定の実装において、マネージャ115は、MapReduceシステムのネイティブな部分として実装される。この実装においては、(MapReduceシステムにネイティブでない)コーディネータ142が、対応するReduce処理を指定することなく、ファイル名及び実行すべきMap機能を指定する。マネージャ115は、従来のMapReduce処理にしたがって、ファイルシステム内の命名されたファイルの部分の位置のマネージャ115の認識に応じて、プロセス124としての指定されたMap機能の実行をまとめ上げる。Map機能の指定は、Map機能の各インスタンスがブローカ144と通信するために必要な情報を組み込み、それによって、計算システム130のプロセス134とのデータ接続を形成する。
分散処理システム120及び計算システム130は必ずしも異なるコンピュータ処理ノードでホストされないことを理解されたい。例えば、上で導入されたように、プロセッサ(例えば、処理ノード、サーバ)の共通の組が、プロセス124をホストするためにマネージャ115によって使用され、データを実際に処理するプロセス134をホストするためのコーディネータ142によって使用され得る。一部の例においては、プロセス124とプロセス134との間の通信がノードの間を通らないとき、例えば、Unixの名前付きパイプ、共有メモリを通じたメッセージの受け渡しなどを用いる効率的なデータ受け渡し手法が使用され得る。別々の抽出プロセス124及びデータを受信するプロセス134を使用することは、それらのプロセスの間の効率的な通信を維持しながら異なる種類のソフトウェアが実行されることを可能にすることに留意されたい。例えば、抽出プロセスは、Java仮想マシン(JVM,Java Virtual Machine)内の別々のタスクとしてJavaで実装される可能性があり、一方、プロセス134は、例えば、C又はC++で実装されたオペレーティングシステムのプロセスとして実装される可能性がある。
計算システム130は、さまざまな形態を有する可能性がある。一例として、システムは、頂点間の(作業要素(work element)、すなわちデータ、のフローを表す)有向リンクによって接続された(データ処理構成要素を表す)頂点を含むデータフローグラフを実装する。例えば、そのような環境は、参照により本明細書に組み込まれる「Managing Parameters for Graph-Based Applications」と題された米国特許出願公開第2007/0011668号明細書により詳細に説明されている。そのようなグラフに基づく計算を実行するためのシステムは、参照により本明細書に組み込まれる「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」と題された米国特許第5,966,072号明細書に説明されている。この例において、プロセス134は、データフローグラフの構成要素のサブセットを実装し、さらにその他の構成要素に出力を提供する可能性がある。例えば、データフローグラフは、異なる計算ノード上で実行されるその構成要素の複数のインスタンスと並列に実行されるように構成される構成要素を含み得る。プロセス134のそれぞれは、分散処理システム120からデータを読む並列的な構成要素のインスタンスのうちの1つとして実行される可能性がある。
その他の例として、プロセス134は、データベースシステムの一部を形成する可能性がある。例えば、ファイルの部分114が、データベーステーブルの一部を表す可能性があり、プロセス134は、例えば、1又は2以上のテーブルを含むクエリの実行の一部として、データベーステーブルを並列に処理するように構成される。
一部の実装においては、マネージャ115の機能がコーディネータ142と組み合わされ、抽出プロセス124及び送信先のプロセス134の機能が組み合わされる可能性があってもよい。1つのそのような実装において、コーディネータ/マネージャは、ファイル又はファイルの集合の名前を用いて分散ファイルシステム内のカタログにアクセスして、それらのファイルの部分が記憶されるストレージ112を判定し、それらのファイルのデータのレコード構造を判定してもよい。それから、コーディネータ/マネージャは、抽出プロシージャ124を呼び出すか、又はマネージャ115に関して上で説明されたのと同じ又は同様の方法で選択された適切なプロセッサ上で抽出プロシージャと処理プロシージャとを組み合わせる。一部の実装においては、同じ命名されたファイル又はファイルの集合が、ファイル内のレコードのインデックスを構築し、記憶するために最初に処理される。後で、コーディネータ/マネージャがクエリに一致するレコードのサブセットを抽出したいとき、インデックスが読み込まれ、ファイル又はファイルの集合の一部が読まれる必要がないようにプロセッサ上で抽出プロシージャが呼び出され、例えば、ファイル又はファイルの集合の一致するレコードのみを読み、それによって、抽出機能の効率を高める。
上述の手法の実装に関して多くの代替形態が存在することに留意されたい。特に、「プロセス」と呼ばれる構成要素は、必ずしも(例えば、Unix環境においてexec( )システムコールによって実行される)オペレーティングシステムプロセスとして実装されるとは限らない。代替形態は、オペレーティングシステムプロセスのコンテキスト内の軽量なプロセス(例えば、スレッド)、仮想マシン環境によって実行されるアプリケーション(例えば、Java仮想マシン(JVM)によって実行されるJavaアプリケーション若しくはアプレット)、スレッドなどのオペレーティングシステムのプリミティブを使用せずにプロセスのコンテキスト内で明示的にスケジューリングされるタスク、又はハイパーバイザのコンテキスト内で実行される仮想マシンを含む。
一部の実施形態において、分散処理システム120において実行されるプロセス124は、必ずしもファイルシステム110と計算システム130との間のデータの転送に限定されない。一部の例において、これらのプロセスは、データに対して特定の計算を実行するようにさらに構成される(例えば、コーディネータ142による。図2参照)。例えば、各プロセス124は、ファイルシステムから取り出されたレコードのフィールドを抽出及び/又は変換する可能性がある。
上述の手法は、好適なソフトウェアを実行するコンピューティングシステムを用いて実装され得る。例えば、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、(揮発性並びに/又は不揮発性メモリ及び/若しくはストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを用いて出力を与えるための)少なくとも1つのユーザインターフェースを含む(分散、クライアント/サーバ、又はグリッドなどのさまざまなアーキテクチャである可能性がある)1又は2以上のプログラミングされた又はプログラミング可能なコンピューティングシステムで実行される1又は2以上のコンピュータプログラムのプロシージャを含み得る。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの1又は2以上のモジュールを含む可能性がある。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
ソフトウェアは、CD−ROM又は(例えば、汎用若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な)その他のコンピュータ可読媒体などの有形の非一時的媒体で提供されるか、或いはそのソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体にネットワークの通信媒体を介して配信される(例えば、伝搬信号に符号化される)可能性がある。処理の一部又はすべては、専用のコンピュータで、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)若しくは専用の特定用途向け集積回路(ASIC,application-specific integrated circuit)などの専用のハードウェアを用いて実行される可能性がある。処理は、ソフトウェアによって指定された計算の異なる部分が異なる計算要素によって実行される分散された方法で実装される可能性がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実行するためにストレージデバイスの媒体がコンピュータによって読み取られるときにコンピュータを構成し、動作させるために、汎用又は専用のプログラミング可能なコンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージ媒体(例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体)に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムで構成された有形の非一時的媒体として実装されると考えられる可能性もあり、そのように構成された媒体は、本明細書において説明された処理ステップのうちの1又は2以上を実行するために特定の予め定義された方法でコンピュータを動作させる。
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の請求項の範囲によって画定される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、添付の請求項の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされ得る。さらに、上述のステップの一部は、順序に依存しない可能性があり、したがって、説明された順序とは異なる順序で実行される可能性がある。

Claims (24)

  1. 分散処理システムによって行われる方法であって、
    分散処理システムの分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を受信するステップと、
    計算システムへのデータ接続を確立するための指定を受信するステップと、
    前記分散処理システム上の第1の複数のプロセスを呼び出すステップであって、前記第1の複数のプロセスの各プロセスが、前記分散ファイルシステム内の前記命名されたユニットの対応する部分にアクセスするために前記分散ファイルシステムのストレージ要素とのデータ接続を確立する、ステップと、
    前記分散処理システムと前記計算システムとの間の複数のデータ接続を形成するために前記データ接続を確立するための前記指定を用いるステップであって、少なくとも1つのデータ接続が、前記第1の複数のプロセスの各プロセスと前記計算システムとの間で形成される、ステップと、
    前記分散処理システムから前記計算システムに前記複数のデータ接続を介して同時にデータを渡すステップとを含む、方法。
  2. 同時にデータを渡すステップが、第1の複数のプロセスのプロセスによってファイルシステムからデータを抽出するステップと、抽出されたデータを、分散ファイルシステムにさらに記憶することなく前記プロセスから計算システムに送信するステップとを含む請求項1に記載の方法。
  3. 命名されたユニットの指定を受領することが、前記命名されたユニットのテキストのファイル名を受領することを含む請求項1に記載の方法。
  4. 命名されたユニットの部分が、命名されていない請求項1に記載の方法。
  5. データ接続を確立するための指定を受領することが、ブローカの指定を受領することを含み、前記データ接続を形成することが、第1の複数のプロセスの各プロセスが前記ブローカと通信して計算システムとのデータ接続を確立するためのさらなる指定を決定することを含む請求項1に記載の方法。
  6. データ接続を確立するための指定を受領することが、計算システムへのブロードキャストのための指定を受領することを含む請求項1に記載の方法。
  7. 計算システムが、第2の複数のプロセスを含み、第1の複数のプロセスの各プロセスと前記計算システムとの間のデータ接続を形成することが、前記第1の複数のプロセスのプロセスと前記第2の複数のプロセスのプロセスとの間のデータ接続を形成することを含む請求項1に記載の方法。
  8. 計算システムの第2の複数のプロセスのプロセスを呼び出すステップをさらに含む請求項7に記載の方法。
  9. 第1の複数のプロセスの少なくとも一部及び第2の複数のプロセスの少なくとも一部が、共通の1または複数のプロセッサで実行される請求項7に記載の方法。
  10. 分散処理システム及び計算システムが、データネットワークを介して結合される物理的に異なる計算リソースを使用する請求項1に記載の方法。
  11. 分散処理システム及び計算システムが、計算リソースを共有する請求項1に記載の方法。
  12. データを処理するための、非一時的コンピュータ可読媒体上に記憶されたソフトウェアプログラムであって、分散処理システムに、
    分散処理システムの分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を受信することと、
    計算システムへのデータ接続を確立するための指定を受信することと、
    前記分散処理システム上の第1の複数のプロセスを呼び出すことであって、前記第1の複数のプロセスの各プロセスが、前記分散ファイルシステム内の前記命名されたユニットの対応する部分にアクセスするために前記分散ファイルシステムのストレージ要素とのデータ接続を確立する、呼び出すことと、
    前記分散処理システムと前記計算システムとの間の複数のデータ接続を形成するために前記データ接続を確立するための前記指定を用いることであって、少なくとも1つのデータ接続が、前記第1の複数のプロセスの各プロセスと前記計算システムとの間で形成される、用いることと、
    前記分散処理システムから前記計算システムに前記複数のデータ接続を介して同時にデータを渡すこととを行わせるための命令を含む、ソフトウェアプログラム。
  13. データを処理するためのシステムであって、
    分散ファイルシステムを含む分散処理システムと、
    計算システムとを含み、
    前記分散処理システムが、
    前記分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を受信すること、
    前記計算システムへのデータ接続を確立するための指定を受信すること、
    第1の複数のプロセスを呼び出すことであって、前記第1の複数のプロセスの各プロセスが、前記分散ファイルシステム内の前記命名されたユニットの対応する部分にアクセスするために前記分散ファイルシステムのストレージ要素とのデータ接続を確立する、呼び出すこと、
    前記分散処理システムと前記計算システムとの間の複数のデータ接続を形成するために前記データ接続を確立するための前記指定を用いることであって、少なくとも1つのデータ接続が、前記第1の複数のプロセスの各プロセスと前記計算システムとの間で形成される、用いること、及び
    前記計算システムに前記複数のデータ接続を介して同時にデータを渡すことを行うように構成される、システム。
  14. システム間のデータ接続の確立を支援する1または複数の要素によって行われる方法であって、
    分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を提供するステップと、
    計算システムとのデータ接続を確立するための指定を提供するステップと、
    分散処理システム上での呼び出しのために第1の複数のプロセスのプロセスに関する指定を提供するステップであって、前記第1の複数のプロセスの各プロセスが、前記分散ファイルシステム内の前記命名されたユニットの対応する部分にアクセスするために前記分散ファイルシステムのストレージ要素とのデータ接続を確立するために指定される、ステップと、
    前記分散処理システムと前記計算システムとの間の複数のデータ接続を形成する要求を受信し、前記第1の複数のプロセスの各プロセスと前記計算システムとの間にある少なくとも1つのデータ接続を形成するための情報を提供するステップと、
    前記計算システムにおいて前記第1の複数のプロセスから前記複数のデータ接続を介して同時にデータを受信することを可能にするステップとを含む、方法。
  15. 計算システムにおいて第2の複数のプロセスを呼び出すことを可能にするステップであって、データ接続が第1の複数のプロセスのプロセスと前記第2の複数のプロセスのプロセスとの間で形成される、ステップをさらに含む請求項14に記載の方法。
  16. 第2の複数のプロセスを呼び出すことを可能にするステップが、第1の複数のプロセスをホストするプロセッサ上で前記第2の複数のプロセスの少なくとも一部を呼び出すことを可能にするステップを含み、データ接続の少なくとも一部が、前記プロセッサのローカルにある請求項15に記載の方法。
  17. データ接続を形成するための情報を提供するステップが、要求元のプロセスの位置及び複数の利用可能なエンドポイントの位置に従って前記利用可能なエンドポイントから前記データ接続のためのエンドポイントを選択するステップを含む請求項14に記載の方法。
  18. データを処理するための、非一時的コンピュータ可読媒体上に記憶されたソフトウェアプログラムであって、システム間のデータ接続の確立を支援する1または複数の要素に、
    分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を提供することと、
    計算システムとのデータ接続を確立するための指定を提供することと、
    分散処理システム上での呼び出しのために第1の複数のプロセスのプロセスに関する指定を提供することであって、前記第1の複数のプロセスの各プロセスが、前記分散ファイルシステム内の前記命名されたユニットの対応する部分にアクセスするために前記分散ファイルシステムのストレージ要素とのデータ接続を確立するために指定される、提供することと、
    前記分散処理システムと前記計算システムとの間の複数のデータ接続を形成する要求を受信し、前記第1の複数のプロセスの各プロセスと前記計算システムとの間にある少なくとも1つのデータ接続を形成するための情報を提供することと、
    前記計算システムにおいて前記第1の複数のプロセスから前記複数のデータ接続を介して同時にデータを受信することを可能にすることとを行わせるための命令を含む、ソフトウェアプログラム。
  19. データを処理するためのシステムであって、
    分散ファイルシステムと、
    分散処理システムと、
    計算システムと、
    前記分散処理システムのクライアントであって、
    前記分散ファイルシステムに記憶された1又は2以上の命名されたユニットの指定を提供すること、
    前記計算システムとのデータ接続を確立するための指定を提供すること、
    前記分散処理システム上での呼び出しのために第1の複数のプロセスのプロセスに関する指定を提供することであって、前記第1の複数のプロセスの各プロセスが、前記分散ファイルシステム内の前記命名されたユニットの対応する部分にアクセスするために前記分散ファイルシステムのストレージ要素とのデータ接続を確立するために指定される、提供すること、
    前記分散処理システムと前記計算システムとの間の複数のデータ接続を形成する要求を受信し、前記第1の複数のプロセスの各プロセスと前記計算システムとの間にある少なくとも1つのデータ接続を形成するための情報を提供すること、及び
    前記計算システムにおいて前記第1の複数のプロセスから前記複数のデータ接続を介して同時にデータを受信することを可能にすることを行うように構成された、クライアントとを含む、システム。
  20. マップ−リデュースデータ処理フレームワークを実装する分散処理システムと、分散処理システムから提供されるデータを処理する計算システムとの間のデータ接続の確立を支援する1または複数の要素によって行われる方法であって、
    前記分散処理システム上での呼び出しのためにマッププロシージャに関する指定を前記分散処理システムに提供するステップであって、前記マッププロシージャの前記指定が、処理するための分散ファイルシステム内の1又は2以上の命名されたユニットを特定し、計算システムとのデータ接続を確立するための指定を含む、ステップと、
    前記分散処理システム上で前記マッププロシージャの複数のインスタンスの実行を引き起こすステップと、
    前記マッププロシージャの実行されるインスタンスと前記計算システムとの間の複数のデータフロー接続を形成する要求を受信し、前記マッププロシージャのそれぞれの実行されるインスタンスと前記計算システムとの間にある少なくとも1つのデータフロー接続を形成するための情報を提供するステップと、
    前記複数のデータフロー接続を介して同時にデータを受信し、受信されたデータを前記計算システムにおいて処理することを可能にするステップとを含む、方法。
  21. 分散処理システムが、Apache Hadoop(登録商標)システムを含む請求項20に記載の方法。
  22. データフロー接続が、トランスポートレイヤデータネットワーク通信接続を含む請求項20に記載の方法。
  23. マップ−リデュースデータ処理フレームワークを実装する分散処理システムから提供されるデータを処理するための、非一時的コンピュータ可読媒体上に記憶されたソフトウェアプログラムであって、システム間のデータ接続の確立を支援する1または複数の要素に、
    前記分散処理システム上での呼び出しのためにマッププロシージャに関する指定を前記分散処理システムに提供することであって、前記マッププロシージャの前記指定が、処理するための分散ファイルシステム内の1又は2以上の命名されたユニットを特定し、計算システムとのデータ接続を確立するための指定を含む、提供することと、
    前記分散処理システム上で前記マッププロシージャの複数のインスタンスの実行を引き起こすことと、
    前記マッププロシージャの実行されるインスタンスと前記計算システムとの間の複数のデータフロー接続を形成する要求を受信し、前記マッププロシージャのそれぞれの実行されるインスタンスと前記計算システムとの間にある少なくとも1つのデータフロー接続を形成するための情報を提供することと、
    前記複数のデータフロー接続を介して同時にデータを受信し、受信されたデータを前記計算システムにおいて処理することを可能にすることとを行わせるための命令を含む、ソフトウェアプログラム。
  24. データを処理するためのシステムであって、
    分散ファイルシステムと、
    分散処理システムと、
    計算システムと、
    前記分散処理システムのクライアントであって、
    前記分散処理システム上での呼び出しのためにマッププロシージャに関する指定を前記分散処理システムに提供することであって、前記マッププロシージャの前記指定が、処理するための分散ファイルシステム内の1又は2以上の命名されたユニットを特定し、前記計算システムとのデータ接続を確立するための指定を含む、提供すること、
    前記分散処理システム上で前記マッププロシージャの複数のインスタンスの実行を引き起こすこと、
    前記マッププロシージャの実行されるインスタンスと前記計算システムとの間の複数のデータフロー接続を形成する要求を受信し、前記マッププロシージャのそれぞれの実行されるインスタンスと前記計算システムとの間にある少なくとも1つのデータフロー接続を形成するための情報を提供すること、及び
    前記複数のデータフロー接続を介して同時にデータを受信し、受信されたデータを前記計算システムにおいて処理することを可能にすることを行うように構成された、クライアントとを含む、システム。
JP2016530184A 2013-11-26 2014-11-21 分散ファイルシステム内のデータへの並列アクセス Active JP6580566B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/090,434 US10776325B2 (en) 2013-11-26 2013-11-26 Parallel access to data in a distributed file system
US14/090,434 2013-11-26
PCT/US2014/066781 WO2015080962A1 (en) 2013-11-26 2014-11-21 Parallel access to data in a distributed file system

Publications (2)

Publication Number Publication Date
JP2017506373A JP2017506373A (ja) 2017-03-02
JP6580566B2 true JP6580566B2 (ja) 2019-09-25

Family

ID=52021459

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016530184A Active JP6580566B2 (ja) 2013-11-26 2014-11-21 分散ファイルシステム内のデータへの並列アクセス

Country Status (8)

Country Link
US (2) US10776325B2 (ja)
EP (1) EP3074887B1 (ja)
JP (1) JP6580566B2 (ja)
KR (1) KR102361156B1 (ja)
CN (1) CN105765578B (ja)
AU (2) AU2014354970B2 (ja)
CA (1) CA2929618C (ja)
WO (1) WO2015080962A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590620B1 (en) * 2004-06-18 2009-09-15 Google Inc. System and method for analyzing data records
US10776325B2 (en) 2013-11-26 2020-09-15 Ab Initio Technology Llc Parallel access to data in a distributed file system
US9842152B2 (en) * 2014-02-19 2017-12-12 Snowflake Computing, Inc. Transparent discovery of semi-structured data schema
US9607073B2 (en) 2014-04-17 2017-03-28 Ab Initio Technology Llc Processing data from multiple sources
US10013443B2 (en) * 2015-06-25 2018-07-03 Bank Of America Corporation Comparing data stores using hash sums on disparate parallel systems
TWI547822B (zh) * 2015-07-06 2016-09-01 緯創資通股份有限公司 資料處理方法及系統
US10506016B2 (en) 2016-05-19 2019-12-10 Oracle International Corporation Graph analytic engine that implements efficient transparent remote access over representational state transfer
CN106383738B (zh) * 2016-09-30 2019-10-11 北京百度网讯科技有限公司 任务处理方法和分布式计算框架
US10318355B2 (en) 2017-01-24 2019-06-11 Oracle International Corporation Distributed graph processing system featuring interactive remote control mechanism including task cancellation
US10534657B2 (en) 2017-05-30 2020-01-14 Oracle International Corporation Distributed graph processing system that adopts a faster data loading technique that requires low degree of communication
US9934287B1 (en) 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing
CN107885779A (zh) * 2017-10-12 2018-04-06 北京人大金仓信息技术股份有限公司 一种Spark并行访问MPP数据库的方法
US11416496B2 (en) * 2019-03-01 2022-08-16 Hitachi Vantara Llc Computer implemented method for continuous processing of data-in-motion streams residing in distributed data sources
US11436003B2 (en) * 2019-03-26 2022-09-06 Flowfinity Wireless, Inc. Non-stop internet-of-things (IoT) controllers
US11461130B2 (en) 2020-05-26 2022-10-04 Oracle International Corporation Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226159A (en) * 1989-05-15 1993-07-06 International Business Machines Corporation File lock management in a distributed data processing system
US6446070B1 (en) * 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US5966072A (en) * 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US5897638A (en) * 1997-06-16 1999-04-27 Ab Initio Software Corporation Parallel virtual file system
AU2787699A (en) 1998-02-26 1999-09-15 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6389420B1 (en) * 1999-09-30 2002-05-14 Emc Corporation File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration
US7587467B2 (en) * 1999-12-02 2009-09-08 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7146524B2 (en) * 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US7200747B2 (en) * 2001-10-31 2007-04-03 Hewlett-Packard Development Company, L.P. System for ensuring data privacy and user differentiation in a distributed file system
US7487353B2 (en) * 2004-05-20 2009-02-03 International Business Machines Corporation System, method and program for protecting communication
US7315926B2 (en) * 2004-09-21 2008-01-01 Emc Corporation Lock management for concurrent access to a single file from multiple data mover computers
US7716630B2 (en) * 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US8775647B2 (en) * 2007-12-10 2014-07-08 Deluxe Media Inc. Method and system for use in coordinating multimedia devices
KR100907533B1 (ko) * 2007-12-17 2009-07-14 한국전자통신연구원 작업 분산 병렬 처리 시스템 및 방법
JP5557430B2 (ja) * 2008-04-11 2014-07-23 日東電工株式会社 プロトン伝導性高分子電解質膜およびその製造方法ならびにそれを用いた膜−電極接合体および高分子電解質型燃料電池
CN101398771B (zh) 2008-11-18 2010-08-18 中国科学院软件研究所 一种基于构件的分布式系统访问控制方法及访问控制系统
US9054913B1 (en) * 2009-11-30 2015-06-09 Dell Software Inc. Network protocol proxy
KR101285078B1 (ko) * 2009-12-17 2013-07-17 한국전자통신연구원 스트림 데이터에 대한 점진적인 맵리듀스 기반 분산 병렬 처리 시스템 및 방법
WO2011074699A1 (ja) 2009-12-18 2011-06-23 日本電気株式会社 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法
US8539192B2 (en) 2010-01-08 2013-09-17 International Business Machines Corporation Execution of dataflow jobs
US8918388B1 (en) 2010-02-26 2014-12-23 Turn Inc. Custom data warehouse on top of mapreduce
US9805101B2 (en) * 2010-02-26 2017-10-31 Ebay Inc. Parallel data stream processing system
US8386621B2 (en) * 2010-03-12 2013-02-26 Netflix, Inc. Parallel streaming
US8555265B2 (en) * 2010-05-04 2013-10-08 Google Inc. Parallel processing of data
US9495427B2 (en) 2010-06-04 2016-11-15 Yale University Processing of data using a database system in communication with a data processing framework
US8751682B2 (en) * 2010-09-27 2014-06-10 Z124 Data transfer using high speed connection, high integrity connection, and descriptor
US20120239612A1 (en) 2011-01-25 2012-09-20 Muthian George User defined functions for data loading
KR101231294B1 (ko) * 2011-05-31 2013-02-07 삼성에스디에스 주식회사 데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치
US8954568B2 (en) 2011-07-21 2015-02-10 Yahoo! Inc. Method and system for building an elastic cloud web server farm
US8356050B1 (en) 2011-11-21 2013-01-15 Yahoo! Inc. Method or system for spilling in query environments
US9172608B2 (en) 2012-02-07 2015-10-27 Cloudera, Inc. Centralized configuration and monitoring of a distributed computing cluster
JP5966404B2 (ja) 2012-02-14 2016-08-10 日本電気株式会社 分散ファイルアクセス装置、分散ファイルアクセスシステム、分散ファイルアクセス方法、及び、分散ファイルアクセスプログラム
US9268590B2 (en) 2012-02-29 2016-02-23 Vmware, Inc. Provisioning a cluster of distributed computing platform based on placement strategy
US9195684B2 (en) 2012-03-02 2015-11-24 Cleversafe, Inc. Redundant task execution in a distributed storage and task network
US9367601B2 (en) 2012-03-26 2016-06-14 Duke University Cost-based optimization of configuration parameters and cluster sizing for hadoop
US9158843B1 (en) 2012-03-30 2015-10-13 Emc Corporation Addressing mechanism for data at world wide scale
US9081772B1 (en) * 2012-04-26 2015-07-14 Pivotal Software, Inc. Method and apparatus for acid validation within a distributed relational database under controlled concurrent workloads
US20130325814A1 (en) 2012-05-30 2013-12-05 Spectra Logic Corporation System and method for archive in a distributed file system
US9235446B2 (en) * 2012-06-22 2016-01-12 Microsoft Technology Licensing, Llc Parallel computing execution plan optimization
US9201638B2 (en) 2012-08-07 2015-12-01 Nec Laboratories America, Inc. Compiler-guided software accelerator for iterative HADOOP® jobs
KR101245994B1 (ko) 2012-08-31 2013-03-20 케이씨씨시큐리티주식회사 대용량 데이터의 분산 병렬 처리 시스템 및 방법
CN103714073B (zh) 2012-09-29 2017-04-12 国际商业机器公司 数据查询的方法和装置
US8805835B2 (en) * 2012-12-20 2014-08-12 Clipcard Inc. Systems and methods for integrated management of large data sets
US10476915B2 (en) * 2013-02-04 2019-11-12 Oracle International Corporation Real-time communication signaling gateway
US9342557B2 (en) 2013-03-13 2016-05-17 Cloudera, Inc. Low latency query engine for Apache Hadoop
US9292373B2 (en) 2013-03-15 2016-03-22 International Business Machines Corporation Query rewrites for data-intensive applications in presence of run-time errors
US9113299B2 (en) * 2013-05-17 2015-08-18 Xerox Corporation Method and apparatus for automatic mobile endpoint device configuration management based on user status or activity
CN103441996B (zh) 2013-08-16 2016-09-28 上海理工大学 并发传输文件的方法及系统
US10133800B2 (en) 2013-09-11 2018-11-20 Microsoft Technology Licensing, Llc Processing datasets with a DBMS engine
WO2015066489A2 (en) * 2013-11-01 2015-05-07 Cognitive Electronics, Inc. Efficient implementations for mapreduce systems
US10776325B2 (en) 2013-11-26 2020-09-15 Ab Initio Technology Llc Parallel access to data in a distributed file system

Also Published As

Publication number Publication date
CN105765578B (zh) 2020-04-17
AU2020217330B2 (en) 2022-03-03
CA2929618A1 (en) 2015-06-04
KR102361156B1 (ko) 2022-02-09
EP3074887A1 (en) 2016-10-05
US20150149503A1 (en) 2015-05-28
JP2017506373A (ja) 2017-03-02
EP3074887B1 (en) 2021-01-06
US11599509B2 (en) 2023-03-07
CA2929618C (en) 2022-09-27
AU2020217330A1 (en) 2020-09-03
KR20160090840A (ko) 2016-08-01
WO2015080962A1 (en) 2015-06-04
CN105765578A (zh) 2016-07-13
AU2014354970B2 (en) 2020-05-21
AU2014354970A1 (en) 2016-05-26
US10776325B2 (en) 2020-09-15
US20210089503A1 (en) 2021-03-25

Similar Documents

Publication Publication Date Title
JP6580566B2 (ja) 分散ファイルシステム内のデータへの並列アクセス
US10296386B2 (en) Processing element management in a streaming data system
US10824474B1 (en) Dynamically allocating resources for interdependent portions of distributed data processing programs
US8572236B2 (en) Distributing services in graph-based computations
JP2018518744A (ja) コンピュートクラスタ内のリソースインスタンスグループの自動スケーリング
US20230362265A1 (en) Dynamically routing code for executing
US11706312B2 (en) Distributed data stream programming and processing
US9860119B2 (en) Dynamic management of restful endpoints
US11601495B2 (en) Mechanism for a work node scan process to facilitate cluster scaling
WO2013030683A1 (en) Invalidating streams in operator graph
US20150331828A1 (en) Computer-implemented gateway
US9639630B1 (en) System for business intelligence data integration
Estrada et al. The broker: Apache kafka
US11757959B2 (en) Dynamic data stream processing for Apache Kafka using GraphQL
Singh et al. MCC and Big Data Integration for Various Technological Frameworks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170915

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180808

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181031

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190717

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: 20190805

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190828

R150 Certificate of patent or registration of utility model

Ref document number: 6580566

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