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