JPWO2020227467A5 - コンテナイメージの動的分散 - Google Patents
コンテナイメージの動的分散 Download PDFInfo
- Publication number
- JPWO2020227467A5 JPWO2020227467A5 JP2021565877A JP2021565877A JPWO2020227467A5 JP WO2020227467 A5 JPWO2020227467 A5 JP WO2020227467A5 JP 2021565877 A JP2021565877 A JP 2021565877A JP 2021565877 A JP2021565877 A JP 2021565877A JP WO2020227467 A5 JPWO2020227467 A5 JP WO2020227467A5
- Authority
- JP
- Japan
- Prior art keywords
- instances
- application
- instance
- container image
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 19
- 230000005540 biological transmission Effects 0.000 claims 2
- 238000013500 data storage Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
Description
概要
一態様では、一般に、多数のホストシステム上でコンテナイメージのインスタンスを実行させるためにデータ処理システムによって実施される方法であって、各コンテナイメージが、多数のモジュールを有する第1のアプリケーションを含み、インスタンスが、所定のモジュールの決定された並列実行の数に従ってその所定のモジュールを実行するように構成される、方法であり、第1のアプリケーション及び第2のアプリケーションを含むコンテナイメージにアクセスすることであって、第2のアプリケーションが、データ処理システムとコンテナイメージのインスタンスを実行するホストシステムとの間の通信をもたらす、アクセスすることと、データ処理システムによって、第1のアプリケーションの所定のモジュールの並列実行の数を決定することと、所定のモジュールに対し、決定された並列実行の数に従ってコンテナイメージの多数のインスタンスを生成することであって、各インスタンスが、第1及び第2のアプリケーションを含む、生成することと、各インスタンスに対し、第1のアプリケーションの所定のモジュールを実行するようにそのインスタンスを構成することと、1つ又は複数のホストシステム上で多数の構成されたインスタンスの各々を実行させることと、多数の構成されたインスタンスの少なくとも1つに対し、その構成されたインスタンスの第2のアプリケーションによって、データ処理システムとその構成されたインスタンスを実行する1つ又は複数のホストシステムとの間の通信をもたらすこととを含む、方法。この態様の他の実施形態は、対応するコンピュータシステムや、装置や、1つ又は複数のコンピュータ記憶装置上に記録されたコンピュータプログラムを含み、その各々は、方法のアクションを実行するように構成される。
一態様では、一般に、多数のホストシステム上でコンテナイメージのインスタンスを実行させるためにデータ処理システムによって実施される方法であって、各コンテナイメージが、多数のモジュールを有する第1のアプリケーションを含み、インスタンスが、所定のモジュールの決定された並列実行の数に従ってその所定のモジュールを実行するように構成される、方法であり、第1のアプリケーション及び第2のアプリケーションを含むコンテナイメージにアクセスすることであって、第2のアプリケーションが、データ処理システムとコンテナイメージのインスタンスを実行するホストシステムとの間の通信をもたらす、アクセスすることと、データ処理システムによって、第1のアプリケーションの所定のモジュールの並列実行の数を決定することと、所定のモジュールに対し、決定された並列実行の数に従ってコンテナイメージの多数のインスタンスを生成することであって、各インスタンスが、第1及び第2のアプリケーションを含む、生成することと、各インスタンスに対し、第1のアプリケーションの所定のモジュールを実行するようにそのインスタンスを構成することと、1つ又は複数のホストシステム上で多数の構成されたインスタンスの各々を実行させることと、多数の構成されたインスタンスの少なくとも1つに対し、その構成されたインスタンスの第2のアプリケーションによって、データ処理システムとその構成されたインスタンスを実行する1つ又は複数のホストシステムとの間の通信をもたらすこととを含む、方法。この態様の他の実施形態は、対応するコンピュータシステムや、装置や、1つ又は複数のコンピュータ記憶装置上に記録されたコンピュータプログラムを含み、その各々は、方法のアクションを実行するように構成される。
この例では、動作は、所定のモジュールの並列実行の数を指定する仕様にアクセスすることを含む。コンテナイメージは、第1のコンテナイメージであり、方法は、ハードウェア記憶装置から第2のコンテナイメージのインスタンスにアクセスすることであって、第2のコンテナイメージが、第1のアプリケーションを含み、第2のアプリケーションの各モジュールに対する並列処理量を指定する、アクセスすることと、第2のコンテナイメージを実行システム上に格納することとをさらに含む。また、動作は、第2のコンテナイメージのインスタンスから、実行システムに含まれるインタフェースに、決定された並列実行の数に従ってコンテナイメージの多数のインスタンスを生成するという要求を送信することも含む。また、動作は、多数の構成されたインスタンスの各々を1つ又は複数のホストシステムに割り当てることも含む。割り当ては、実行時に、割り当てられている構成されたインスタンスの各々によって動的に実行され、割り当ては、事前に決定されたものではない。第1のアプリケーションは、多数のコンポーネントを有するデータフローグラフであり、動作は、各コンポーネントに対し、そのコンポーネントに対して決定された並列実行の数に従ってコンテナイメージの多数のインスタンスを生成することと、動的レベルの並列処理を得るためにデータフローグラフを複数のノード上で動的に走らせることとをさらに含み、動的に走らせることは、各コンポーネントに対し、生成されたインスタンスをホストシステムの1つ又は複数のノードに動的に割り当てることと、ホストシステムの1つ又は複数のノード上で多数の割り当てられたインスタンスの各々を実行させることとによって行われる。いくつかの例では、所定のモジュールは、第1のモジュールであり、生成される多数のインスタンスは、多数の第1のインスタンスであり、方法は、データ処理システムによって、第1のアプリケーションの第2のモジュールの並列実行の数を決定することと、第2のモジュールに対し、第2のモジュールに対して決定された並列実行の数に従ってコンテナイメージの多数の第2のインスタンスを生成することであって、第2のインスタンスの各々が、第1及び第2のアプリケーションを含む、生成することと、第2のインスタンスの各々に対し、第1のアプリケーションの第2のモジュールを実行するようにその第2のインスタンスを構成することと、1つ又は複数のホストシステム上で多数の構成された第2のインスタンスの各々を実行させることと、第1のインスタンスのうちの1つと第2のインスタンスのうちの1つとの間の通信チャネルを確立させることであって、第1のインスタンスのうちの1つが、データを出力し、通信チャネル上で第2のインスタンスのうちの1つにその出力データを送信する、確立させることとをさらに含む。
いくつかの例では、データ処理システムとその構成されたインスタンスを実行する1つ又は複数のホストシステムとの間の通信は、所定のモジュールによって、第2のアプリケーションにモニタデータを送信することと、第2のアプリケーションによって、データ処理システムにモニタデータを渡すこととを含み、モニタデータは、データ処理システムによって、データ処理システムが別のモジュールに実行を指示できるように、所定のモジュールが実行を完了した際にそれを追跡するために使用されるように構成される。他の例では、所定のモジュールは、第1のモジュールであり、生成される多数のインスタンスは、多数の第1のインスタンスであり、動作は、データ処理システムによって、第1のアプリケーションの第2のモジュールの並列実行の数を決定することと、第2のモジュールに対し、第2のモジュールに対して決定された並列実行の数に従ってコンテナイメージの多数の第2のインスタンスを生成することであって、第2のインスタンスの各々が、第1及び第2のアプリケーションを含む、生成することと、第2のインスタンスの各々に対し、第1のアプリケーションの第2のモジュールを実行するようにその第2のインスタンスを構成することと、1つ又は複数のホストシステム上で多数の構成された第2のインスタンスの各々を実行させることと、ローカルデータストアから、第2のインスタンスのうちの1つのアドレスを検索することと、検索されたアドレスに従って、第1のインスタンスのうちの1つから第2のインスタンスのうちの1つに、第1のインスタンスのうちの1つからの出力を提供することとをさらに含む。
図面の説明
イメージインスタンスの動的分散のためのシステムのブロック図である。
コンテナイメージの動的分散の時系列を示す。
コンテナイメージの動的分散の時系列を示す。
コンテナイメージの動的分散の時系列を示す。
コンテナイメージの動的分散の時系列を示す。
コンテナイメージの動的分散の時系列を示す。
コンテナイメージの動的分散の時系列を示す。
データ処理グラフの図である。
イメージインスタンスの動的分散のためのシステムのブロック図である。
イメージインスタンスの動的分散のためのシステムのブロック図である。
イメージインスタンスの動的分散のためのシステムのブロック図である。
コンテナイメージの動的分散のためのプロセスのフローチャートである。
図1を参照すると、ネットワーク接続環境100が示されており、イメージのインスタンスは、動的分散によって起動される。一般に、イメージは、実行されるとアプリケーションランタイム環境を生成するファイルを含み、アプリケーションランタイム環境は、アプリケーション(例えば、実行可能なアプリケーション)並びにアプリケーションの実行のためのランタイム環境(例えば、システムツール、ライブラリ、システムバイナリ及び設定)を含む。イメージのインスタンスは、イメージの特定の発生を指す。様々なタイプのアプリケーションランタイム環境が存在し、例えば、コンテナを含む。一般に、アプリケーションランタイム環境は、ホストオペレーティングシステムとカーネルを共有することによって、軽量オペレーティングシステムレベルの仮想化を使用する。従って、スケジューリング、ネットワーキング、ディスク入力/出力及びハードウェアへのアクセスは、カーネルによって提供される。それに従って、アプリケーションランタイム環境は、仮想マシンと比べて、より速い始動時間、より優れた資源分散、直接ハードウェアアクセス及びより少ない冗長性を有する。一般に、動的分散(本明細書では、動的レイアウトとも呼ばれる)は、アプリケーション(又はその一部分)の実行において実施される並列処理量を指し、その全内容が参照により本明細書に組み込まれる米国特許出願公開第2018/0165129A1号において説明されるように、並列処理の実施に必要なその資源は、実行時に(すなわち、動的に)割り当てられる。例えば、コンテナイメージのインスタンス(本明細書で説明されるような)は、例えば、実行時に割り当てることによって及び割り当てを事前に決定することなく、ホストシステム上のノードに動的に割り当てられる。
環境100は、実行システム106及びデータストレージ115を含む。実行システム106は、アプリケーション展開、スケーリング及び管理を自動化するためのシステム(例えば、Kubernetes(登録商標)システム)である。データストレージ115は、アプリケーションイメージ118及びエージェントイメージ119を格納する。エージェントイメージ119は、コンテナイメージ(コンテナのイメージ)である。一般に、イメージは、記憶装置のコンテンツのレプリカを含む。この例では、アプリケーションイメージ118もコンテナイメージである。以下では、エージェントイメージ119は、限定はしないが、便宜上、コンテナイメージ119と呼ぶことができる。一般に、アプリケーションイメージは、他のイメージの起動を要求するように及びさらにそれらの他のイメージに実行方法を指示するように構成されたアプリケーションのイメージを含む。この例では、アプリケーションイメージもコンテナイメージである。エージェントイメージ119は、実行方法に関する指示をアプリケーションイメージ118から受信するように構成された実行中のアプリケーション(例えば、本明細書で説明されるようなデータ処理グラフ)を含むコンテナのイメージを含む。
実行システム106は、外部のシステム(例えば、ノード)と通信するためのインタフェース111を含む。また、実行システム106は、データストレージ115からアプリケーションイメージ118及びエージェントイメージ119を検索する。実行システム106は、アプリケーションイメージ118のインスタンス108としてアプリケーションイメージ118を実行する。エージェントイメージ119から、実行システム106は、エージェントイメージ119のインスタンス104、105を起動する。
アプリケーションイメージ118(及びインスタンス108)は、ランチャサブシステム112、マルチプレクササブシステム116及びアプリケーション117を含む。エージェントイメージ119のインスタンス104、105の各々は、エージェントサービス107及びアプリケーション109を含む。マルチプレクササブシステム116は、インタフェース111に要求を送信することによって、エージェントイメージ119のインスタンス104、105を起動する。この例では、ランチャサブシステム112は、エージェントイメージ119の起動すべき数のインスタンスを要求する。この例では、インタフェース111は、アプリケーションプログラミングインタフェース(API)サーバである。それに応答して、APIサーバは、エージェントイメージ119のインスタンス104、105を起動する。インスタンス104、105の各々は、エージェントサービス107及びアプリケーション109を含み、アプリケーション109は、アプリケーション117と同タイプのアプリケーションである(例えば、アプリケーション109がアプリケーション117と同一であること及び/又はアプリケーション109がアプリケーション117と同じモジュールを含むことが可能である)。ランチャサブシステム112は、エージェントサービス107と通信して、エージェントイメージ119の特定のインスタンスによってアプリケーション109のどの部分を実行するかに関する指示をエージェントサービス107に与える。これを受けて、エージェントサービス107は、どの部分(又はコンポーネント)を実行するかに関する指示をアプリケーション109に与える。
アプリケーションイメージ118のインスタンス108は、インスタンス108がインスタンス104、105に互いの通信方法に関する指示を与えられるように(例えば、インスタンス105によって実行されるあるコンポーネントが、インスタンス104によって実行されるコンポーネントによって出力されるデータを入力として必要とする際)、ランチャサブシステム112がアプリケーション117の様々なコンポーネント又は部分及びそれらの互いの通信方法を識別できるようにするために、アプリケーション117(アプリケーション109と同じもの)を含む。この例では、ホストシステム120は、例えば、実行システム106が1つ又は複数のノード120a~120r上でコンテナイメージ119のインスタンス104、105を起動できるように、実行システム106と通信するように構成される。この例では、ホストシステム120は、コンテナイメージ119のインスタンスをホストして走らせる(例えば、実行する)Kubernetes(登録商標)システムである。
図2A~2Fを参照すると、コンテナイメージのインスタンスの動的分散の時系列が示されている。図2Aを参照すると、環境101は、環境100(図1)の第1の時刻(「T1」)における例である。時刻T1では、実行システム106は、データストレージ115からアプリケーションイメージ118のインスタンス108を検索する。以前に説明したように、アプリケーションイメージ118は、ランチャサブシステム、マルチプレクササブシステム及びアプリケーション117を含むコンテナイメージである。アプリケーション117は、3つのモジュール(モジュール1~3)を有するプログラムである。各モジュールは、そのモジュールにおいて実施される並列処理量を指定する。この例では、アプリケーション117は、所定のモジュールの並列実行の数を指定する仕様を含み、その仕様は、例えば、ランチャサブシステム112によって、構成を実行する際にアクセスされる。一般に、並列処理量は、特定のモジュールが実行する回数を指す(例えば、同じ時刻に、同時になど)。モジュール1は、3回の並列実行を行うように構成される。モジュール2は、2回の並列実行を行うように構成される。モジュール3は、3回の並列実行を行うように構成される。図2Bを参照すると、環境103が示されている。環境103は、環境101(図1)の第2の時刻(「T2」)におけるバージョンである。この例では、ランチャサブシステム112は、指定された並列処理量に従って、各モジュールに対して起動すべきコンテナイメージのインスタンスの数をマルチプレクササブシステムに伝達する。ランチャサブシステム112は、コンテナイメージ119の3つのインスタンス122a~122cを起動するように及びモジュール1を実行するようにそれらのインスタンス122a~122cを構成するように、マルチプレクササブシステム116に指示する。モジュール1の並列処理量は3回と構成されているため、ランチャサブシステム112は、コンテナイメージ119の3つのインスタンス122a~122cを起動するようにマルチプレクササブシステム116に指示する。それに応答して、マルチプレクササブシステム116は、インタフェース111がインスタンス122a~122cを起動することを要求し、インタフェース111は、インスタンス122a~122cを起動する。
ランチャサブシステム112は、コンテナイメージ119の3つのインスタンス124a、124bを起動するように及びモジュール2を実行するようにそれらのインスタンス124a、124bを構成するように、マルチプレクササブシステム116に指示する。モジュール2の並列処理量は2回と構成されているため、ランチャサブシステム112は、コンテナイメージ119の2つのインスタンス124a、124bを起動するようにマルチプレクササブシステム116に指示し、インスタンス124a、124bの各々は、モジュール2を実行するように構成される。それに応答して、マルチプレクササブシステム116は、インタフェース111がインスタンス124a、124bを起動することを要求し、インタフェース111は、実行システム106においてインスタンス124a、124bを起動する。
ランチャサブシステム112は、コンテナイメージ119の3つのインスタンス126a~126cを起動するように及びモジュール1を実行するようにそれらのインスタンス126a~126cを構成するように、マルチプレクササブシステム116に指示する。モジュール1の並列処理量は3回と構成されているため、ランチャサブシステム112は、コンテナイメージ119の3つのインスタンス126a~126を起動するようにマルチプレクササブシステム116に指示する。それに応答して、マルチプレクササブシステム116は、インタフェース111がインスタンス126a~126を起動することを要求し、インタフェース111は、インスタンス126a~126を起動する。
図2Cを参照すると、環境113が示されている。環境113は、環境100(図1)の第3の時点(T3)におけるバージョンである。時刻T3では、ランチャサブシステム112は、コンテナイメージ119(図1)のインスタンス122a、122b、122cを構成する。インスタンス122a、122b、122cの各々は、エージェントサービスと、3つのモジュールを有するアプリケーションとを含む。インスタンス122aは、エージェントサービス128と、モジュール130a~130cを有するアプリケーション130とを含む。アプリケーション130、132、134の各々がアプリケーション117と同一であること及び/又はアプリケーション130、132、134の各々がアプリケーション117と同じモジュールを含むことが可能である。ランチャサブシステム112は、例えば、インスタンスがどのモジュールを実行すべきかに関する指示をインスタンス122a~122cの各々に送信することによって、モジュール1(例えば、アプリケーション130のモジュール130a)を実行するようにコンテナイメージ119のインスタンス122a、122b、122cの各々を構成する。この例では、ランチャサブシステム112は、アプリケーション117において指定された並列処理量をルックアップすることによって、各モジュールに対する並列処理量を識別する。
ランチャサブシステム112は、コンテナイメージ119(図1)のインスタンス124a、124bを構成する。インスタンス124a、124bの各々は、エージェントサービスと、3つのモジュールを有するアプリケーションとを含む。インスタンス124aは、エージェントサービス131と、3つのモジュール132a~132cを有するアプリケーション132とを含む。ランチャサブシステム112は、例えば、インスタンスがどのモジュールを実行すべきかに関する指示をインスタンス124a、124bの各々に送信することによって、モジュール2(例えば、アプリケーション132のモジュール132b)を実行するようにコンテナイメージ119のインスタンス124a、124bの各々を構成する。
ランチャサブシステム112は、コンテナイメージ119(図1)のインスタンス126a、126b、126cを構成する。インスタンス126a、126b、126cの各々は、エージェントサービスと、3つのモジュールを有するアプリケーションとを含む。インスタンス126aは、エージェントサービス133と、3つのモジュール134a~134cを有するアプリケーション134とを含む。ランチャサブシステム112は、例えば、インスタンスがどのモジュールを実行すべきかに関する指示をインスタンス126a~126cの各々に送信することによって、モジュール3(例えば、アプリケーション134のモジュール134c)を実行するようにコンテナイメージ119のインスタンス126a、126b、126cの各々を構成する。
図2Dを参照すると、環境127が示されている。環境127は、環境100(図1)の第4の時点(T4)における例である。時刻T4では、実行システム106は、ホストシステム上で実行するために、コンテナイメージのインスタンスをホストシステム120に送信するか又は割り当てる。この例では、インスタンス122aは、ノード120dに割り当てられる。インスタンス122aが受信され次第、ノード120dは、コンテナイメージ119(図1)のインスタンス122aをホストして実行し、それにより、コンテナをインスタンス化する。インスタンス122bは、ノード120eに割り当てられる。インスタンス122bが受信され次第、ノード120eは、コンテナイメージ119(図1)のインスタンス122bをホストして実行する。同様に、インスタンス122c、124a、124b、126a、126b、126cは、ノード120f、120g、120i、120n、120o、120qにそれぞれ割り当てられる。インスタンス122c、124a、124b、126a、126b、126cが受信され次第、ノード120f、120g、120i、120n、120o、120qは、コンテナイメージ119(図1)のそれぞれのインスタンスをホストして実行する(ホストシステム120上で)。
図2Eを参照すると、環境140が示されている。環境140は、環境100(図1)の第5の時点(T5)におけるバージョンである。時刻T5では、コンテナイメージ122aは、ノード120d上でコンテナ160としてインスタンス化される。一般に、コンテナイメージは、ノード(又は他のコンピューティングシステム)上で走らせているプログラム又はアプリケーションに含まれるコマンドがテンプレートとしてコンテナイメージを取り入れ、そこからコンテナを生成する際に、コンテナとしてインスタンス化され、次いで、ノード上で実行される。
コンテナイメージ122aのインスタンス化により、コンテナイメージ122aに含まれるエージェントサービス128に相当する(例えば、同一である)エージェントサービス162を有するコンテナ160が生成される。いくつかの例では、エージェントサービス128は、エージェントサービスイメージ(すなわち、エージェントサービスのイメージ)である。この例では、エージェントサービス162は、コンテナイメージ122aがインスタンス化される際に、エージェントサービスイメージからインスタンス化される。また、コンテナイメージ122aのインスタンス化により、アプリケーション164(コンテナ160に含まれる)も生成される。この例では、アプリケーション164は、モジュール164a、164b、164cを含む。アプリケーション164は、コンテナイメージ122aに含まれるアプリケーション130に相当する。いくつかの例では、アプリケーション130は、アプリケーションイメージ(すなわち、アプリケーションのイメージ)である。この例では、アプリケーション164は、コンテナイメージ122aがインスタンス化される際に、アプリケーションイメージからインスタンス化される。
図2Fを参照すると、環境150が示されている。環境150は、環境100(図1)の第6の時点(T6)におけるバージョンである。環境150は、コンテナ160、170、176(ホストシステム上で実行され、コンテナイメージ122a、124a、126aからそれぞれインスタンス化される)の間のノード間通信を示す。
この例では、コンテナ170は、エージェントサービス172及びアプリケーション174(モジュール174a、174b、174cを有する)を含む。この例では、アプリケーション174は、コンテナ170がインスタンス化されたコンテナイメージ124aの構成に従って、モジュール174bを実行するように構成される。
この例では、コンテナ176は、エージェントサービス180及びアプリケーション178(モジュール178a、178b、178cを有する)を含む。この例では、アプリケーション178は、コンテナ176がインスタンス化されたコンテナイメージ126aの構成に従って、モジュール178cを実行するように構成される。この例では、コンテナ160は、ノード120d(図2D)上で実行され、ノード120dは、コンテナイメージ122aが割り当てられたノードである。コンテナ172は、ノード120g(図2D)上で実行され、ノード120gは、コンテナイメージ124aが割り当てられたノードである。コンテナ176は、ノード120n(図2D)上で実行され、ノード120nは、コンテナイメージ126aが割り当てられたノードである。
図3Bを参照すると、図201は、部分212、214(図3A)の並列実行を示す。アプリケーションイメージ118(図1)のインスタンス108は、部分212(図3A)を実行するためにエージェントイメージ119(図1)の2つのインスタンス216、218を起動し、部分212は、2つの手段で並列に走らせる。インスタンス216、218の各々は、ランチャサブシステムによって、コンポーネント202、204、206を実行するように指示される。アプリケーションイメージ118(図1)のインスタンス108は、部分214(図3A)を実行するためにエージェントイメージ119(図1)の4つのインスタンス220~226を起動し、部分214は、4つの手段で並列に走らせる。インスタンス220~226の各々は、ランチャサブシステムによって、コンポーネント208、210を実行するように指示される。
図4Aが場合の例示的なデータ処理グラフ200では、コンポーネント202~210の各々は、FDLタイプを有する。コンポーネント202~206の各々は、コンポーネントインスタンスをどこで(すなわち、ホストクラスタ306のどのホスト上で)走らせるかに関する制限なしで、ホストクラスタ306上で2つのコンポーネントインスタンスを走らせる必要がある。コンポーネント208、210の各々は、コンポーネントインスタンスをどこで(すなわち、ホストクラスタ306のどのホスト上で)走らせるかに関する制限なしで、ホストクラスタ306上で4つのコンポーネントインスタンスを走らせる必要がある。本明細書で説明されるように、データ処理グラフ200の第1の部分は、コンポーネント202~206を含み、この第1の部分は、2つの手段で並列に走らせるため、コンポーネント202~206は、2つのインスタンス324、326で走らせる必要がある。この例では、インスタンス324、326(図1のエージェントイメージのもの)は、アプリケーションイメージ118(図1)のインスタンス108(図1)によって起動される。部分212(図3A)は2つの手段で並列に走らせる必要があるため、2つのインスタンス324、326は、部分212(図3A)に対して起動される。インスタンス324、326の各々は、コンポーネント202~206のみを実行する。データ処理グラフ200の第2の部分は、コンポーネント208、210を含み、この第2の部分は、4つの手段で並列に走らせるため、コンポーネント208、210は、4つのインスタンス370~376で走らせる必要がある(図4Bに示されるように)。
図5を参照すると、動的レイアウトに従って指定されたイメージの多数のインスタンスを起動するためのプロセス400が示されており、指定されたイメージは、多数の実行可能なコンポーネントを有するマルチコンポーネントプログラム(例えば、データ処理グラフ)と、1つ又は複数の実行可能なコンポーネントの各々に対して、その実行可能なコンポーネントの実行において実施される並列処理量を指定する動的レイアウトとを含む。
この例では、プロセス400は、データ処理システム(例えば、実行システム106)によって、多数のホストシステム上でコンテナイメージのインスタンスを実行させるために実施され、各コンテナイメージは、多数のモジュールを有する第1のアプリケーションを含み、インスタンスは、所定のモジュールの決定された並列実行の数に従ってその所定のモジュールを実行するように構成される。動作では、データ処理システムは、データストレージ115(図1)から、第1のアプリケーション(例えば、図1のアプリケーション109)及び第2のアプリケーション(例えば、図1のエージェントサービス107)を含むコンテナイメージ119(図1)にアクセスし(402)、第2のアプリケーションは、データ処理システムとコンテナイメージのインスタンス(例えば、図1のインスタンス104又はインスタンス105)を実行するホストシステム(例えば、図1のホストシステム120)との間の通信をもたらす。データ処理システムは、第1のアプリケーションの所定のモジュール(例えば、図2Cのモジュール130a)の並列実行の数を決定する(404)。
所定のモジュールに対し、データ処理システムは、決定された並列実行の数に従ってコンテナイメージの1つ又は複数のインスタンス(図2Cのインスタンス122a~122c)を生成し(406)、各インスタンスは、第1及び第2のアプリケーションを含む。各インスタンスに対し、データ処理システムは、例えば、どのモジュールを実行するかに関する指示をランチャサブシステム112からインスタンス122aに送信することによって、第1のアプリケーションの所定のモジュールを実行するようにそのインスタンスを構成する(408)。
Claims (23)
- コンテナイメージのインスタンスをホストシステムに割り当てることによって、かつ、ホストシステム上のインスタンスにおける第1のアプリケーションの部分に、データを、別のホストシステム上の別のインスタンスにおける前記第1のアプリケーションの別の部分に出力させることによって、コンテナイメージにおける第1のアプリケーションに、ホストシステムにわたって、実行させるデータ処理システムによって実施される方法であって、
前記第1のアプリケーション及び第2のアプリケーションを含む前記コンテナイメージにアクセスすることであって、前記第2のアプリケーションが、前記データ処理システムと、前記コンテナイメージのインスタンスを実行するホストシステムとの間の通信をもたらす、ことと、
前記データ処理システムによって、前記第1のアプリケーションの並列実行の数を決定することと、
前記決定された並列実行の数に従って前記コンテナイメージの複数のインスタンスを生成することであって、インスタンスが、前記第1及び第2のアプリケーションを含む、ことと、
第1のホストシステム上で前記第1のアプリケーションの第1の部分を実行するように前記複数のインスタンスの第1のインスタンスを構成することと、
1つ又は複数のホストシステム上で前記複数のインスタンスの各々を実行させることと、
第2のホストシステム上で第2のインスタンスの前記第2のアプリケーションから通信を受信することと、
前記第1の部分からの出力を受信するために、前記第1のインスタンスが前記第2のインスタンスの第2の部分を前記第2のホストシステムに配置するための情報を、前記通信に基づいて、前記データ処理システムによって、前記第1のホストシステム上で前記第1のインスタンスに送信することと、
前記第2の部分を配置するために送信された前記情報に基づいて、前記第1のホストシステム上の前記第1の部分にその出力データを前記第2のホストシステム上の前記第2の部分に送信させることと、
を含む、方法。 - 所定のモジュールの並列実行の数を指定する仕様にアクセスすることをさらに含む、請求項1に記載の方法。
- 前記コンテナイメージが、第1のコンテナイメージである、請求項1に記載の方法であって、
ハードウェア記憶装置から第2のコンテナイメージのインスタンスにアクセスすることであって、前記第2のコンテナイメージが、前記第1のアプリケーションを含み、前記第2のアプリケーションの各モジュールに対する並列処理量を指定する、アクセスすることと、
前記第2のコンテナイメージを実行システム上に格納することと
をさらに含む、方法。 - 前記第2のコンテナイメージの前記インスタンスから、前記実行システムに含まれるインタフェースに、前記決定された並列実行の数に従って前記コンテナイメージの前記複数のインスタンスを生成するという要求の送信をもたらすこと、
をさらに含む、請求項3に記載の方法。 - 前記複数の構成されたインスタンスの各々を前記1つ又は複数のホストシステムに割り当てること
をさらに含む、請求項1に記載の方法。 - 割り当てが、実行時に、割り当てられている構成されたインスタンスの各々によって動的に実行され、前記割り当てが、動的に決定される、請求項5に記載の方法。
- 前記第1のアプリケーションが、複数のコンポーネントを有するデータフローグラフである、請求項6に記載の方法であって、
各コンポーネントに対し、そのコンポーネントに対して決定された並列実行の数に従って前記コンテナイメージの複数のインスタンスを生成することと、
動的レベルの並列処理を得るためにデータフローグラフを複数のノード上で動的に走らせることと
をさらに含み、
前記動的に走らせることが、
各コンポーネントに対し、
生成されたインスタンスを前記ホストシステムの1つ又は複数のノードに動的に割り当てることと、
前記ホストシステムの前記1つ又は複数のノード上で前記複数の割り当てられたインスタンスの各々を実行させることと
によって行われる、方法。 - 前記データ処理システムとその構成されたインスタンスを実行する前記1つ又は複数のホストシステムとの間の前記通信が、
前記所定のモジュールによって前記第2のアプリケーションにモニタデータの送信をもたらすことと、前記第2のアプリケーションによって、前記データ処理システムに前記モニタデータを渡すこととを含み、前記モニタデータが、前記データ処理システムによって、前記データ処理システムが別のモジュールに実行を指示できるように、前記所定のモジュールが実行を完了した際にそれを追跡するために使用されるように構成される、請求項1に記載の方法。 - 前記所定のモジュールが、第1のモジュールであり、前記生成される複数のインスタンスが、複数の第1のインスタンスであり、動作が、
前記データ処理システムによって、前記第1のアプリケーションの第2のモジュールの並列実行の数を決定することと、
前記第2のモジュールに対し、前記第2のモジュールに対して前記決定された並列実行の数に従って前記コンテナイメージの複数の第2のインスタンスを生成することであって、第2のインスタンスの各々が、前記第1及び第2のアプリケーションを含む、生成することと、
第2のインスタンスの各々に対し、前記第1のアプリケーションの前記第2のモジュールを実行するようにその第2のインスタンスを構成することと、
前記1つ又は複数のホストシステム上で前記複数の構成された第2のインスタンスの各々を実行させることと、
ローカルデータストアから、前記第2のインスタンスのうちの1つのアドレスを検索することと、
前記検索されたアドレスに従って、前記第1のインスタンスのうちの1つから前記第2のインスタンスのうちの1つに、前記第1のインスタンスのうちの1つからの出力を提供することと
をさらに含む、請求項1に記載の方法。 - コンテナイメージのインスタンスをホストシステムに割り当てることによって、かつ、ホストシステム上のインスタンスにおける第1のアプリケーションの部分に、データを、別のホストシステム上の別のインスタンスにおける前記第1のアプリケーションの別の部分に出力させることによって、コンテナイメージにおける第1のアプリケーションに、ホストシステムにわたって、実行させるデータ処理システムであって、
前記第1のアプリケーション及び第2のアプリケーションを含む前記コンテナイメージにアクセスすることであって、前記第2のアプリケーションが、前記データ処理システムと、前記コンテナイメージのインスタンスを実行するホストシステムとの間の通信をもたらす、ことと、
前記第1のアプリケーションの並列実行の数を決定することと、
前記決定された並列実行の数に従って前記コンテナイメージの複数のインスタンスを生成することであって、インスタンスが、前記第1及び第2のアプリケーションを含む、ことと、
第1のホストシステム上で前記第1のアプリケーションの第1の部分を実行するように前記複数のインスタンスの第1のインスタンスを構成することと、
1つ又は複数のホストシステム上で前記複数のインスタンスの各々を実行させることと、
第2のホストシステム上で第2のインスタンスの前記第2のアプリケーションから通信を受信することと、
前記第1の部分からの出力を受信するために、前記第1のインスタンスが前記第2のインスタンスの第2の部分を前記第2のホストシステムに配置するための情報を、前記通信に基づいて、前記データ処理システムによって、前記第1のホストシステム上で前記第1のインスタンスに送信することと、
前記第2の部分を配置するために送信された前記情報に基づいて、前記第1のホストシステム上の前記第1の部分にその出力データを前記第2のホストシステム上の前記第2の部分に送信させることと、
を行うように構成されているデータ処理システム。 - 前記マルチコンポーネントプログラムが、データ処理グラフである、請求項10に記載のシステム。
- 複数のホストシステムを有するホストクラスタであって、各ホストシステムが、複数の演算資源を含む、ホストクラスタ
をさらに含む、請求項10に記載のシステムであって、
各実行可能なコンポーネントが、指定された演算資源量を必要とし、
前記動的レイアウトが、前記マルチコンポーネントプログラムの特定の部分が実行される回数を指定し、
前記ホストクラスタが、前記動的レイアウトに従って及び前記マルチコンポーネントプログラムの特定の部分の実行可能なコンポーネントに必要な演算資源量に従って、前記1つ又は複数のホストシステムにわたって、その特定の部分に必要な演算資源量をその特定の部分に割り当てるように構成される、システム。 - 前記アプリケーションイメージの前記インスタンスがコンテナであり、前記エージェントイメージのインスタンスがコンテナである、請求項10に記載のシステム。
- 前記マルチコンポーネントプログラムのどの部分を実行するかに関する指示を受信することと、
実行ステータスを指定するデータを送信することと
を行うように構成されたホストクラスタ
をさらに含む、請求項10に記載のシステム。 - 前記アプリケーションイメージの前記インスタンス及び前記エージェントイメージの前記インスタンスの各々が、ホストオペレーティングシステムとカーネルを共有するように構成される、請求項10に記載のシステム。
- コンテナイメージのインスタンスをホストシステムに割り当てることによって、かつ、ホストシステム上のインスタンスにおける第1のアプリケーションの部分に、データを、別のホストシステム上の別のインスタンスにおける前記第1のアプリケーションの別の部分に出力させることによって、コンテナイメージにおける第1のアプリケーションに、ホストシステムにわたって、実行させるデータ処理システムが動作を実行するために前記データ処理システムによって実行可能な命令を格納する1つ又は複数の機械可読ハードウェア記憶装置であって、
前記動作は、
前記第1のアプリケーション及び第2のアプリケーションを含む前記コンテナイメージにアクセスすることであって、前記第2のアプリケーションが、前記データ処理システムと、前記コンテナイメージのインスタンスを実行するホストシステムとの間の通信をもたらす、ことと、
前記データ処理システムによって、前記第1のアプリケーションの並列実行の数を決定することと、
前記決定された並列実行の数に従って前記コンテナイメージの複数のインスタンスを生成することであって、インスタンスが、前記第1及び第2のアプリケーションを含む、ことと、
第1のホストシステム上で前記第1のアプリケーションの第1の部分を実行するように前記複数のインスタンスの第1のインスタンスを構成することと、
1つ又は複数のホストシステム上で前記複数のインスタンスの各々を実行させることと、
第2のホストシステム上で第2のインスタンスの前記第2のアプリケーションから通信を受信することと、
前記第1の部分からの出力を受信するために、前記第1のインスタンスが前記第2のインスタンスの第2の部分を前記第2のホストシステムに配置するための情報を、前記通信に基づいて、前記データ処理システムによって、前記第1のホストシステム上で前記第1のインスタンスに送信することと、
前記第2の部分を配置するために送信された前記情報に基づいて、前記第1のホストシステム上の前記第1の部分にその出力データを前記第2のホストシステム上の前記第2の部分に送信させることと、
を含む、1つ又は複数の機械可読ハードウェア記憶装置。 - 前記動作が、所定のモジュールの並列実行の数を指定する仕様にアクセスすることをさらに含む、請求項16に記載の1つ又は複数の機械可読ハードウェア記憶装置。
- 前記コンテナイメージが、第1のコンテナイメージであり、前記動作が、
ハードウェア記憶装置から第2のコンテナイメージのインスタンスにアクセスすることであって、前記第2のコンテナイメージが、前記第1のアプリケーションを含み、前記第2のアプリケーションの各モジュールに対する並列処理量を指定する、アクセスすることと、
前記第2のコンテナイメージを実行システム上に格納することと
をさらに含む、請求項16に記載の1つ又は複数の機械可読ハードウェア記憶装置。 - 前記動作が、
前記第2のコンテナイメージの前記インスタンスから、前記実行システムに含まれるインタフェースに、前記決定された並列実行の数に従って前記コンテナイメージの前記複数のインスタンスを生成するという要求の送信をもたらすこと、
をさらに含む、請求項18に記載の1つ又は複数の機械可読ハードウェア記憶装置。 - 前記動作が、
前記複数の構成されたインスタンスの各々を前記1つ又は複数のホストシステムに割り当てること
をさらに含む、請求項16に記載の1つ又は複数の機械可読ハードウェア記憶装置。 - 割り当てが、実行時に、割り当てられている構成されたインスタンスの各々によって動的に実行され、前記割り当てが、動的に決定される、請求項20に記載の1つ又は複数の機械可読ハードウェア記憶装置。
- 前記第1のアプリケーションが、複数のコンポーネントを有するデータフローグラフであり、前記動作が、
各コンポーネントに対し、そのコンポーネントに対して決定された並列実行の数に従って前記コンテナイメージの複数のインスタンスを生成することと、
動的レベルの並列処理を得るためにデータフローグラフを複数のノード上で動的に走らせることと
をさらに含み、
前記動的に走らせることが、
各コンポーネントに対し、
生成されたインスタンスを前記ホストシステムの1つ又は複数のノードに動的に割り当てることと、
前記ホストシステムの前記1つ又は複数のノード上で前記複数の割り当てられたインスタンスの各々を実行させることと
によって行われる、請求項21に記載の1つ又は複数の機械可読ハードウェア記憶装置。 - 前記所定のモジュールが、第1のモジュールであり、前記生成される複数のインスタンスが、複数の第1のインスタンスであり、前記動作が、
前記データ処理システムによって、前記第1のアプリケーションの第2のモジュールの並列実行の数を決定することと、
前記第2のモジュールに対し、前記第2のモジュールに対して前記決定された並列実行の数に従って前記コンテナイメージの複数の第2のインスタンスを生成することであって、第2のインスタンスの各々が、前記第1及び第2のアプリケーションを含む、生成することと、
第2のインスタンスの各々に対し、前記第1のアプリケーションの前記第2のモジュールを実行するようにその第2のインスタンスを構成することと、
前記1つ又は複数のホストシステム上で前記複数の構成された第2のインスタンスの各々を実行させることと、
前記第1のインスタンスのうちの1つと前記第2のインスタンスのうちの1つとの間の通信チャネルを確立させることであって、前記第1のインスタンスのうちの1つが、データを出力し、前記通信チャネル上で前記第2のインスタンスのうちの1つにその出力データを送信する、確立させることと
をさらに含む、請求項16に記載の1つ又は複数の機械可読ハードウェア記憶装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962844430P | 2019-05-07 | 2019-05-07 | |
US62/844,430 | 2019-05-07 | ||
US16/656,886 US11836505B2 (en) | 2019-05-07 | 2019-10-18 | Dynamic distribution of container images |
US16/656,886 | 2019-10-18 | ||
PCT/US2020/031772 WO2020227467A1 (en) | 2019-05-07 | 2020-05-07 | Dynamic distribution of container images |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022531452A JP2022531452A (ja) | 2022-07-06 |
JPWO2020227467A5 true JPWO2020227467A5 (ja) | 2024-06-12 |
Family
ID=73046297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021565877A Pending JP2022531452A (ja) | 2019-05-07 | 2020-05-07 | コンテナ画像の動的分散 |
Country Status (8)
Country | Link |
---|---|
US (2) | US11836505B2 (ja) |
EP (1) | EP3966691A1 (ja) |
JP (1) | JP2022531452A (ja) |
CN (1) | CN114174991A (ja) |
AU (1) | AU2020267509A1 (ja) |
CA (1) | CA3139510A1 (ja) |
SG (1) | SG11202112124QA (ja) |
WO (1) | WO2020227467A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11188386B2 (en) * | 2019-11-01 | 2021-11-30 | Sap Portals Israel Ltd. | Lightweight remote process execution |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966072A (en) | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
US7716630B2 (en) | 2005-06-27 | 2010-05-11 | Ab Initio Technology Llc | Managing parameters for graph-based computations |
US8291006B2 (en) | 2008-05-30 | 2012-10-16 | International Business Machines Corporation | Method for generating a distributed stream processing application |
US9183016B2 (en) | 2013-02-27 | 2015-11-10 | Vmware, Inc. | Adaptive task scheduling of Hadoop in a virtualized environment |
US10193963B2 (en) * | 2013-10-24 | 2019-01-29 | Vmware, Inc. | Container virtual machines for hadoop |
US9645861B2 (en) | 2014-04-29 | 2017-05-09 | Good Technology Holdings Limited | Method and system for managing and presenting multiple application containers as a single logical container |
US9256467B1 (en) | 2014-11-11 | 2016-02-09 | Amazon Technologies, Inc. | System for managing and scheduling containers |
US10892942B2 (en) * | 2016-01-22 | 2021-01-12 | Equinix, Inc. | Container-based cloud exchange disaster recovery |
US10212041B1 (en) * | 2016-03-04 | 2019-02-19 | Avi Networks | Traffic pattern detection and presentation in container-based cloud computing architecture |
CN107797807B (zh) * | 2016-08-29 | 2021-04-06 | 阿里巴巴集团控股有限公司 | 生成容器的方法、装置、终端、服务器与系统 |
CN108111470B (zh) * | 2016-11-25 | 2020-06-16 | 华为技术有限公司 | 容器的部署方法、服务间的通信方法及相关装置 |
US10445137B2 (en) | 2016-12-08 | 2019-10-15 | Ab Initio Technology Llc | Computational resource allocation |
US10572226B2 (en) | 2016-12-21 | 2020-02-25 | Aon Global Operations Ltd (Singapore Branch) | Methods, systems, and portal using software containers for accelerating aspects of data analytics application development and deployment |
US9983891B1 (en) * | 2017-03-21 | 2018-05-29 | Veritas Technologies Llc | Systems and methods for distributing configuration templates with application containers |
US10409713B2 (en) * | 2017-05-17 | 2019-09-10 | Red Hat, Inc. | Container testing using a directory and test artifacts and/or test dependencies |
-
2019
- 2019-10-18 US US16/656,886 patent/US11836505B2/en active Active
-
2020
- 2020-05-07 EP EP20729377.0A patent/EP3966691A1/en active Pending
- 2020-05-07 AU AU2020267509A patent/AU2020267509A1/en active Pending
- 2020-05-07 CN CN202080049185.9A patent/CN114174991A/zh active Pending
- 2020-05-07 JP JP2021565877A patent/JP2022531452A/ja active Pending
- 2020-05-07 CA CA3139510A patent/CA3139510A1/en active Pending
- 2020-05-07 SG SG11202112124QA patent/SG11202112124QA/en unknown
- 2020-05-07 WO PCT/US2020/031772 patent/WO2020227467A1/en unknown
-
2023
- 2023-10-23 US US18/492,173 patent/US20240126561A1/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9934073B2 (en) | Extension of resource constraints for service-defined containers | |
US8108196B2 (en) | System for yielding to a processor | |
US20060206891A1 (en) | System and method of maintaining strict hardware affinity in a virtualized logical partitioned (LPAR) multiprocessor system while allowing one processor to donate excess processor cycles to other partitions when warranted | |
CN110764901A (zh) | 基于gpu资源的数据处理方法、电子设备及系统 | |
US20050044301A1 (en) | Method and apparatus for providing virtual computing services | |
US20090089780A1 (en) | Method and apparatus to convey physical resource relationships | |
CN112416737B (zh) | 一种容器的测试方法、装置、设备和存储介质 | |
US11461120B2 (en) | Methods and apparatus for rack nesting in virtualized server systems | |
JP3186244B2 (ja) | 仮想計算機システム | |
KR101585160B1 (ko) | 독립실행환경을 제공하는 분산 컴퓨팅 시스템 및 분산 컴퓨팅 시스템의 제어방법 | |
Agosta et al. | Managing heterogeneous resources in hpc systems | |
Diab et al. | Dynamic sharing of GPUs in cloud systems | |
Raghavendra et al. | A review on container-based lightweight virtualization for fog computing | |
US20240126561A1 (en) | Dynamic distribution of container images | |
JPWO2020227467A5 (ja) | コンテナイメージの動的分散 | |
US20220326986A1 (en) | Scheduling workloads on partitioned resources of a host system in a container-orchestration system | |
CN110413381B (zh) | 用于对应用服务容器化的方法和装置 | |
US20240020149A1 (en) | Method for Automatically Providing A Time Signal to Containers or to Virtual Machines and System for Executing Software Applications Running in Containers or Virtual Machines and Related Computer Program Product and Computer-Readable Medium | |
JP2001265613A (ja) | 仮想計算機システム | |
US20240134701A1 (en) | Method and apparatus for managing storage resources of container cluster, and system | |
JP6694007B2 (ja) | 情報処理装置 | |
NL2015064B1 (en) | A computing platform system arranged for executing a plurality of processes and a method for handling processes in one of a plurality of connected computing platforms comprised in a computing platform system. | |
KR20230034195A (ko) | 하이브리드 가상 머신 관리자의 시스템 및 동작 방법 | |
Hong et al. | Container-based job management for fair resource sharing | |
Kang | Design of Testbed for Agile Computing of MapReduce Applications by using Docker |