JP2019505916A - リカバリ可能なストリーム処理 - Google Patents
リカバリ可能なストリーム処理 Download PDFInfo
- Publication number
- JP2019505916A JP2019505916A JP2018536162A JP2018536162A JP2019505916A JP 2019505916 A JP2019505916 A JP 2019505916A JP 2018536162 A JP2018536162 A JP 2018536162A JP 2018536162 A JP2018536162 A JP 2018536162A JP 2019505916 A JP2019505916 A JP 2019505916A
- Authority
- JP
- Japan
- Prior art keywords
- data
- processing
- data units
- subset
- stream
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Multimedia (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Processing (AREA)
- Hardware Redundancy (AREA)
- Retry When Errors Occur (AREA)
- Peptides Or Proteins (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
本出願は、2016年1月14日に出願した米国特許出願第62/278,528号の優先権を主張するものである。
図1を参照すると、タスクに基づくコンピューティングシステム100が、高レベルのプログラム仕様110を使用して、プログラム仕様110によって規定された計算を実行するようにコンピューティングプラットフォーム150の計算及び記憶リソースを制御する。コンパイラ/インタープリタ120は、高レベルのプログラム仕様110を受け取り、タスクに基づくランタイムインターフェース/コントローラ140によって実行され得る形態のタスクに基づく仕様130を生じさせる。コンパイラ/インタープリタ120は、複数のデータ要素の各々に適用される細分化されたタスクとして個々に又は一体としてインスタンス化され得る1又は2以上の「構成要素」の1又は2以上の「実行セット」を特定する。コンパイル又は解釈プロセスの一部は、下でより詳細に説明されるように、これらの実行セットを特定することと、実行するためにセットを準備することとを含む。コンパイラ/インタープリタ120は、高レベルのプログラム仕様110を解析するステップ、構文を検証するステップ、データフォーマットの型検査を行うステップ、任意のエラー又は警告を生じさせるステップ、タスクに基づく仕様130を準備するステップなどのステップを含むさまざまなアルゴリズムのいずれかを使用する可能性があり、コンパイラ/インタープリタ120は、例えば、コンピューティングプラットフォーム150上で実行される計算の効率を最適化するためにさまざまな技術を利用する可能性がある。コンパイラ/インタープリタ120によって生じさせられる目標のプログラム仕様は、それ自体、タスクに基づく仕様130を生成するためにシステム100の別の部分によってさらに処理される(例えば、さらにコンパイルされる、解釈されるなど)ことになる中間形態である可能性がある。下の検討は、そのような変換の1又は2以上の例を概説するが、例えば、コンパイラの設計に精通する者によって理解されるように、もちろん、変換のその他の手法があり得る。
一部の実施形態において、高レベルのプログラム仕様110は、データに対して実行されるデータ処理の計算の全体の一部をそれぞれが規定する「構成要素」の組を含む「データ処理グラフ」と呼ばれるある種のグラフに基づくプログラム仕様である。構成要素は、例えば、プログラミングユーザインターフェース及び/又は計算のデータ表現においてグラフ内のノードとして表される。上述のデータ処理グラフなどの一部のグラフに基づくプログラム仕様とは異なり、データ処理グラフは、データの転送、又は制御の転送、又はこれら両方のいずれかを表すノード間のリンクを含み得る。リンクの特徴を示す1つの方法は、構成要素に異なる種類のポートを設けることによる。リンクは、上流の構成要素の出力ポートから下流の構成要素の入力ポートに接続される有向リンクである。ポートは、データ要素がどのようにして書き込まれ、リンクから読まれるのか及び/又は構成要素がデータを処理するためにどのようにして制御されるのかの特徴を表すインジケータを有する。
・構成要素のインスタンスがポートに接続されたリンクを通り越すコレクションのすべてのデータ要素をそれぞれ読むか又は書くことを意味するコレクション入力ポート又はコレクション出力ポート。構成要素のコレクションポート間の単一のリンクを有する構成要素の対に関して、下流の構成要素は、概して、データ要素が上流の構成要素によって書かれるときにそれらのデータ要素を読むことを可能にされ、上流の構成要素と下流の構成要素との間のパイプライン並列処理を可能にする。下でより詳細に説明されるように、データ要素は、並べ替えられる可能性もあり、それが、並列処理の効率を可能にする。例えば、プログラミンググラフィカルインターフェース内の一部のグラフィカルな表現において、そのようなコレクションポートは、概して、構成要素の四角いコネクタ記号によって示される。
・構成要素のインスタンスが、それぞれ、ポートに接続されたリンクから最大で1つのデータ要素を読むか又はポートに接続されたリンクに最大で1つのデータ要素を書くことを意味するスカラ入力ポート又はスカラ出力ポート。構成要素のスカラポート間の単一のリンクを有する構成要素の対に関して、上流の構成要素が実行を終えた後の下流の構成要素の直列実行が、単一のデータ要素の転送を制御の転送として使用することによって強制される。例えば、プログラミンググラフィカルインターフェース内の一部のグラフィカルな表現において、そのようなスカラポートは、概して、構成要素の三角のコネクタ記号によって示される。
・スカラ入力又はスカラ出力と同様であるが、いかなるデータ要素も送信される必要がなく、構成要素間の制御の転送を伝達するために使用される制御入力ポート又は制御出力ポート。構成要素の制御ポート間のリンクを有する構成要素の対に関して、上流の構成要素が実行を終えた後の下流の構成要素の直列実行が(たとえそれらの構成要素がコレクションポート間のリンクも有するとしても)強制される。例えば、プログラミンググラフィカルインターフェース内の一部のグラフィカルな表現において、そのような制御ポートは、概して、構成要素の丸いコネクタ記号によって示される。
再び図1を参照すると、データ処理グラフの構成要素のインスタンスが、データ処理グラフを実行する文脈でタスクとしてスポーン(spawn)され、概して、コンピューティングプラットフォーム150の複数のコンピューティングノード152において実行される。以下でより詳細に検討されるように、インターフェース/コントローラ140は、例えば、計算負荷の割り振り、通信又は入力/出力のオーバーヘッドの削減、及びメモリリソースの使用に関連するシステムの性能目標を達成するために、それらのタスクの実行のスケジューリング及び位置(locus)の監視制御の態様を提供する。
一部の例において、上述のコンピューティングシステム100は、処理の障害が起こる(例えば、コンピューティングノードが処理動作中に故障する)場合に、システムが故障しなかったか又はスリープしたか又はある期間の間速度が落ちたとした場合に生成された可能性がある結果を生成するように再始動され得ることを保証するためのリカバリアルゴリズムを実装する。
例えば、コンピューティングシステムが、永続的な共有データを更新することを含め、複数のデータ処理グラフを使用して1又は2以上の共有リソースを同時に処理するとき、リカバリ可能性は、「もつれ」と呼ばれる状態が原因で失われる。共有データは、少なくとも2つの異なるデータ処理グラフの各々によって読まれ、書き込まれ(又は修正され)得るデータである。共有データは、例えば、データ処理グラフの間で共有状態及び/又は共有通信(shared communication)の形態として異なるデータ処理グラフによって値が読まれ、書き込まれる変数である可能性がある。
一部の例において、コンピューティングシステム100内で実行されるデータ処理グラフは、いかなる明確に定義された終了点もなくデータの連続したストリームを処理する。これらのデータ処理グラフは、「摂取グラフ(ingestion graph)」と呼ばれることがある。データの連続したストリームを処理するとき、データのすべての処理を作業の単一のアトミックな単位として扱うことは不適切であり、上述のリカバリ手法はコンピューティングシステム内の障害から成功裏にリカバリするのに不適切である。
チェックポイントデータを保存する1つの手法は、「チェックポイントマスタ」ノード(例えば、システム内のコンピューティングノードのうちの1つ)に、新しいチェックポイントメッセージをコンピューティングシステム内のすべてのその他のコンピューティングノードにブロードキャストすることによってまずチェックポイントを開始させることを含む。コンピューティングノードにおいて受け取られると、新しいチェックポイントメッセージは、サーバにすべてのコンピューティング活動を中断させる。それから、コンピューティングシステムは、システム内のコンピューティングノード間を移動中のすべてのメッセージが届けられるのを待つ。
パルス式摂取アルゴリズムは、通常のチェックポイント作成アルゴリズムに関連する欠点を避けるために、コンピューティングシステムにおいて実行されるグラフのいくつかの特性に依拠する。コンピューティングシステムにおいて実行される摂取グラフの1つの特性は、それらの摂取グラフが一度に1レコードずつデータを摂取する(ingest)ことである(例えば、摂取(ingestion)は、繰り返しレコードを読み、共有された永続的なデータを更新することを含む)。コンピューティングシステムにおいて実行される摂取グラフの別の特性は、それらの摂取グラフがレコード毎にステートレスであることである。つまり、すべての状態が、グラフによってアクセスされ得る永続的なデータ(例えば、共有データのコレクション及びトランザクションデータストアのテーブル)内に保持される。さらに、一部の例において、コンピューティングシステムにおいて実行されるデータ処理グラフは、レコード毎にステートレスである構成要素のみを含む。
図3を参照すると、単一のグラフにおいて入力データのストリームを処理するためのパルス式摂取アルゴリズムは、時間t0においてグラフを開始することを含む。開始されると、グラフは、入力データのストリームからの入力データの第1のパルスを処理して出力データを生じさせ、そのグラフは、その出力データを第三者預託して記憶する(つまり、出力は、下流のプロセスに直ちに提供されない)。時間t1において、パルス終了インジケータ(例えば、ファイル終端(EOF,end-of-file)文字)が、入力データのストリームに挿入され、入力データの第1のパルスの終末を示す。グラフは、時間t1においてパルス終了インジケータに遭遇するとき、入力データストリームから新しいデータを摂取することをやめる。それから、時間t1から時間t2まで、グラフは、そのグラフが時間t1において既に処理していたすべてのデータを処理することを終える(つまり、グラフは、「休止する(quiesce)」ことを可能にされる)。時間t1と時間t2との間の休止期間は、図3において処理負荷の下り傾斜370として示される。
図5を参照すると、一部の例において、システムは、複数のグラフ(例えば、複数の摂取グラフ)のコレクションを含むとき、グラフのコレクションを通じて同時にデータのパルスを処理するように構成される。
一部の例において、あらゆるチェックポイント動作に関して永続的なデータの内容全体を保存することは、システムが摂取されるデータを1秒のほんの何分の1かの間に利用可能にする必要がある可能性がある一方で、そのようにすることが数分又はさらには数時間かかる可能性があるので実際的でない。
図7Aを参照すると、増分パイプライン化チェックポイント作成手法の一例において、コンピューティングシステム100は、入力フロー111からの入力データのストリーム112を受け取り、入力データのストリーム112を処理し、出力データのストリームを出力フロー131に提供する。コンピューティングシステム100は、例えば、コンピューティングノード152に関して上でより詳細に説明されているように、入力データを分散して処理して出力データを生じさせるいくつかのコンピューティングノード121を含む。
上述のコンピューティングシステムにおいて、状態変化を含むチェックポイントレコードは、単一のグローバルなジャーナルに恒久的に書き込まれる。一部の例においては、単一のグローバルなジャーナルを使用することは、システムのスケーラビリティを制限する可能性がある。図8を参照すると、よりスケーラブルな手法において、コンピューティングシステム100は、チェックポイントを記憶するために分散型ジャーナルを使用する。例えば、コンピューティングノード121の各々は、独自の個々の一時的ジャーナル141及び恒久的ジャーナル142を保持する。
一部の例において、1つの潜在的な問題は、すべてのジャーナルフラグメントの総サイズは、際限なく大きくなり、際限のない量のストレージを消費する可能性があることである。さらに、そのとき、システムがジャーナルフラグメント全体を再現する必要があるので、障害からリカバリするための時間も際限なく大きくなる。この潜在的な問題に対する解決策は、ジャーナルフラグメントに対応するデータの「スナップショットを作成」し、それから、スナップショットプロセスの開始前に作成されたジャーナルフラグメントの部分を破棄することを含む。障害が起こった場合、コンピューティングシステムは、スナップショットをロードし、それから、スナップショットからのデータにジャーナルを適用することによってリカバリすることができる。一部の実施形態において、スナップショットは、特定の特性をデータベースチェックポイントと共有する。
上述の手法は、リカバリ可能性を提供するが、高い可用性又は耐障害性を必ずしも提供しない。例えば、障害の後、システムは、スナップショットから任意の障害が発生したサーバに関連する永続的なデータを再ロードし、それから、所望のチェックポイントまですべての変更を再適用する必要があり、これは数時間かかる可能性があり、その間、システムは利用できない。
いくつかの手法においては、複製とジャーナル作成との両方が、コンピューティングシステムにおいて使用される。例えば、複製は、高い可用性及び耐障害性を実現するために使用されるが、余りにも多くのサーバ(例えば、データセンター全体に対する電力又は冷却の喪失が原因でそれらのサーバのすべて)の同時障害がリカバリの可能性なしにデータを永久的に損なう壊滅的な障害の形態に悩まされる。ジャーナル作成は、ディスクドライブなどの非常に恒久的なストレージにリカバリ情報を記憶することによってそのような障害から守るために、複製に加えて使用される。この手法において、ジャーナルの使用は、かなりの動作不能時間を伴う可能性が高い災害復旧の形態である。
図9Aを参照すると、一部の例において、2又は3以上のコンピューティングシステム100は、上述のジャーナル作成技術を採用し、かつ、トランザクションデータストア151とインタラクションする。トランザクションデータストア151は、トランザクションの原子性、一貫性、独立性、及び恒久性(ACID,atomicity, consistency, isolation, and durability)特性を独立して保証する。一部の例において、トランザクションデータストア151のこの特性は、たとえトランザクションデータストアのトランザクションが一部となっていたチェックポイントが障害によりロールバックされたとしてもそのトランザクションデータストアのトランザクションを恒久的にする可能性があるので、その特性は、チェックポイントメカニズムをだめにする潜在性を持っている。
上述の例において、チェックポイントのトリガは、時間に基づく(例えば、チェックポイントは、周期的にトリガされる)。しかし、チェックポイントのトリガは、必ずしも時間に基づかなくてよい。一部の例において、チェックポイントは、リソースの制約に基づいてトリガされる。例えば、キューイングシステムは、限られた数のレコードのみが、受け取られたメッセージがコミットされる前に受け取られることを可能にする可能性がある。この場合、したがって、システムは、規定された可能性があるいかなるパルス間隔とも無関係に、この限界が達せられるか又はかなり接近されるとき、チェックポイントをトリガしなければならない。
すべてのアプリケーションが、上述のチェックポイントアルゴリズムの下で動作することができる又は動作しなければならないわけではない。例えば、一部のアプリケーションは、余りにも粗い時間的粒度で動作する(例えば、数時間動作するバッチグラフ)。その他のアプリケーションは、余りにも細かい時間的粒度で動作する可能性がある(例えば、チェックポイント間隔よりも短い必要とされる応答時間を有するサービス)。一部の例において、本明細書において説明される手法は、チェックポイントを作成されないアプリケーション及びデータとインタラクションするために「チェックポイントグループ」の概念を使用する。
極めて広く言って、チェックポイントグループは、同じパルススケジュールでチェックポイントを作成される永続的なデータ及び関連するグラフの組である。システムは、異なるアプリケーションが異なる時間/スループットのトレードオフを有する場合、複数のチェックポイントグループを含み得る。例えば、システムは、効率のために比較的大きな(例えば、100ミリ秒の)チェックポイント間隔を必要とする大量の到着するデータ(例えば、サーバクラスタの100個のコアによって処理される1億レコード/秒)を伴う1つのチェックポイントグループと、応答時間を最適化するために選択された10ミリ秒のチェックポイントを用いるより少ない量の到着するデータを伴う別のチェックポイントグループとを有する可能性がある。1秒に近づくチェックポイント間隔は、一部のアプリケーションのための十分に短い応答レイテンシーを提供しない可能性がある。
これに関連して、タスクの2つのクラス(内部及び外部)並びにデータの2つのクラス(内部及び外部)が存在し、「内部」とはチェックポイントグループによって管理されることを意味し、「外部」とはチェックポイントグループによって管理されないことを意味する。複数のチェックポイントグループが存在する場合、それらのチェックポイントグループの各々は、それ以外のチェックポイントグループを「外部」と見なす。内部と外部との間のすべてのアクセスは、「対外的(foreign)」と見なされる。概して、対外的アクセスの4つの場合、すなわち、内部タスクが外部データを読む場合、内部タスクが外部データを書き込む場合、外部タスクが内部データを読む場合、及び外部タスクが内部データを書き込む場合がある。これらの各々は、正確さに関して関連する問題を有する。
チェックポイントグループ内のタスクは、正確さにいかなる影響も与えずにチェックポイントグループ外のデータを読む可能性がある。例えば、内部タスクがCassandraからデータを読み、障害があり、チェックポイントがロールバックされ、タスクが再始動され、タスクが再始動後にCassandraからデータを読み、異なる答えを得る状況を考える。
チェックポイントグループ内のタスクがそのチェックポイントグループ外にデータを書き込む場合、システムは、おそらく、2つの方法のうちの1つでリカバリ可能性を妨害する可能性がある。第1に、書き込みは恒久的になり得るが、更新をしたタスクがロールバックされる。これは、重複した更新を生じる結果となる可能性があり、したがって、それらの更新は、誤っている。これは、慎重なアプリケーションの設計によってのみ対処され得る。第2に、書き込みは、更新が恒久的になるのを書き込み側が待たない(又は待てない)場合、失われる可能性がある。したがって、例えば、内部タスクが、Cassandraを更新し、それから、ロールバックされる可能性があり、Cassandraの更新が、恒久的になる可能性がある。慎重なアプリケーションの設計は、そのような不測の事態を避けることを求められる。
チェックポイントグループ外のタスクが内部のデータを読む場合、システムは、障害後にロールバックされる可能性があるデータの「ダーティリード」を行う危険を冒す。以下は、この問題を解決するための2つの方法の例である。第1に、システムが、楽観的にダーティリードを実行する可能性がある。例えば、アドホッククエリが、メモリ内のデータに対して実行され、ダーティリードの影響がいずれかの検出可能な結果を生じることは、極めて疑わしい。加えて、データベーストランザクションが処理の正常な過程でロールバックされる一方で、チェックポイントグループのロールバックが大きな障害の後にのみ行われ、処理の正常な過程では行われないので、チェックポイントグループ内のダーティリードは、データベースに対してよりもずっと安全である。これは、ダーティリードがともかくいずれかの影響をもたらすことが極めてまれになることを意味する。
チェックポイントグループ外のタスクが内部にデータを書き込む場合、システムは、チェックポイントがロールバックされる場合、書き込みを喪失する危険を冒す。やはり、同じトレードオフが存在し、つまり、システムは、更新を喪失する可能性が小さいことを期待して任意の方法でそのような危険を冒す可能性があり、又はシステムは、書き込みを上述のようにチェックポイントグループにプッシュする可能性がある。そして、書き込みは、書き込み動作の確定を示す第三者預託された答えを待つ。その他の点で、問題は、上述の問題と同じである。
(添付の付録を含む)本明細書において説明されたリカバリ可能性の技術は、例えば、好適なソフトウェア命令を実行するプログラミング可能なコンピューティングシステムを用いて実装される可能性があり、又はフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)などの好適なハードウェアで、若しくは何らかの混成の形態で実装される可能性がある。例えば、プログラミングされる手法において、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性メモリ及び/又はストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを用いて出力を与えるための)少なくとも1つのユーザインターフェースを含む(分散、クライアント/サーバ、又はグリッドなどのさまざまなアーキテクチャである可能性がある)1又は2以上のプログラミングされた又はプログラミング可能なコンピューティングシステム上で実行される1又は2以上のコンピュータプログラムのプロシージャを含み得る。ソフトウェアは、例えば、データ処理グラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの1又は2以上のモジュールを含む可能性がある。プログラムのモジュール(例えば、データ処理グラフの要素)は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
Claims (57)
- 1又は2以上のノードを含むコンピューティングシステムであって、データユニットの少なくとも1つのストリームをそれぞれが処理する複数のデータ処理プログラムを実行するように構成された、前記コンピューティングシステムと、
前記1又は2以上のノードのうちの少なくとも1つへアクセス可能な少なくとも1つのデータストレージシステムであって、使用中、前記複数のデータ処理プログラムのうちの少なくとも2つによってアクセスされ得る共有データを記憶する、前記データストレージシステムとを含み、
前記1又は2以上のデータ処理プログラムのうちの少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、
データユニットの第1のストリームを処理して、データユニットの前記第1のストリーム内の連続データユニットの複数のサブセットの各々に関して出力を生じさせることと、
データユニットの前記第1のストリーム内で連続データユニットの第1のサブセットを処理することと連続データユニットの前記第1のサブセットに隣接する連続データユニットの第2のサブセットを処理することとの間で前記第1のデータ処理プログラム内の処理の終了を開始することと、
前記第1のデータ処理プログラム内の処理の前記終了が完了したと決定した後、連続データユニットの前記第1のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更を恒久的に記憶することと、
前記変更が恒久的に記憶された後、前記第1のデータ処理プログラム内の処理を再開することと、
前記変更が恒久的に記憶された後、連続データユニットの前記第1のサブセットに関して生じさせられた第1の出力を前記第1のデータ処理プログラムから解放することとを含む装置。 - 複数のデータ処理プログラムが、それぞれ、データユニットの少なくとも1つのストリームを、プログラム状態情報が前記ストリーム内の3つ以上の隣接するデータユニットにわたって保持されないようにして処理する、請求項1に記載の装置。
- データストレージシステムが、不揮発性ストレージ媒体を含み、連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶することが、前記変更を前記不揮発性ストレージ媒体に記憶することを含む、請求項1又は2に記載の装置。
- データストレージシステムが、複数のノードに接続された通信媒体を含み、連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶することが、前記通信媒体を介して前記複数のノードの第1のノードから少なくとも第2のノードに前記変更を送信することを含む、請求項1〜3のいずれかに記載の装置。
- データストレージシステムが、複数のデータ処理プログラムのうちの少なくとも1つによって処理されるデータユニットの1又は2以上のストリームに関連するストリーム状態情報も記憶する、請求項1〜4のいずれかに記載の装置。
- 少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、前記第1のデータ処理プログラム内の処理の終了が完了したと決定した後、データユニットの前記第1のストリームに関連するストリーム状態情報を恒久的に記憶することをさらに含む、請求項5に記載の装置。
- 連続データユニットの第1のサブセットに関して生じさせられた第1の出力を第1のデータ処理プログラムから解放することが、コンピューティングシステム上で実行される複数のデータ処理プログラムに含まれない外部プログラムに前記第1の出力を解放することを含む、請求項1〜6のいずれかに記載の装置。
- 連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する恒久的に記憶された変更が、連続データユニットの第2のサブセットを処理することによって引き起こされた前記共有データに対する恒久的に記憶された変更と区別される、請求項1〜7のいずれかに記載の装置。
- 連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更が、連続データユニットの第2のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更が始まった後に恒久的に記憶され、連続データユニットの前記第1のサブセットが、データユニットの第1のストリーム内で連続データユニットの前記第2のサブセットの前にある、請求項8に記載の装置。
- 連続データユニットの第1のサブセットに関して生じさせられた第1の出力が、連続データユニットの前記第1のサブセットを処理することによって引き起こされたすべての変更が恒久的に記憶された後、第1のデータ処理プログラムから解放される、請求項9に記載の装置。
- 変更の第1の部分が恒久的に記憶された後であるが、変更の第2の部分が恒久的に記憶される前に、第1のデータ処理プログラム内で処理が再開される、請求項1〜10のいずれかに記載の装置。
- 第1のデータ処理プログラムが、データユニットの第1のストリームを処理することを周期的に終了し、コンピューティングシステムが、前記第1のデータ処理プログラムが終了される間に、データユニットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶し始める、請求項1〜11のいずれかに記載の装置。
- 第1のデータ処理プログラム内の処理の終了を開始することが、連続データユニットの第1のサブセットと連続データユニットの第2のサブセットとの間にストリーム終了インジケータを挿入することを含み、前記第1のデータ処理プログラム内の処理の前記終了が、前記第1のデータ処理プログラムによって規定されたタスクを実施するすべてのプロセスが前記ストリーム終了インジケータに応答して正常に終了した後に完了している、請求項1〜12のいずれかに記載の装置。
- 共有データが、複数のデータ処理プログラムのすべてによってアクセスされ得る、請求項1〜13のいずれかに記載の装置。
- 1又は2以上のノードを含むコンピューティングシステムであって、データユニットの少なくとも1つのストリームをそれぞれが処理する複数のデータ処理プログラムを実行するように構成された、前記コンピューティングシステムと、
前記1又は2以上のノードのうちの少なくとも1つへアクセス可能な少なくとも1つのデータストレージシステムであって、使用中、前記複数のデータ処理プログラムのうちの少なくとも2つによってアクセスされ得る共有データを記憶する、前記データストレージシステムとを含み、
前記複数のデータ処理プログラムのうちの複数のデータ処理プログラムの少なくとも第1のグループを使用してデータユニットの2又は3以上のストリームを処理することが、
前記第1のグループ内の各データ処理プログラムに関して、連続データユニットの複数のサブセットを含むデータユニットのそれぞれのストリームを処理することと、
データユニットの前記それぞれのストリーム内で連続データユニットの第1のサブセットを処理することと連続データユニットの前記第1のサブセットに隣接する連続データユニットの第2のサブセットを処理することとの間で前記第1のグループ内の各データ処理プログラム内の処理の終了を開始することと、
前記第1のグループ内の各データ処理プログラム内の処理の前記終了が完了したと決定した後、連続データユニットの前記第1のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更を恒久的に記憶することと、
前記変更が恒久的に記憶された後、前記第1のグループ内の各データ処理プログラム内の処理を再開することとを含む装置。 - 複数のデータ処理プログラムが、それぞれ、データユニットの少なくとも1つのストリームを、プログラム状態情報が前記ストリーム内の3つ以上の隣接するデータユニットにわたって保持されないようにして処理する、請求項15に記載の装置。
- データストレージシステムが、不揮発性ストレージ媒体を含み、連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶することが、前記変更を前記不揮発性ストレージ媒体に記憶することを含む、請求項15又は16に記載の装置。
- データストレージシステムが、複数のノードに接続された通信媒体を含み、連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶することが、前記通信媒体を介して前記複数のノードの第1のノードから少なくとも第2のノードに前記変更を送信することを含む、請求項15〜17のいずれかに記載の装置。
- データストレージシステムが、複数のデータ処理プログラムのうちの少なくとも1つによって処理されるデータユニットの1又は2以上のストリームに関連するストリーム状態情報も記憶する、請求項15〜18のいずれかに記載の装置。
- 複数のデータ処理プログラムの少なくとも第1のグループを使用してデータユニットの2又は3以上のストリームを処理することが、前記第1のグループ内の各データ処理プログラム内の処理の終了が完了したと決定した後、前記第1のグループ内の前記データ処理プログラムのいずれかによって処理されたデータユニットのそれぞれのストリームに関連するストリーム状態情報を恒久的に記憶することをさらに含む、請求項19に記載の装置。
- 複数のデータ処理プログラムの少なくとも第1のグループを使用してデータユニットの2又は3以上のストリームを処理することが、変更が恒久的に記憶された後、連続データユニットの第1のサブセットに関して生じさせられた第1の出力を複数のデータ処理プログラムの前記第1のグループから解放することをさらに含む、請求項15〜20のいずれかに記載の装置。
- 連続データユニットの第1のサブセットに関して生じさせられた第1の出力を複数のデータ処理プログラムの第1のグループから解放することが、複数のデータ処理プログラムの前記第1のグループに含まれないコンピューティングシステム上で実行される前記複数のデータ処理プログラムのうちの1つに前記第1の出力を解放することを含む、請求項21に記載の装置。
- 連続データユニットの第1のサブセットに関して生じさせられた第1の出力を複数のデータ処理プログラムの第1のグループから解放することが、コンピューティングシステム上で実行される前記複数のデータ処理プログラムに含まれない外部プログラムに前記第1の出力を解放することを含む、請求項21に記載の装置。
- 外部プログラムが、第1のグループ内の少なくとも1つのデータ処理プログラムによってアクセスされ得る特定の共有データにアクセスする要求を送信し、前記要求の結果が、前記要求が受け取られる前に行われた特定の共有データへのすべての変更が恒久的に記憶された後、前記外部プログラムに解放される、請求項23に記載の装置。
- 連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する恒久的に記憶された変更が、連続データユニットの第2のサブセットを処理することによって引き起こされた前記共有データに対する恒久的に記憶された変更と区別される、請求項15〜24のいずれかに記載の装置。
- 連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更が、連続データユニットの第2のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更が始まった後に恒久的に記憶され、連続データユニットの前記第1のサブセットが、データユニットの第1のストリーム内で連続データユニットの前記第2のサブセットの前にある、請求項25に記載の装置。
- 連続データユニットの第1のサブセットに関して生じさせられた第1の出力が、連続データユニットの前記第1のサブセットを処理することによって引き起こされたすべての変更が恒久的に記憶された後、複数のデータ処理プログラムの第1のグループから解放される、請求項26に記載の装置。
- データユニットの2又は3以上のストリームを処理することが、少なくとも、複数のデータ処理プログラムのうちの複数のデータ処理プログラムの第1のグループ及び複数のデータ処理プログラムの第2のグループを使用してデータユニットの4又は5以上のストリームを処理することを含む、請求項15〜27のいずれかに記載の装置。
- 複数のデータ処理プログラムの各グループが、データユニットのそれぞれのストリームの処理を周期的に終了し、コンピューティングシステムが、前記グループ内のすべてのデータ処理プログラムが終了される間に、データユニットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶し始める、請求項28に記載の装置。
- データ処理プログラムの第1のグループが、データユニットのそれぞれのストリームの処理を第1の頻度で終了し、データ処理プログラムの第2のグループが、データユニットのそれぞれのストリームの処理を前記第1の頻度とは異なる第2の頻度で終了する、請求項29に記載の装置。
- 変更の第1の部分が恒久的に記憶された後であるが、変更の第2の部分が恒久的に記憶される前に、第1のグループ内の各データ処理プログラム内で処理が再開される、請求項15〜30のいずれかに記載の装置。
- 複数のデータ処理プログラムの第1のグループが、データユニットの2又は3以上のストリームの処理を周期的に終了し、コンピューティングシステムが、前記第1のグループ内のすべてのデータ処理プログラムが終了される間に、データユニットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶し始める、請求項15〜31のいずれかに記載の装置。
- 第1のデータ処理プログラム内の処理の終了を開始することが、連続データユニットの第1のサブセットと連続データユニットの第2のサブセットとの間にストリーム終了インジケータを挿入することを含み、前記第1のデータ処理プログラム内の処理の前記終了が、前記第1のデータ処理プログラムによって規定されたタスクを実施するすべてのプロセスが前記ストリーム終了インジケータに応答して正常に終了した後に完了している、請求項15〜32のいずれかに記載の装置。
- 共有データが、複数のデータ処理プログラムのすべてによってアクセスされ得る、請求項15〜33のいずれかに記載の装置。
- 1又は2以上のノードを含むコンピューティングシステムであって、データユニットの少なくとも1つのストリームをそれぞれが処理する複数のデータ処理プログラムを実行するように構成された、前記コンピューティングシステムと、
前記1又は2以上のノードのうちの少なくとも1つへアクセス可能な少なくとも1つのデータストレージシステムであって、使用中、前記複数のデータ処理プログラムのうちの少なくとも2つによってアクセスされ得る共有データを記憶する、前記データストレージシステムとを含み、
前記複数のデータ処理プログラムのうちの少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、
連続データユニットの複数のサブセットを含むデータユニットの第1のストリームを処理することと、
データユニットの前記第1のストリーム内で連続データユニットの第1のサブセットを処理することと連続データユニットの前記第1のサブセットに隣接する連続データユニットの第2のサブセットを処理することとの間で前記第1のデータ処理プログラム内の処理の終了を開始することと、
前記第1のデータ処理プログラム内の処理の前記終了が完了したと決定した後、連続データユニットの前記第1のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更を恒久的に記憶することと、
前記変更のすべてが恒久的に記憶されることを完了する前に、前記第1のデータ処理プログラム内の処理を再開することとを含む装置。 - 複数のデータ処理プログラムが、それぞれ、データユニットの少なくとも1つのストリームを、プログラム状態情報が前記ストリーム内の3つ以上の隣接するデータユニットにわたって保持されないようにして処理する、請求項35に記載の装置。
- データストレージシステムが、不揮発性ストレージ媒体を含み、連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶することが、前記変更を前記不揮発性ストレージ媒体に記憶することを含む、請求項35又は36に記載の装置。
- データストレージシステムが、複数のノードに接続された通信媒体を含み、連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶することが、前記通信媒体を介して前記複数のノードの第1のノードから少なくとも第2のノードに前記変更を送信することを含む、請求項35〜37のいずれかに記載の装置。
- 少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、共有データの少なくとも1つのスナップショットを記憶することと、前記スナップショットが記憶された後、データユニットを処理することによって引き起こされた前記共有データに対する変更のジャーナルを記憶することとをさらに含む、請求項35〜38のいずれかに記載の装置。
- 連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶することが、スナップショットの少なくとも一部を記憶することと、変更のジャーナルの少なくとも一部を記憶することとを含む、請求項39に記載の装置。
- データストレージシステムが、複数のデータ処理プログラムのうちの少なくとも1つによって処理されるデータユニットの1又は2以上のストリームに関連するストリーム状態情報も記憶する、請求項35〜40のいずれかに記載の装置。
- 少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、前記第1のデータ処理プログラム内の処理の終了が完了したと決定した後、データユニットの第1のストリームに関連するストリーム状態情報を恒久的に記憶することをさらに含む、請求項41に記載の装置。
- 少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、前記第1のデータ処理プログラム内の処理の終了が完了したと決定する前に、連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶することをさらに含む、請求項35〜42のいずれかに記載の装置。
- 少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、前記第1のデータ処理プログラム内の処理を再開した後、連続データユニットの第2のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶することをさらに含む、請求項43に記載の装置。
- 連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する恒久的に記憶された変更が、連続データユニットの第2のサブセットを処理することによって引き起こされた前記共有データに対する恒久的に記憶された変更と区別される、請求項35〜44のいずれかに記載の装置。
- 連続データユニットの第1のサブセットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更が、連続データユニットの第2のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更が始まった後に恒久的に記憶され、連続データユニットの前記第1のサブセットが、データユニットの第1のストリーム内で連続データユニットの前記第2のサブセットの前にある、請求項45に記載の装置。
- 少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、連続データユニットの複数のサブセットの各々に関して出力を生じさせることと、変更が恒久的に記憶されることを完了した後、連続データユニットの第1のサブセットに関して生じさせられた第1の出力を前記第1のデータ処理プログラムから解放することとをさらに含む、請求項35〜46のいずれかに記載の装置。
- 連続データユニットの第1のサブセットに関して生じさせられた第1の出力が、連続データユニットの前記第1のサブセットを処理することによって引き起こされたすべての変更が恒久的に記憶された後、第1のデータ処理プログラムから解放される、請求項47に記載の装置。
- 第1のデータ処理プログラムが、データユニットの第1のストリームを処理することを周期的に終了し、コンピューティングシステムが、前記第1のデータ処理プログラムが終了される間に、データユニットを処理することによって引き起こされた共有データに対する少なくともいくつかの変更を恒久的に記憶し始める、請求項35〜48のいずれかに記載の装置。
- 第1のデータ処理プログラム内の処理の終了を開始することが、連続データユニットの第1のサブセットと連続データユニットの第2のサブセットとの間にストリーム終了インジケータを挿入することを含み、前記第1のデータ処理プログラム内の処理の前記終了が、前記第1のデータ処理プログラムによって規定されたタスクを実施するすべてのプロセスが前記ストリーム終了インジケータに応答して正常に終了した後に完了している、請求項35〜49のいずれかに記載の装置。
- 共有データが、複数のデータ処理プログラムのすべてによってアクセスされ得る、請求項35〜50のいずれかに記載の装置。
- 1又は2以上のノードを含むコンピューティングシステム上で、データユニットの少なくとも1つのストリームをそれぞれが処理する複数のデータ処理プログラムを実行するステップと、
前記1又は2以上のノードのうちの少なくとも1つへアクセス可能な少なくとも1つのデータストレージシステムに、前記複数のデータ処理プログラムのうちの少なくとも2つによってアクセスされ得る共有データを記憶するステップとを含み、
1又は2以上のデータ処理プログラムのうちの少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、
データユニットの第1のストリームを処理して、データユニットの前記第1のストリーム内の連続データユニットの複数のサブセットの各々に関して出力を生じさせることと、
データユニットの前記第1のストリーム内で連続データユニットの第1のサブセットを処理することと連続データユニットの前記第1のサブセットに隣接する連続データユニットの第2のサブセットを処理することとの間で前記第1のデータ処理プログラム内の処理の終了を開始することと、
前記第1のデータ処理プログラム内の処理の前記終了が完了したと決定した後、連続データユニットの前記第1のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更を恒久的に記憶することと、
前記変更が恒久的に記憶された後、前記第1のデータ処理プログラム内の処理を再開することと、
前記変更が恒久的に記憶された後、連続データユニットの前記第1のサブセットに関して生じさせられた第1の出力を前記第1のデータ処理プログラムから解放することとを含む方法。 - コンピュータ可読媒体に非一時的形態で記憶されたソフトウェアであって、コンピューティングシステムに、
データユニットの少なくとも1つのストリームをそれぞれが処理する複数のデータ処理プログラムを実行させ、
前記複数のデータ処理プログラムのうちの少なくとも2つによってアクセスされ得る共有データを記憶させるための命令を含み、
1又は2以上のデータ処理プログラムのうちの少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、
データユニットの第1のストリームを処理して、データユニットの前記第1のストリーム内の連続データユニットの複数のサブセットの各々に関して出力を生じさせることと、
データユニットの前記第1のストリーム内で連続データユニットの第1のサブセットを処理することと連続データユニットの前記第1のサブセットに隣接する連続データユニットの第2のサブセットを処理することとの間で前記第1のデータ処理プログラム内の処理の終了を開始することと、
前記第1のデータ処理プログラム内の処理の前記終了が完了したと決定した後、連続データユニットの前記第1のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更を恒久的に記憶することと、
前記変更が恒久的に記憶された後、前記第1のデータ処理プログラム内の処理を再開することと、
前記変更が恒久的に記憶された後、連続データユニットの前記第1のサブセットに関して生じさせられた第1の出力を前記第1のデータ処理プログラムから解放することとを含む、前記ソフトウェア。 - 1又は2以上のノードを含むコンピューティングシステム上で、データユニットの少なくとも1つのストリームをそれぞれが処理する複数のデータ処理プログラムを実行するステップと、
前記1又は2以上のノードのうちの少なくとも1つへアクセス可能な少なくとも1つのデータストレージシステムに、前記複数のデータ処理プログラムのうちの少なくとも2つによってアクセスされ得る共有データを記憶するステップとを含み、
前記複数のデータ処理プログラムのうちの複数データ処理プログラムの少なくとも第1のグループを使用してデータユニットの2又は3以上のストリームを処理することが、
前記第1のグループ内の各データ処理プログラムに関して、連続データユニットの複数のサブセットを含むデータユニットのそれぞれのストリームを処理することと、
データユニットの前記それぞれのストリーム内で連続データユニットの第1のサブセットを処理することと連続データユニットの前記第1のサブセットに隣接する連続データユニットの第2のサブセットを処理することとの間で前記第1のグループ内の各データ処理プログラム内の処理の終了を開始することと、
前記第1のグループ内の各データ処理プログラム内の処理の前記終了が完了したと決定した後、連続データユニットの前記第1のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更を恒久的に記憶することと、
前記変更が恒久的に記憶された後、前記第1のグループ内の各データ処理プログラム内の処理を再開することとを含む方法。 - コンピュータ可読媒体に非一時的形態で記憶されたソフトウェアであって、コンピューティングシステムに、
データユニットの少なくとも1つのストリームをそれぞれが処理する複数のデータ処理プログラムを実行させ、
前記複数のデータ処理プログラムのうちの少なくとも2つによってアクセスされ得る共有データを記憶させるための命令を含み、
前記複数のデータ処理プログラムのうちの複数データ処理プログラムの少なくとも第1のグループを使用してデータユニットの2又は3以上のストリームを処理することが、
前記第1のグループ内の各データ処理プログラムに関して、連続データユニットの複数のサブセットを含むデータユニットのそれぞれのストリームを処理することと、
データユニットの前記それぞれのストリーム内で連続データユニットの第1のサブセットを処理することと連続データユニットの前記第1のサブセットに隣接する連続データユニットの第2のサブセットを処理することとの間で前記第1のグループ内の各データ処理プログラム内の処理の終了を開始することと、
前記第1のグループ内の各データ処理プログラム内の処理の前記終了が完了したと決定した後、連続データユニットの前記第1のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更を恒久的に記憶することと、
前記変更が恒久的に記憶された後、前記第1のグループ内の各データ処理プログラム内の処理を再開することとを含む、前記ソフトウェア。 - 1又は2以上のノードを含むコンピューティングシステム上で、データユニットの少なくとも1つのストリームをそれぞれが処理する複数のデータ処理プログラムを実行するステップと、
前記1又は2以上のノードのうちの少なくとも1つへアクセス可能な少なくとも1つのデータストレージシステムに、前記複数のデータ処理プログラムのうちの少なくとも2つによってアクセスされ得る共有データを記憶するステップとを含み、
前記複数のデータ処理プログラムのうちの少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、
連続データユニットの複数のサブセットを含むデータユニットの第1のストリームを処理することと、
データユニットの前記第1のストリーム内で連続データユニットの第1のサブセットを処理することと連続データユニットの前記第1のサブセットに隣接する連続データユニットの第2のサブセットを処理することとの間で前記第1のデータ処理プログラム内の処理の終了を開始することと、
前記第1のデータ処理プログラム内の処理の前記終了が完了したと決定した後、連続データユニットの前記第1のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更を恒久的に記憶することと、
前記変更のすべてが恒久的に記憶されることを完了する前に、前記第1のデータ処理プログラム内の処理を再開することとを含む方法。 - コンピュータ可読媒体に非一時的形態で記憶されたソフトウェアであって、コンピューティングシステムに、
データユニットの少なくとも1つのストリームをそれぞれが処理する複数のデータ処理プログラムを実行させ、
前記複数のデータ処理プログラムのうちの少なくとも2つによってアクセスされ得る共有データを記憶させるための命令を含み、
前記複数のデータ処理プログラムのうちの少なくとも第1のデータ処理プログラムを使用してデータユニットの少なくとも1つのストリームを処理することが、
連続データユニットの複数のサブセットを含むデータユニットの第1のストリームを処理することと、
データユニットの前記第1のストリーム内で連続データユニットの第1のサブセットを処理することと連続データユニットの前記第1のサブセットに隣接する連続データユニットの第2のサブセットを処理することとの間で前記第1のデータ処理プログラム内の処理の終了を開始することと、
前記第1のデータ処理プログラム内の処理の前記終了が完了したと決定した後、連続データユニットの前記第1のサブセットを処理することによって引き起こされた前記共有データに対する少なくともいくつかの変更を恒久的に記憶することと、
前記変更のすべてが恒久的に記憶されることを完了する前に、前記第1のデータ処理プログラム内の処理を再開することとを含む、前記ソフトウェア。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662278528P | 2016-01-14 | 2016-01-14 | |
US62/278,528 | 2016-01-14 | ||
PCT/US2017/013309 WO2017123849A1 (en) | 2016-01-14 | 2017-01-13 | Recoverable stream processing |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019505916A true JP2019505916A (ja) | 2019-02-28 |
JP6764938B2 JP6764938B2 (ja) | 2020-10-07 |
Family
ID=58016792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018536162A Active JP6764938B2 (ja) | 2016-01-14 | 2017-01-13 | リカバリ可能なストリーム処理 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10601890B2 (ja) |
EP (3) | EP3403182B1 (ja) |
JP (1) | JP6764938B2 (ja) |
KR (1) | KR102121139B1 (ja) |
CN (1) | CN108475218B (ja) |
AU (1) | AU2017207404B2 (ja) |
CA (1) | CA3009359C (ja) |
SG (1) | SG11201805201XA (ja) |
WO (1) | WO2017123849A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10439917B2 (en) * | 2016-11-15 | 2019-10-08 | At&T Intellectual Property I, L.P. | Recovering a replica in an operator in a data streaming processing system |
CA3078476C (en) * | 2017-10-31 | 2022-10-18 | Ab Initio Technology Llc | Managing a computing cluster using durability level indicators |
US10922199B2 (en) * | 2018-07-04 | 2021-02-16 | Vmware, Inc. | Role management of compute nodes in distributed clusters |
US10664397B2 (en) * | 2018-07-31 | 2020-05-26 | EMC IP Holding Company LLC | Cache recovery method in a distributed storage system |
US10489321B1 (en) | 2018-07-31 | 2019-11-26 | EMC IP Holding Company LLC | Performance improvement for an active-active distributed non-ALUA system with address ownerships |
US10733191B2 (en) * | 2018-09-28 | 2020-08-04 | Microsoft Technology Licensing, Llc | Static streaming job startup sequence |
SG11202103504UA (en) * | 2018-10-23 | 2021-05-28 | Tzero Ip Llc | Context based filtering within subsets of network nodes implementing a trading system |
CN110018926B (zh) * | 2018-11-22 | 2023-08-01 | 创新先进技术有限公司 | 故障恢复方法、装置、电子设备及计算机可读存储介质 |
JP7331604B2 (ja) * | 2019-10-04 | 2023-08-23 | 富士通株式会社 | 情報処理システム、情報処理方法、および情報処理プログラム |
CN111541747B (zh) * | 2020-04-10 | 2023-05-12 | 深圳前海微众银行股份有限公司 | 一种数据的检查点设置方法及装置 |
US20220318099A1 (en) * | 2021-03-31 | 2022-10-06 | Nutanix, Inc. | File analytics systems and methods including retrieving metadata from file system snapshots |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2281644A (en) * | 1993-09-02 | 1995-03-08 | Ibm | Fault tolerant transaction-oriented data processing. |
US5712971A (en) | 1995-12-11 | 1998-01-27 | Ab Initio Software Corporation | Methods and systems for reconstructing the state of a computation |
US5857204A (en) | 1996-07-02 | 1999-01-05 | Ab Initio Software Corporation | Restoring the state of a set of files |
US6584581B1 (en) | 1999-12-06 | 2003-06-24 | Ab Initio Software Corporation | Continuous flow checkpointing data processing |
CA2355473A1 (en) * | 2000-09-29 | 2002-03-29 | Linghsiao Wang | Buffer management for support of quality-of-service guarantees and data flow control in data switching |
DE10161034A1 (de) * | 2001-12-12 | 2003-07-03 | Siemens Ag | Verfahren zur Übergabe und Verarbeitung von Daten an eine Datenverarbeitungseinheit |
US7039663B1 (en) * | 2002-04-19 | 2006-05-02 | Network Appliance, Inc. | System and method for checkpointing and restarting an asynchronous transfer of data between a source and destination snapshot |
JP2004178788A (ja) * | 2002-11-15 | 2004-06-24 | Matsushita Electric Ind Co Ltd | 記録装置および記録方法 |
US7353218B2 (en) * | 2003-08-14 | 2008-04-01 | International Business Machines Corporation | Methods and apparatus for clustering evolving data streams through online and offline components |
CN100390738C (zh) * | 2005-10-18 | 2008-05-28 | 中国科学院计算技术研究所 | 一种基于数据流分析的访存合并优化方法 |
US8225129B2 (en) * | 2007-04-10 | 2012-07-17 | International Business Machines Corporation | Methods and apparatus for effective on-line backup selection for failure recovery in distributed stream processing systems |
US8069129B2 (en) | 2007-04-10 | 2011-11-29 | Ab Initio Technology Llc | Editing and compiling business rules |
US7779298B2 (en) | 2007-06-11 | 2010-08-17 | International Business Machines Corporation | Distributed job manager recovery |
JP4560074B2 (ja) | 2007-09-26 | 2010-10-13 | 株式会社東芝 | 仮想計算機システム及び同システムにおける仮想計算機復元方法 |
US8949801B2 (en) | 2009-05-13 | 2015-02-03 | International Business Machines Corporation | Failure recovery for stream processing applications |
US8286191B2 (en) * | 2009-05-14 | 2012-10-09 | International Business Machines Corporation | Dynamically composing data stream processing applications |
US8205113B2 (en) * | 2009-07-14 | 2012-06-19 | Ab Initio Technology Llc | Fault tolerant batch processing |
JP4925143B2 (ja) * | 2009-08-12 | 2012-04-25 | 株式会社日立製作所 | ストリームデータ処理システム、ストリームデータ処理方法及びストリームデータ処理プログラム |
US9116759B2 (en) * | 2011-02-18 | 2015-08-25 | Ab Initio Technology Llc | Restarting data processing systems |
US9021299B2 (en) * | 2011-02-18 | 2015-04-28 | Ab Initio Technology Llc | Restarting processes |
US8826072B2 (en) | 2012-05-09 | 2014-09-02 | Imec | Method and system for real-time error mitigation |
US8843524B2 (en) * | 2012-09-25 | 2014-09-23 | International Business Machines Corporation | Handling out-of-sequence data in a streaming environment |
US9654538B1 (en) * | 2013-03-11 | 2017-05-16 | DataTorrent, Inc. | Dynamic partitioning of instances in distributed streaming platform for real-time applications |
CA2926935C (en) | 2013-10-21 | 2022-05-31 | Ab Initio Technology Llc | Checkpointing a collection of data units |
US9641580B2 (en) | 2014-07-01 | 2017-05-02 | Microsoft Technology Licensing, Llc | Distributed stream processing in the cloud |
AU2015336250C1 (en) | 2014-10-20 | 2018-01-25 | Ab Initio Technology Llc | Recovery and fault-tolerance under computational indeterminism |
US10339796B2 (en) * | 2015-07-07 | 2019-07-02 | Ilumi Sulutions, Inc. | Wireless control device and methods thereof |
-
2017
- 2017-01-13 CA CA3009359A patent/CA3009359C/en active Active
- 2017-01-13 KR KR1020187023523A patent/KR102121139B1/ko active IP Right Grant
- 2017-01-13 EP EP17704568.9A patent/EP3403182B1/en active Active
- 2017-01-13 AU AU2017207404A patent/AU2017207404B2/en active Active
- 2017-01-13 US US15/405,618 patent/US10601890B2/en active Active
- 2017-01-13 CN CN201780006909.XA patent/CN108475218B/zh active Active
- 2017-01-13 EP EP19195166.4A patent/EP3614267B1/en active Active
- 2017-01-13 EP EP19195160.7A patent/EP3614266B1/en active Active
- 2017-01-13 WO PCT/US2017/013309 patent/WO2017123849A1/en active Application Filing
- 2017-01-13 SG SG11201805201XA patent/SG11201805201XA/en unknown
- 2017-01-13 JP JP2018536162A patent/JP6764938B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
AU2017207404A1 (en) | 2018-07-12 |
EP3403182B1 (en) | 2019-09-04 |
WO2017123849A1 (en) | 2017-07-20 |
KR20180101547A (ko) | 2018-09-12 |
CA3009359C (en) | 2020-09-15 |
US20170208113A1 (en) | 2017-07-20 |
CN108475218A (zh) | 2018-08-31 |
KR102121139B1 (ko) | 2020-06-17 |
EP3614266A3 (en) | 2020-07-29 |
EP3614266B1 (en) | 2022-03-09 |
EP3614267A2 (en) | 2020-02-26 |
AU2017207404B2 (en) | 2020-12-10 |
JP6764938B2 (ja) | 2020-10-07 |
CN108475218B (zh) | 2022-03-22 |
EP3403182A1 (en) | 2018-11-21 |
US10601890B2 (en) | 2020-03-24 |
EP3614266A2 (en) | 2020-02-26 |
EP3614267B1 (en) | 2022-03-09 |
CA3009359A1 (en) | 2017-07-20 |
EP3614267A3 (en) | 2020-07-29 |
SG11201805201XA (en) | 2018-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6764938B2 (ja) | リカバリ可能なストリーム処理 | |
Quiané-Ruiz et al. | RAFTing MapReduce: Fast recovery on the RAFT | |
Zhou et al. | Foundationdb: A distributed unbundled transactional key value store | |
Kwon et al. | Fault-tolerant stream processing using a distributed, replicated file system | |
JP2013531835A (ja) | ハイブリッドoltp及びolap高性能データベースシステム | |
Li et al. | Tachyon: Memory throughput i/o for cluster computing frameworks | |
Thomson et al. | Fast distributed transactions and strongly consistent replication for OLTP database systems | |
Wang et al. | BeTL: MapReduce checkpoint tactics beneath the task level | |
AU2015336250B2 (en) | Recovery and fault-tolerance under computational indeterminism | |
Tardieu et al. | Reliable actors with retry orchestration | |
Michael et al. | Recovering shared objects without stable storage | |
Jeong | Fault-tolerant parallel processing combining Linda, checkpointing, and transactions | |
Gankevich et al. | Subordination: providing resilience to simultaneous failure of multiple cluster nodes | |
US20240152429A1 (en) | Recoverable Processes | |
Carvalho | Generic replication of software transactional memory | |
Silvestre | Clonos: Consistent High-Availability for Distributed Stream Processing through Causal Logging | |
Salem | Comparative Analysis of Big Data Stream Processing Systems | |
Kanna et al. | A communication framework for fault-tolerant parallel execution | |
Almeida | Geo-replication in large scale cloud computing applications | |
Silvestre | Consistent High-Availability for Distributed Streaming Computations | |
Yoo | A unified framework for transparent parallelism and fault-tolerance in distributed systems | |
Xue et al. | Task-D: A Task Based Programming Framework for Distributed System | |
Maier | Fault-tolerant parallel programming with atomic actions | |
Birman et al. | Transactional Systems | |
Leong | Exploiting semantics in parallel and distributed computations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180820 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190626 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190708 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20191002 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191206 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200109 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200226 |
|
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: 20200824 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200914 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6764938 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |