JP2023101462A - コンピュータ実装方法、システム及びコンピュータプログラム(Kubernetesにおけるビッグデータに関するデータ局所性) - Google Patents
コンピュータ実装方法、システム及びコンピュータプログラム(Kubernetesにおけるビッグデータに関するデータ局所性) Download PDFInfo
- Publication number
- JP2023101462A JP2023101462A JP2022204803A JP2022204803A JP2023101462A JP 2023101462 A JP2023101462 A JP 2023101462A JP 2022204803 A JP2022204803 A JP 2022204803A JP 2022204803 A JP2022204803 A JP 2022204803A JP 2023101462 A JP2023101462 A JP 2023101462A
- Authority
- JP
- Japan
- Prior art keywords
- kubernetes
- executor
- pod
- task
- data
- 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 title claims description 41
- 238000004590 computer program Methods 0.000 title claims description 33
- 230000015654 memory Effects 0.000 claims description 16
- 238000013468 resource allocation Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 8
- 238000005192 partition Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 102100033121 Transcription factor 21 Human genes 0.000 description 3
- 101710119687 Transcription factor 21 Proteins 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 208000022417 sinus histiocytosis with massive lymphadenopathy Diseases 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 229920000747 poly(lactic acid) Polymers 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】Kubernetes(登録商標)には、データ局所性に関する問題があることが判明している。【解決手段】アプリケーションを実行するためのコントローラ及びエグゼキュータポッドを含むKubernetesコンピューティング環境の確立、及びその環境で実行すべきタスクに関する要求の受信段階により、Kubernetesコンピューティング環境のデータ局所性を制御する。コントローラは、サイドカーをディスパッチして、有向非巡回グラフ(DAG)特徴アナライザへの入力のために、エグゼキュータポッドからリソースデータを収集する。有向非巡回グラフ(DAG)特徴アナライザは、エグゼキュータポッドから、実行のために利用可能である最適な動的リソースを識別する。利用可能である最適な動的リソースを満たすエグゼキュータポッドが、Kubernetesコンピューティングで実行すべきタスクを実行する。【選択図】図5
Description
本発明は、概して分散コンピューティングの管理に関し、及びより詳細にはKubernetesに関する。
ビッグデータシステムは、指数関数的に成長するオンラインデータ及びバッチデータを扱う大規模アプリケーションである。Kubernetesは、大規模インフラストラクチャにおいてアプリケーションを展開するために利用可能な選択肢である。Kubernetesは分散システムの一例である。Kubernetesは、クラスタ内の全てのマシンを単一のリソースプールとして扱う。Kubernetesは、効果的にスケジュールを管理し、リソースを割り当て、インフラストラクチャの健全性をモニタリングし、及び更にインフラストラクチャ及びワークロードの所望の状態を維持することにより、分散オペレーティングシステムの役割を果たす。Kubernetesは、クラウドサービス及びプライベートデータセンタ環境において複数のクラスタ及びインフラストラクチャを横断して現代のアプリケーションを実行することが可能なオペレーティングシステムである。Kubernetesには、ヘッドノード及びワーカノードを含む2つの層が含まれる。ヘッドノードは通常、ワークロードのライフサイクルのスケジューリング及び管理を担当する制御プレーンを実行する。ワーカノードは、アプリケーションを実行するワークホースとして動作する。ヘッドノード及びワーカノードの集合体がクラスタになる。Kubernetesのコンポーネントは、コントローラ及びスケジューラを含み得る。しかしながら、Kubernetesは、ビッグデータスタックの展開に関していくつかの問題点を有する。
本開示の方法、システム、及びコンピュータプログラム製品より前のKubernetesには、データ局所性に関する問題があることが判明している。
本発明の一実施形態によれば、Kubernetesコンピューティング環境におけるデータ局所性を制御するためのコンピュータ実装方法が提供される。コンピュータ実装方法は、アプリケーションを実行するためのコントローラ及び少なくとも1つのエグゼキュータポッドを含むKubernetesコンピューティング環境を確立する段階を含み得る。コンピュータ実装方法は、Kubernetesコンピューティング環境で実行すべきタスクに関する要求を受信する。コントローラは、サイドカーをディスパッチして、有向非巡回グラフ(directed acyclic graph:DAG)特徴アナライザへの入力のために、少なくとも1つのエグゼキュータポッドからリソースデータを収集する。有向非巡回グラフ(DAG)特徴アナライザは、少なくとも1つのエグゼキュータポッドから、実行のために利用可能である最適な動的リソースを識別する。利用可能である最適な動的リソースを満たす少なくとも1つのエグゼキュータポッドが、Kubernetesコンピューティング環境で実行すべきタスクを実行する。
別の実施形態において、ハードウェアプロセッサ;及びコンピュータプログラム製品を格納するメモリを含む、Kubernetesコンピューティング環境におけるデータ局所性を制御するためのシステムが提供される。コンピュータプログラム製品は、ハードウェアプロセッサによって実行されると、ハードウェアプロセッサに、アプリケーションを実行するためのコントローラ及び少なくとも1つのエグゼキュータポッドを含むKubernetesコンピューティング環境を確立させる。このシステムはさらに、Kubernetesコンピューティング環境で実行すべきタスクに関する要求を受信すること、及びサイドカーをディスパッチして、有向非巡回グラフ(DAG)特徴アナライザへの入力のために、少なくとも1つのエグゼキュータポッドからリソースデータを収集することができる。このシステムはさらに、有向非巡回グラフ(DAG)特徴アナライザが、少なくとも1つのエグゼキュータポッドから、実行のために利用可能である最適な動的リソースを識別することを規定し得る。利用可能である最適な動的リソースを満たす少なくとも1つのエグゼキュータポッドが、Kubernetesコンピューティング環境で実行すべきタスクを実行する。
さらに別の実施形態では、Kubernetesにおけるデータ局所性を制御するためのコンピュータプログラム製品が提供される。コンピュータプログラム製品は、コンピュータ可読記憶媒体を含み得る。コンピュータ可読記憶媒体は、システムのプロセッサに、アプリケーションを実行するためのコントローラ及び少なくとも1つのエグゼキュータポッドを含むKubernetesコンピューティング環境を確立させ;及びKubernetesコンピューティング環境で実行すべきタスクに関する要求を受信させるように、プロセッサによって実行可能であるプログラム命令が具現化されたコンピュータ可読プログラムコードを有し得る。いくつかの実施形態において、コンピュータプログラム製品はさらに、ハードウェアプロセスを用い、サイドカーをディスパッチして、有向非巡回グラフ(DAG)特徴アナライザへの入力のために、少なくとも1つのエグゼキュータポッドからリソースデータを収集する。コンピュータプログラム製品はさらに、有向非巡回グラフ(DAG)特徴アナライザが、少なくとも1つのエグゼキュータポッドから、実行のために利用可能である最適な動的リソースを識別することを規定し得る。利用可能である最適な動的リソースを満たす少なくとも1つのエグゼキュータポッドが、Kubernetesコンピューティング環境で実行すべきタスクを実行する。
これら及び他の特徴及び利点は、これらの例示的な実施形態に関する以下の詳細な説明により明らかになり、以下の詳細な説明は、添付図面との関連で読まれるべきである。
以下の説明は、以下の図面を参照して好ましい実施形態の詳細を提供する。
本明細書で説明される方法、システム、及びコンピュータプログラム製品は、Kubernetesにおけるビッグデータに関するデータ局所性を実現することを対象とする。Kubernetesは、大規模インフラストラクチャにおいてアプリケーションを展開するための選択肢である。しかしながら、Kubernetesは、ビッグデータスタックの展開に関していくつかの問題点を有し得ることが判明している。特に困難な点の1つは、図1に示すような、以下のデータ局所性である。図1では、2つのノード、すなわち、ノードA 5及びノードB 6を有する、Kubernetesの例が提供されている。Kubernetesには、ヘッドノード及びワーカノードを含む2つの層が含まれる。ヘッドノードは通常、ワークロードのライフサイクルのスケジューリング及び管理を担当する制御プレーンを実行する。ワーカノードは、アプリケーションを実行するワークホースとして動作する。ヘッドノード及びワーカノードの集合体がクラスタになる。
図1に示される例において、ノードA 5は、クラスタ内のノードB 6上に位置するデータノード上のHDFSに格納されたデータを読み取る必要があるジョブを実行している。HDFSは、コモディティハードウェア上で実行される大量のデータセットを扱う分散ファイルシステムである。
ノードA 5上にはドライバポッド7があり、参照番号「8」を有するエグゼキュータポッド1上のファイルBの読み取りを試行している。ジョブ「Docker」が、第1のノード、すなわちノードA 5において、ドライバポッド7及びエグゼキュータポッド8上で実行されている。ジョブ「Docker」は、第2のノード、すなわちノードB 6でも、参照番号「9」を有するエグゼキュータポッド2上で実行されている。ノードA上のエグゼキュータポッド1は、ノードB上の参照番号10を有するデータノードポッド2からのデータ点を必要とする。ノードB上のエグゼキュータポッド2は、ノードA上の参照番号11を有するデータノードポッド1からのデータ点を必要とする。
図1に示される例において、クラスタ内のノードB上に位置するデータノード上のHDFSに格納されたデータを読み取る必要があるジョブをノードA上で実行すると、孤立したシステムのネットワークを介してデータがコンピューティング目的のために送信されるので、ネットワークレイテンシが大幅に増加する。本開示の方法、システム、及びコンピュータプログラム製品より前のKubernetesには、データ局所性に関する問題があることが判明している。
Kubernetesにおけるデータ局所性の問題の主な理由は、共通の一般的なステートレスリソース管理アーキテクチャである。Kubernetesのステートレスリソース管理アーキテクチャは、各コンテナに割り当てられたリソースのアドレスをビッグデータアプリケーションに伝えない。クラウド環境などの分散型コンピューティング環境について説明する際、「コンテナ」は、パッケージングが、関連する依存関係の全てを含み、及び異なるコンピューティング環境で確実に実行するよう設計されている、ソフトウェアのユニットを指す用語である。例えば、dockerは、よく知られているオープンソースのコンテナプラットフォームであり、及びdockerイメージは、アプリケーション、ランタイム、システムライブラリ、及びアプリケーションを実行するのに必要な設定を含む、独立型の実行可能パッケージである。1又は複数のコンテナは、アプリケーション処理要件に基づいて、「ポッド」と称される論理的ホストとして密結合したグループに入れられる。ポッドは、オーケストレータによって展開できる基本的なオブジェクトであり、及び設計により繰返し可能である。ポッドは、リソース要件に基づいて、任意の時点で、クラウド内のオーケストレーション環境を介して、独立して呼び出し又は停止可能である。Kubernetesは、dockerコンテナのためのオーケストレーションシステムの一例である。
本開示の方法、システム、及びコンピュータプログラム製品は、実行のために利用可能である最適な動的リソースが何かを識別する、パラメータベースのDAG-ステージ特徴分析による自己発見方法を用いて、Kubernetesにおけるデータ局所性の問題を伴うビッグデータアプリケーションの問題に対処する。(有向非巡回グラフ)DAGは頂点及びエッジのセットであり、図3に示されるように、頂点は耐障害性分散データセット(Resilient Distributed Dataset:RDD)3を表し、及びエッジは、RDDに適用されるオペレーション4を表す。DAGでは、全てのエッジがシーケンス内の前の方から後の方へと指向する。アクションが呼び出されると、作成されたDAGはDAGスケジューラにサブミットし、これがグラフをタスクのステージへとさらに分割する。耐障害性分散データセット(RDD)は、オブジェクトの不変分散集合体を含むデータ構造である。
本明細書で説明する方法は、ビッグデータアプリケーションのパーティション分散実行計画に基づいて、有向非巡回グラフ(DAG)図を生成する。次の段階では、パーティションの変換及び相互依存に基づいてステージが作成される。1つのステージ、例えば図3のステージ1中に、データの永続化又はシャッフルが起こり、及び完了すると、次のステージ、例えば図3のステージ2が実行される。ステージの最後のエグゼキュータは、そのノード情報及びパーティション出力バイトサイズをビッグデータアプリケーションスケジューラに送信する。スケジューラは、パラメータベースのDAGステージ特徴分析方法に基づき、現在のステージにおけるエグゼキュータポッドの物理ノード及びシャッフルデータの重みを分析し、及び最適なエグゼキュータポッドノードセレクタであるものを(図3のブロック2において)推奨する。
本明細書で説明する方法、システム、及びコンピュータプログラム製品は、Kubernetesにおいて動的リソース割り当てを実装するための自己発見方法を提供する。いくつかの利点は、動的リソース割り当てを自動的に推奨すること及び人の介在なしに生成された決定をマージすることを含む。エグゼキュータポッドリソースの推奨に関するデータ及びノード統計情報などのパラメータを追跡するためのシステムが提供される。本件の方法、システム、及びコンピュータプログラム製品は、ポッドのスカラー因子をよりよくチェックしてリソース制限及びポッド展開失敗の問題をなくすために、Kubernetes/オープンシフトの可観測性を考慮する。本件のシステムは、コード侵害性ではなく、むしろサイドカー又はプロキシに基づく。
ここで、図2~8を参照して、本件の方法、システム、及びコンピュータプログラム製品をより詳細に説明する。
図2は、Kubernetesにおけるビッグデータに関するデータ局所性を実現するためのシステム及び方法のための例示的な環境の1つの実施形態を示す。図3は、有向非巡回グラフ図の1つの実施形態を示す。
本発明の態様は、本明細書において、発明の実施形態に係る方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図若しくはブロック図又はその組み合わせを参照して説明されている。フローチャート図若しくはブロック図又はその組み合わせの各ブロック、及びフローチャート図若しくはブロック図又はその組み合わせにおけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得ることは理解されよう。
これらのコンピュータ可読プログラム命令を、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサに提供することにより、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート若しくはブロック図又はその組み合わせの単数のブロック又は複数のブロックで指定された機能/動作を実装する手段を作成するようなマシンを生成してもよい。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラマブルデータ処理装置、若しくは他のデバイス又はその組み合わせに特定の様式で機能するよう指示することができるコンピュータ可読記憶媒体に格納することにより、命令が格納されているコンピュータ可読記憶媒体が、フローチャート若しくはブロック図又はその組み合わせの単数のブロック又は複数のブロックで指定された機能/動作の態様を実装する命令を含む製品を構成するようにしてもよい。
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードして、コンピュータ、他のプログラマブル装置、又は他のデバイス上で一連の動作段階を実行させることで、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令が、フローチャート若しくはブロック図又はその組み合わせの単数のブロック又は複数のブロックで指定された機能/動作を実装するようなコンピュータ実装プロセスを生成することもできる。
図面におけるフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法、及びコンピュータプログラム製品の考えられる実装形態のアーキテクチャ、機能、及びオペレーションを示している。これに関して、フローチャート又はブロック図における各ブロックは、指定される論理機能を実装する1又は複数の実行可能命令を含む命令のモジュール、セグメント、又は一部を表し得る。いくつかの代替的な実装形態では、ブロックに記載された機能が、図面に記載された順序とは異なる順序で行われてよい。例えば、連続して示される2つのブロックは、実際には、1つの段階として遂行され、部分的又は全体的に時間的に重複する様式で、同時か、実質的に同時に実行されてもよく、又は、場合により、関与する機能に応じてブロックが逆の順序で実行されてもよい。また、ブロック図若しくはフローチャート図又はその組み合わせの各ブロック、及びブロック図若しくはフローチャート図又はその組み合わせにおけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用ハードウェア及びコンピュータ命令の組み合わせを実行する、専用ハードウェアベースのシステムによって実装され得ることに留意されたい。
図2は、マスタサーバ16と通信しているアプリケーションオペレータ12を含む例示的な環境の1つの実施形態を示す。アプリケーションオペレータ12は、コントローラ13、サブミッションランナ14、及びポッドモニタ15を含む。マスタサーバ16は、アプリケーションプログラミングインタフェース(application programming interface:API)サーバ17及びスケジューラ18を含む。ビッグデータアプリケーション19は、これらの要素、すなわち、アプリケーションオペレータ12及びマスタサーバ16の間で実行される。ポッドモニタ15は、Kubernetesでのポッドイベントをモニタリングし、及びAPIサーバ17と通信している。サブミッションランナ14も、APIサーバ17と通信している。
Kubectl 20も、マスタサーバ16のAPIサーバ17と通信している。Kubectlは、Kubernetesクラスタに対してコマンドを実行することを可能にする。Kubectl 20を使用すると、アプリケーションの展開、クラスタリソースの検査及び管理、及びログの閲覧を行うことができる。ビッグデータアプリケーションオブジェクティブ21が、Kubectl 20及びマスタサーバ16のAPIサーバ17の間で伝送され得る。
引き続き図2を参照すると、ワーカノードが参照番号25a及び25bによって識別されている。ワーカノード25a、25bの各々は、データ28及びタスク27を含むエグゼキュータポッド26a、26bを含む。ワーカノード25a、25bは、マスタサーバ16のスケジューラ17と通信している。
引き続き図2を参照すると、ドライバポッド29も、マスタサーバ16のスケジューラ17と通信している。ドライバポッド29は、ワーカノード25a、25bとも通信している。
ドライバポッド29及びワーカノード25a、25bは、エグゼキュータにとって利用可能である最適な動的リソースは何かを識別できる有向非巡回グラフ(DAG)特徴アナライザ30と通信している。ドライバポッド29及びワーカノード25a、25bは、DAG特徴アナライザ30と、サイドカー31を介して通信している。
サイドカーパターンは、オリジナルの機能を拡大する補助タスクからメインビジネスロジックを分離することにより、この原理を達成するのに役立つ。Kubernetesにおいて、ポッドは、共有ストレージ及びネットワークを有する1又は複数のコンテナのグループである。サイドカーは、メインアプリケーションコンテナに疎結合しているポッド内のユーティリティコンテナである。サイドカー31は、データローダとして機能し得る。
図5は、本開示の1つの実施形態による、Kubernetesにおけるビッグデータに関するデータ局所性を実現するための方法を示す。図5のブロック45は、アプリケーション、例えばビッグデータアプリケーションを実行するための、コントローラ20及び少なくとも1つのエグゼキュータポッド26a、26bを含むKubernetesコンピューティング環境を確立する段階を含む。ブロック45は、図2に示されるコンピューティング環境を提供し得る。
図2を再び参照すると、1つの例において、APIサーバ17は、タスクの要求をアプリケーションオペレータ12にサブミットし得る。アプリケーションオペレータ12は、タスク要求を受信することからイベントリスナを含むコントローラ13を含む。いくつかの実施形態において、アプリケーションオペレータ12がタスク作成要求を受信すると、アプリケーションオペレータ12は、サブミッションランナ12を使用してタスクをサブミットすることができる。ポッドモニタ15は、ポッドステータス及びイベントをモニタリングし、及び次に、Kubernetesのコントローラ、すなわちKubeコントローラ20により、ドライバポッド29及びエグゼキュータポッド26a、26bをディスパッチするよう通知する。
図5のブロック46を参照すると、いくつかの実施形態において、ビッグデータアプリケーションを扱うKubernetesコンピューティング環境における局所性を提供するためのコンピュータ実装方法は、Kubernetesコンピューティング環境で実行すべきタスクに関する要求を受信する段階を含み得る。この段階は、サーバ17がタスクに関する要求をアプリケーションオペレータ12にサブミットすることで開始する上述のプロセスフローによって行うことができ、ここで、アプリケーションオペレータ12は、サブミッションランナ14を使用してタスクをマスタサーバ16にサブミットすることができる。
図5のブロック47は、コントローラ、例えばKubeコントローラ20により、マスタサーバ16のスケジューラ18にディスパッチして、有向非巡回グラフ(DAG)特徴アナライザ30への入力1のために、少なくとも1つのエグゼキュータポッド26a、26bからリソースデータを収集する段階をさらに含む。リソース及びデータボリュームの情報もドライバポッド29から収集され得る。
図2を参照すると、サイドカーがドライバポッド29及びエグゼキュータポッド26a、26bで展開されて、リソース及びデータボリュームの情報を収集している。この情報は、ドライバポッド29及びアプリケーションオペレータ12によって収集される。収集された情報に基づき、情報がDAG特徴アナライザ30によって提供されて、レイテンシを低減させる及び最適化されたデータ局所性を提供するために次のエグゼキュータポッドがどこに割り当てられるかについての正確な命令が送信される。
図5に示したブロック/フロー図によって示される方法のブロック48は、有向非巡回グラフ(DAG)特徴アナライザにより、少なくとも1つのエグゼキュータポッド26a、26bから、要求を実行するために、すなわちKubernetesコンピューティング環境において実行するために利用可能である最適な動的リソースを識別する段階を含む。
図3は、DAG-ステージ特徴アナライザ35の1つの実施形態を示す。いくつかの実施形態において、DAG-ステージ特徴アナライザ35の提供は、ビッグアプリケーションコード実装及び分散実行計画に基づいてデータ及びステージネットワークを構築することで開始し得る。1つの実施形態において、ビッグデータは、パーティション又はRDDに分割される。RDDは耐障害性分散データセットを指す。これらは、単一のノードに収めることができないほどサイズが大きい様々なデータアイテムの集合体である。これは、データサイズを考慮して、耐障害性分散データセット(RDD)と称される、様々なノードにまたがるパーティションに分けられる。
次の段階では、各オペレーション又はコード機能がパーティション又はRDD上で実行する。
図3に示されるように、これらのオペレーションは共に構成され、及びビッグデータアプリケーション実行エンジンは、これらを有向非巡回グラフ(DAG)とみなす。RDDオペレーションのタイプは2つある。例えば、ナローオペレーションのRDDオペレーション、及びワイドオペレーションのRDDオペレーションがある。ナローオペレーションは、パーティションをまたぐデータのシャッフルを含まない。ナローオペレーションは、単一のステージにグループ分けされる。一方、ワイドオペレーションは、例えば、図3に示されるような、第1ステージ及び第2ステージのステージ境界をもたらす。
次の段階において、この方法は、DAG及びステージ特徴分析及び収集されたパラメータに基づいて、動的割り当ての推奨を識別及び生成することができる。この段階には、エグゼキュータポッド及びデータボリューム統計値に基づいて、次の段階のエグゼキュータリソース割り当てを推奨する段階が含まれ得る。これは、図3に示されるDAGのステージ1によって行われ得る。考慮されるデータボリューム統計値は、ノード情報、データ出力範囲、最大値、及びデータのサイズを含み得る。
その後、この方法は、Kuberneteリソースの可観測性を獲得して、さらなる次の段階のエグゼキュータリソースに対するリソース自動スケーリング関連性データのバランスを取ることを継続し得る。これは、図3に示されるDAGのステージ2によって行われ得る。
リソース割り当ての推奨のためのDAGステージ特徴分析方法からの出力の1つの例は、図4に示される表に示されている。
Kubernetesエグゼキュータは、リソース割り当てを使用して、Kubernetesクラスタ上のそれ自体のポッドにおいて各タスクインスタンスを実行する。DAGがタスクをサブミットすると、Kubernetesエグゼキュータは、ワーカポッドをKubernetesのAPIから要求する。ワーカポッドは次に、タスクを実行し、結果を報告し、及び終了する。図5に示される方法のブロック49は、Kubernetesコンピューティング環境において利用可能である最適な動的リソースを満たす少なくとも1つのエグゼキュータポッド26a、26bによりタスクを実行する段階を含む。
図6は、Kubernetesにおけるビッグデータに関するデータ局所性を実現するために使用されるDAGステージ特徴アナライザ30を示すブロック図である。ハードウェアプロセッサ43;及びコンピュータプログラム製品を格納するメモリを含む、ビッグデータに関するデータ局所性を実現するためのシステムが提供されている。コンピュータプログラム製品は、ハードウェアプロセッサ43によって実行されると、ハードウェアプロセッサに、アプリケーションを実行するためのコントローラ及び少なくとも1つのエグゼキュータポッドを含むKubernetesコンピューティング環境を確立させる。このシステムはさらに、Kubernetesコンピューティング環境で実行すべきタスクに関する要求を受信すること、及びサイドカーをディスパッチして、有向非巡回グラフ(DAG)特徴アナライザへの入力のために、少なくとも1つのエグゼキュータポッドからリソースデータを収集することができる。サイドカー入力は、参照番号41によって識別される。このシステムはさらに、有向非巡回グラフ(DAG)特徴アナライザ30が、少なくとも1つのエグゼキュータポッドから、実行のために利用可能である最適な動的リソースを識別することを規定し得る。利用可能である最適な動的リソースを満たす少なくとも1つのエグゼキュータポッドが、Kubernetesコンピューティング環境で実行すべきタスクを実行する。DAG特徴アナライザ30は、ポッドエグゼキュータ42を含む。
図6は、DAGステージ特徴アナライザ30を含み得る処理システム400をさらに示す。本発明が適用され得る例示的な処理システム400が、1つの実施形態に従って示されている。処理システム400は、システムバス102を介して他のコンポーネントに動作可能に結合された少なくとも1つのプロセッサ(CPU)104を含む。システムバス102は、ポッド健全性チェックシステム200と通信していてもよい。キャッシュ106、リードオンリメモリ(Read Only Memory:ROM)108、ランダムアクセスメモリ(Random Access Memory:RAM)110、入力/出力(input/output:I/O)アダプタ120、音声アダプタ130、ネットワークアダプタ140、ユーザインタフェースアダプタ150、及びディスプレイアダプタ160が、システムバス102に動作可能に結合されている。図示のように、クラウド環境におけるポリシー偏差の出所に基づく識別情報を提供するシステム100は、システムバス102との接続により、処理システム400に統合され得る。
第1のストレージデバイス122及び第2のストレージデバイス124は、I/Oアダプタ120により、システムバス102に動作可能に結合されている。ストレージデバイス122及び124は、ディスクストレージデバイス(例えば、磁気ディスクストレージデバイス又は光ディスクストレージデバイス)、ソリッドステート磁気デバイスなどのいずれでもよい。ストレージデバイス122及び124は、同じタイプのストレージデバイス又は異なるタイプのストレージデバイスでもよい。
スピーカ132は、音声アダプタ130により、システムバス102に動作可能に結合されている。トランシーバ142は、ネットワークアダプタ140により、システムバス102に動作可能に結合されている。ディスプレイデバイス162は、ディスプレイアダプタ160により、システムバス102に動作可能に結合されている。
第1のユーザ入力デバイス152、第2のユーザ入力デバイス154、及び第3のユーザ入力デバイス156は、ユーザインタフェースアダプタ150により、システムバス102に動作可能に結合されている。ユーザ入力デバイス152、154及び156は、キーボード、マウス、キーパッド、画像キャプチャデバイス、運動感知デバイス、マイクロフォン、先述のデバイスのうちの少なくとも2つの機能を組み込んだデバイスなどのいずれでもよい。当然ながら、本発明の趣旨を維持しながら、他のタイプの入力デバイスを使用してもよい。ユーザ入力デバイス152、154及び156は、同じタイプのユーザ入力デバイス又は異なるタイプのユーザ入力デバイスでもよい。ユーザ入力デバイス152、154、及び156は、システム400への情報の入力及びそれからの情報の出力のために使用される。
当然ながら、処理システム400は、当業者によって容易に想定されるような他の要素(図示せず)を含んでもよく、また、特定要素を省略してもよい。例えば、当業者には容易に理解されるように、様々な他の入力デバイス若しくは出力デバイス又はその組み合わせが、その特定の実装形態に応じて、処理システム400に含まれてもよい。例えば、様々なタイプの無線若しくは有線又はその組み合わせの入力デバイス若しくは出力デバイス又はその組み合わせが使用され得る。また、当業者には容易に理解されるように、様々な構成における、追加のプロセッサ、コントローラ、メモリなどを利用することもできる。処理システム400のこれら及び他の変更形態は、本明細書で提供する本発明の教示を所与とすれば、当業者によって容易に想定される。
本明細書で用いられる場合、「ハードウェアプロセッササブシステム」又は「ハードウェアプロセッサ」という用語は、1又は複数の特定のタスクを実行するために連携するプロセッサ、メモリ、ソフトウェア、又はそれらの組み合わせを指し得る。有用な実施形態では、ハードウェアプロセッササブシステムは、1又は複数のデータ処理要素(例えば、論理回路、処理回路、命令実行デバイスなど)を含み得る。1又は複数のデータ処理要素は、中央処理装置、グラフィックス処理ユニット、若しくは、別個のプロセッサ又はコンピューティング要素に基づくコントローラ(例えば論理ゲートなど)、又はその組み合わせに含まれ得る。ハードウェアプロセッササブシステムは、1又は複数のオンボードメモリ(例えば、キャッシュ、専用メモリアレイ、リードオンリメモリなど)を含み得る。いくつかの実施形態において、ハードウェアプロセッササブシステムには、オンボード又はオフボードであり得る、又は、ハードウェアプロセッササブシステム(例えば、ROM、RAM、基本入力/出力システム(basic input/output system:BIOS)など)による使用専用であり得る、1又は複数のメモリが含まれ得る。
いくつかの実施形態において、ハードウェアプロセッササブシステムは、1又は複数のソフトウェア要素を含むこと及び実行することができる。1又は複数のソフトウェア要素は、特定の結果を達成するための、オペレーティングシステム若しくは1又は複数のアプリケーション若しくは特定のコード又はその組み合わせを含み得る。
他の実施形態において、ハードウェアプロセッササブシステムは、特定の結果を達成するための1又は複数の電子処理機能を実行する、専用の特殊回路を含み得る。そのような回路は、1又は複数の特定用途向け集積回路(application-specific integrated circuit:ASIC)、FPGA、若しくはPLA、又はその組み合わせを含み得る。
本発明の実施形態によるハードウェアプロセッササブシステムのこれら及び他の変更形態も想定される。
本発明は、任意の可能な技術詳細レベルで統合化されたシステム、方法、若しくはコンピュータプログラム製品、又はその組み合わせであり得る。例えば、いくつかの実施形態において、Kubernetesにおけるデータ局所性を制御するためのコンピュータプログラム製品が提供される。コンピュータプログラム製品は、コンピュータ可読記憶媒体を含み得る。コンピュータ可読記憶媒体は、システムのプロセッサに、アプリケーションを実行するためのコントローラ及び少なくとも1つのエグゼキュータポッドを含むKubernetesコンピューティング環境を確立させ;及びKubernetesコンピューティング環境で実行すべきタスクに関する要求を受信させるように、プロセッサによって実行可能であるプログラム命令が具現化されたコンピュータ可読プログラムコードを有し得る。いくつかの実施形態において、コンピュータプログラム製品はさらに、ハードウェアプロセスを用い、サイドカーをディスパッチして、有向非巡回グラフ(DAG)特徴アナライザへの入力のために、少なくとも1つのエグゼキュータポッドからリソースデータを収集する。コンピュータプログラム製品はさらに、有向非巡回グラフ(DAG)特徴アナライザが、少なくとも1つのエグゼキュータポッドから、実行のために利用可能である最適な動的リソースを識別することを規定し得る。利用可能である最適な動的リソースを満たす少なくとも1つのエグゼキュータポッドが、Kubernetesコンピューティング環境で実行すべきタスクを実行する。
コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(単数又は複数)を含み得る。コンピュータプログラム製品は非一時的でもよい。
コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持及び格納し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、又は前述したものの任意の好適な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、以下を含む:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、機械的にエンコードされたデバイス、例えば、パンチカード、又は命令が記録されている溝内の隆起構造、及び前述したものの任意の好適な組み合わせ。本明細書において使用されるコンピュータ可読記憶媒体は、電波又は他の自由に伝搬する電磁波、導波路又は他の伝送媒体(例えば、光ファイバケーブルを通過する光パルス)を伝搬する電磁波、又はワイヤを通って伝送される電気信号などの一時的な信号そのものであると解釈してはならない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてもよく、又は、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、若しくは無線ネットワーク、又はその組み合わせを介して、外部コンピュータ又は外部ストレージデバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、若しくはエッジサーバ、又はその組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、及びそれぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
本発明のオペレーションを実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路に対する構成データ、又は、例えばSmalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語などの手続き型プログラミング言語を含む、1又は複数のプログラミング言語の任意の組み合わせで書かれたソースコード又はオブジェクトコードのいずれかであってもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行してもよく、スタンドアロンソフトウェアパッケージとして部分的にユーザのコンピュータ上で実行してもよく、部分的にユーザのコンピュータ上で及び部分的にリモートコンピュータ上で実行してもよく、又は、完全にリモートコンピュータ又はサーバ上で実行してもよい。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続していてもよく、又は、その接続が外部コンピュータに対して(例えば、インターネットサービスプロバイダを使用してインターネットを介して)行われてもよい。いくつかの実施形態において、例えばプログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブルロジックアレイ(PLA)を含む電子回路が、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行してよい。
本開示はクラウドコンピューティングについての詳細な説明を含むが、本明細書に記載される教示内容の実装形態は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られているか又は今後開発される任意の他のタイプのコンピューティング環境(例えば、モノのインターネット(Internet of thing:IOT))と併せて実装することが可能である。クラウドコンピューティングは、管理労力又はサービスのプロバイダとのインタラクションを最小限に抑えながら迅速にプロビジョニング及びリリースできる構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの簡便なオンデマンドネットワークアクセスを可能にするためのサービス供給モデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、及び少なくとも4つの展開モデルを含み得る。特性は以下のとおりである。
オンデマンドセルフサービス:クラウド利用者が、サービスプロバイダとのヒューマンインタラクションを必要とすることなく、必要に応じて自動的に、サーバタイム及びネットワークストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
幅広いネットワークアクセス:複数の機能がネットワークを介して利用可能であり、及び異なる種類のシン又はシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的なメカニズムを通してアクセスされる。
リソースプーリング:プロバイダのコンピューティングリソースが、マルチテナントモデルを使用して複数の利用者にサービス提供するようプールされ、異なる物理リソース及び仮想リソースが、需要に従って動的に割り当て及び再割り当てされる。利用者は概して、提供されたリソースの正確な位置に対する制御権又は知識を有しないが、より高い抽象化レベル(例えば、国、州、又はデータセンタ)において位置を指定することが可能であり得るという点で、位置独立性がある。
迅速な順応性:複数の機能を迅速及び柔軟に、場合によっては自動的にプロビジョニングし、即座にスケールアウトし、及び迅速にリリースして即座にスケールインすることができる。利用者にとって、多くの場合、プロビジョニングに利用可能な機能が無制限に見え、及びいつでも任意の量で購入可能である。
測定されたサービス:クラウドシステムが、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブユーザアカウント)に適切なある抽象化レベルにおいて計測機能を活用することによって、自動的にリソース使用を制御及び最適化する。リソース使用量をモニタリングし、制御し、及び報告することで、利用されるサービスのプロバイダ及び利用者の両方に透明性を提供することができる。
サービスモデルは、以下のとおりである。
サービスとしてのソフトウェア(Software as a Service:SaaS):利用者に提供される機能は、クラウドインフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、webブラウザ(例えば、webベースの電子メール)などのシンクライアントインタフェースを通して様々なクライアントデバイスからアクセス可能である。利用者は、限定的なユーザ固有のアプリケーション構成設定という考えられる例外を除き、ネットワーク、サーバ、オペレーティングシステム、ストレージ、又は更には個々のアプリケーション機能を含む、基礎となるクラウドインフラストラクチャを管理又は制御しない。サービスとしてのプラットフォーム(Platform as a Service:PaaS):利用者に提供される機能は、クラウドインフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語及びツールを使用して作成される、利用者により作成又は取得されたアプリケーションを展開することである。利用者は、ネットワーク、サーバ、オペレーティングシステム、又はストレージを含む、基礎となるクラウドインフラストラクチャを管理又は制御しないが、展開されたアプリケーション、及び場合によってはアプリケーションホスティング環境構成に対する制御権を有する。
サービスとしてのインフラストラクチャ(Infrastructure as a Service:IaaS):利用者に提供される機能は、処理、ストレージ、ネットワーク、及び他の基礎的なコンピューティングリソースをプロビジョニングすることであり、ここで利用者は、オペレーティングシステム及びアプリケーションを含み得る任意のソフトウェアを展開及び実行することが可能である。利用者は、基礎となるクラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションに対する制御権を有し、及び場合によっては、選択されたネットワーキングコンポーネント(例えば、ホストファイアウォール)の限定的な制御権を有する。
展開モデルは以下のとおりである。
プライベートクラウド:このクラウドインフラストラクチャは、ある組織のためだけに動作する。これは、その組織又はサードパーティによって管理されてよく、及びオンプレミス又はオフプレミスで存在してよい。コミュニティクラウド:このクラウドインフラストラクチャは、幾つかの組織によって共有され、及び共通の関心事項(例えば、ミッション、セキュリティ要件、ポリシー、及びコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。これは、これらの組織又はサードパーティにより管理されてよく、及びオンプレミス又はオフプレミスで存在してよい。
パブリッククラウド:このクラウドインフラストラクチャは、一般大衆又は大規模な業界団体に利用可能とされ、及びクラウドサービスを販売する組織によって所有される。
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、又はパブリック)からなる構成物であり、各クラウドは独自のエンティティのままであるが、データ及びアプリケーションの移植性(例えば、クラウド間で負荷分散するためのクラウドバースト)を可能にする標準化された技術又は独自技術によって共に結合されている。
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性、及び意味相互運用性を重視するサービス指向である。クラウドコンピューティングの中心にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで図7を参照すると、例示的なクラウドコンピューティング環境が示されている。図示のように、クラウドコンピューティング環境は、1又は複数のクラウドコンピューティングノードを含み、これと、クラウド利用者が使用するローカルコンピューティングデバイス、例えばパーソナルデジタルアシスタント(PDA)又は携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、若しくは自動車コンピュータシステム54N、又はその組み合わせなどが通信し得る。ノード10は、互いに通信してよい。これらは、上記で説明したようなプライベートクラウド、コミュニティクラウド、パブリッククラウド、又はハイブリッドクラウド、又はこれらの組み合わせなどの、1又は複数のネットワーク内で物理的又は仮想的にグループ化されてよい(図示せず)。これにより、クラウドコンピューティング環境が、サービスとしてのインフラストラクチャ、プラットフォーム、若しくはソフトウェア、又はその組み合わせを提供することが可能になり、こうしたもののために、クラウド利用者がローカルコンピューティングデバイス上にリソースを維持する必要はない。図7に示されるコンピューティングデバイス54A、54B、54C及び54Nのタイプが例示のみを意図していること、及び、コンピューティングノード10及びクラウドコンピューティング環境50が、任意のタイプのネットワーク若しくはネットワークアドレス可能な接続(例えば、webブラウザを使用する)又はその組み合わせを介して、任意のタイプのコンピュータ化デバイスと通信し得ることは理解されよう。
ここで図8を参照すると、クラウドコンピューティング環境(図7参照)によって提供される機能抽象化層のセットが示されている。図8に示されているコンポーネント、層、及び機能が例示のみを意図していること、及び本発明の実施形態がこれらに限定されるものではないことが予め理解されるべきである。図示のように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層60には、ハードウェアコンポーネント及びソフトウェアコンポーネントが含まれている。ハードウェアコンポーネントの例は:メインフレーム61;縮小命令セットコンピュータ(Reduced Instruction Set Computer:RISC)アーキテクチャベースのサーバ62;サーバ63;ブレードサーバ64;ストレージデバイス65;及びネットワーク及びネットワーキングコンポーネント66を含む。いくつかの実施形態において、ソフトウェアコンポーネントには、ネットワークアプリケーションサーバソフトウェア67及びデータベースソフトウェア68が含まれる。
仮想化層70は、抽象化層を提供し、ここから、以下の仮想エンティティの例が提供され得る:仮想サーバ71;仮想ストレージ72;仮想プライベートネットワークを含む仮想ネットワーク73;仮想アプリケーション及びオペレーティングシステム74;及び仮想クライアント75。
1つの例において、管理層80は、以下で説明される機能を提供し得る。リソースプロビジョニング81では、クラウドコンピューティング環境内でタスクを実行するのに利用されるコンピューティングリソース及び他のリソースの動的調達を行う。計測及び価格設定82では、クラウドコンピューティング環境内でリソースが利用される際のコストの追跡、及びこれらのリソースの消費に対する課金又は請求を行う。1つの例において、これらのリソースは、アプリケーションソフトウェアライセンスを含み得る。セキュリティは、クラウド利用者及びタスクに関する同一性確認、並びにデータ及び他のリソースに対する保護を行う。ユーザポータル83は、利用者及びシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。
サービスレベル管理84では、必要なサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当て及び管理を行う。サービスレベルアグリーメント(Service Level Agreement:SLA)の計画及び履行85では、将来の要件がSLAに従って予期されるクラウドコンピューティングリソースに関する事前の取り決め及びその調達を行う。
ワークロード層89は、クラウドコンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロード及び機能の例は:マッピング及びナビゲーション91;ソフトウェア開発及びライフサイクル管理92;仮想教室教育の供給93;データ分析処理94;トランザクション処理95;及び図1~7に従う、Kubernetesにおけるビッグデータに関するデータ局所性を実現するためのDAGステージ特徴アナライザ30を含む。
本明細書における本発明の「1つの実施形態」又は「一実施形態」及びそれらの他の変更形態への言及は、実施形態との関連で説明される特定の特徴、構造、特性などが、本発明の少なくとも1つの実施形態に含まれることを意味する。そのため、本明細書全体を通して様々な箇所に出現する、「1つの実施形態において」又は「一実施形態において」という語句、及び何らかの他の変更形態の出現は、必ずしも全てが同じ実施形態に言及しているとは限らない。
例えば、「A/B」、「A若しくはB又はその組み合わせ」、及び「A及びBのうちの少なくとも1つ」という場合、「/」、「~若しくは…又はその組み合わせ」、及び「~のうちの少なくとも1つ」のいずれかの使用は、第1の列挙される選択肢(A)のみの選択、又は、第2の列挙される選択肢(B)のみの選択、又は、両方の選択肢(A及びB)の選択を包含するよう意図されることを理解されたい。さらなる一例として、「A、B、若しくはC、又はその組み合わせ」、及び「A、B、及びCのうちの少なくとも1つ」という場合、そのような言い回しは、第1の列挙される選択肢(A)のみの選択、又は、第2の列挙される選択肢(B)のみの選択、又は、第3の列挙される選択肢(C)のみの選択、又は、第1及び第2の列挙される選択肢(A及びB)のみの選択、又は、第1及び第3の列挙される選択肢(A及びC)のみの選択、又は、第2及び第3の列挙される選択肢(B及びC)のみの選択、又は、3つの選択肢全て(A及びB及びC)の選択を包含することが意図される。これは、当技術分野及び関連技術分野の当業者には容易に明らかであるように、列挙される項目と同じ数だけ拡大解釈され得る。
Kubernetesにおけるビッグデータに関するデータ局所性を実現するためのシステム及び方法の好ましい実施形態(例示及び非限定を意図するものである)について説明したが、上述の教示に鑑み、当業者によって修正及び変更が行われ得ることを注記する。したがって、開示された特定の実施形態において、添付の特許請求の範囲により概説される発明の範囲内にある変更が行われてよいことを理解されたい。このように、特許法により必要とされる詳細及び特定性と共に本発明の態様を説明したが、何が請求されるか、及び特許証による保護が所望されるかは、添付の特許請求の範囲に記載される。
Claims (20)
- Kubernetesコンピューティング環境におけるデータ局所性を制御するために提供されるコンピュータ実装方法であって:
アプリケーションを実行するためのコントローラ及び少なくとも1つのエグゼキュータポッドを含むKubernetesコンピューティング環境を確立する段階;
前記Kubernetesコンピューティング環境で実行すべきタスクに関する要求を受信する段階;
前記コントローラによりサイドカーをディスパッチして、有向非巡回グラフ(DAG)特徴アナライザへの入力のために、前記少なくとも1つのエグゼキュータポッドからリソースデータを収集する段階;
前記有向非巡回グラフ(DAG)特徴アナライザにより、前記少なくとも1つのエグゼキュータポッドから、実行のために利用可能である最適な動的リソースを識別する段階;及び
前記Kubernetesコンピューティング環境において利用可能である前記最適な動的リソースを満たす前記少なくとも1つのエグゼキュータポッドにより、前記タスクを実行する段階
を備えるコンピュータ実装方法。 - 実行すべきタスクに関する要求を受信する前記段階は、アプリケーションオペレータが、前記Kubernetesコンピューティング環境のドライバポッド及びワーカノードと通信するようスケジューラに依頼するマスタサーバにタスクを送信するサブミッションランナを用いて前記タスクを生成する段階を有する、請求項1に記載のコンピュータ実装方法。
- 前記サイドカーをディスパッチする段階は、前記ドライバポッド及び前記ワーカノードを使用して前記リソースデータを収集する段階を有する、請求項2に記載のコンピュータ実装方法。
- 前記リソースデータは、エグゼキュータポッドボリューム、データボリューム、ノード情報、データ出力範囲、最大値サイズ、CPU使用量、ストレージ使用量、及びそれらの組み合わせから成る群から選択される、請求項1から3のいずれか一項に記載のコンピュータ実装方法。
- 前記タスクを実行する段階は、前記タスクを実行し、結果を報告し、及び終了する段階を有する、請求項1から3のいずれか一項に記載のコンピュータ実装方法。
- 前記有向非巡回グラフ(DAG)特徴アナライザは、耐障害性分散データセットを表す頂点、及び前記耐障害性分散データセットに適用されるオペレーションを表すエッジを有するグラフを含む、請求項1から3のいずれか一項に記載のコンピュータ実装方法。
- 前記有向非巡回グラフ(DAG)特徴アナライザは、2つのステージを含み、ここで第1ステージは、前記少なくとも1つのエグゼキュータポッドからの前記リソースデータに基づいてエグゼキュータリソース割り当てを推奨し、及び第2ステージは、Kuberneteリソースの可観測性を獲得して、前記リソースデータに基づく前記推奨されたエグゼキュータリソース割り当てに応答してリソース自動スケーリングのバランスを取る、請求項6に記載のコンピュータ実装方法。
- Kubernetesコンピューティング環境におけるデータ局所性を制御するためのシステムであって:
ハードウェアプロセッサ;及び
コンピュータプログラム製品を格納するメモリを備え、前記コンピュータプログラム製品は、前記ハードウェアプロセッサによって実行されると、前記ハードウェアプロセッサに:
アプリケーションを実行するためのコントローラ及び少なくとも1つのエグゼキュータポッドを含むKubernetesコンピューティング環境を確立する手順;
前記Kubernetesコンピューティング環境で実行すべきタスクに関する要求を受信する手順;
サイドカーをディスパッチさせて、有向非巡回グラフ(DAG)特徴アナライザへの入力のために、前記少なくとも1つのエグゼキュータポッドからリソースデータを収集する手順;
前記有向非巡回グラフ(DAG)特徴アナライザが、前記少なくとも1つのエグゼキュータポッドから、実行のために利用可能である最適な動的リソースを識別することを規定する手順;及び
前記Kubernetesコンピューティング環境において利用可能である前記最適な動的リソースを満たす少なくとも1つのエグゼキュータポッド上で前記タスクを実行する手順
を実行させる、システム。 - 実行すべきタスクに関する要求を受信する前記手順は、アプリケーションオペレータが、前記Kubernetesコンピューティング環境のドライバポッド及びワーカノードと通信するようスケジューラに依頼するマスタサーバにタスクを送信するサブミッションランナを用いて前記タスクを生成する手順を有する、請求項8に記載のシステム。
- 前記サイドカーをディスパッチする手順は、前記ドライバポッド及び前記ワーカノードを使用して前記リソースデータを収集する手順を有する、請求項9に記載のシステム。
- 前記リソースデータは、エグゼキュータポッドボリューム、データボリューム、ノード情報、データ出力範囲、最大値サイズ、CPU使用量、ストレージ使用量、及びそれらの組み合わせから成る群から選択される、請求項8から10のいずれか一項に記載のシステム。
- 前記タスクを実行する手順は、前記タスクを実行し、結果を報告し、及び終了する手順を有する、請求項8から10のいずれか一項に記載のシステム。
- 前記有向非巡回グラフ(DAG)特徴アナライザは、耐障害性分散データセットを表す頂点、及び前記耐障害性分散データセットに適用されるオペレーションを表すエッジを有するグラフを含む、請求項8から10のいずれか一項に記載のシステム。
- 前記有向非巡回グラフ(DAG)特徴アナライザは、2つのステージを含み、ここで第1ステージは、前記少なくとも1つのエグゼキュータポッドからの前記リソースデータに基づいてエグゼキュータリソース割り当てを推奨し、及び第2ステージは、Kuberneteリソースの可観測性を獲得して、前記リソースデータに基づく前記推奨されたエグゼキュータリソース割り当てに応答してリソース自動スケーリングのバランスを取る、請求項13に記載のシステム。
- Kubernetesにおけるデータ局所性を制御するためのコンピュータプログラムであって、プロセッサに:
アプリケーションを実行するためのコントローラ及び少なくとも1つのエグゼキュータポッドを含むKubernetesコンピューティング環境を確立する手順;
前記Kubernetesコンピューティング環境で実行すべきタスクに関する要求を受信する手順;
サイドカーをディスパッチして、有向非巡回グラフ(DAG)特徴アナライザへの入力のために、前記少なくとも1つのエグゼキュータポッドからリソースデータを収集する手順;
非巡回グラフ(DAG)特徴アナライザにより、前記少なくとも1つのエグゼキュータポッドから、前記タスクの実行のために利用可能である最適な動的リソースを識別する手順;及び
前記Kubernetesコンピューティング環境において利用可能である前記最適な動的リソースを満たす少なくとも1つのエグゼキュータポッド上で前記タスクを実行する手順
を実行させるためのコンピュータプログラム。 - 実行すべきタスクに関する要求を受信する前記手順は、アプリケーションオペレータが、前記Kubernetesコンピューティング環境のドライバポッド及びワーカノードと通信するようスケジューラに依頼するマスタサーバにタスクを送信するサブミッションランナを用いて前記タスクを生成する手順を有する、請求項15に記載のコンピュータプログラム。
- 前記サイドカーをディスパッチする手順は、前記ドライバポッド及び前記ワーカノードを使用して前記リソースデータを収集させる手順を有する、請求項16に記載のコンピュータプログラム。
- 前記リソースデータは、エグゼキュータポッドボリューム、データボリューム、ノード情報、データ出力範囲、最大値サイズ、CPU使用量、ストレージ使用量、及びそれらの組み合わせから成る群から選択される、請求項15から17のいずれか一項に記載のコンピュータプログラム。
- 前記タスクを実行する手順は、前記タスクを実行し、結果を報告し、及び終了する手順を有する、請求項15から17のいずれか一項に記載のコンピュータプログラム。
- 前記有向非巡回グラフ(DAG)特徴アナライザは、耐障害性分散データセットを表す頂点、及び前記耐障害性分散データセットに適用されるオペレーションを表すエッジを有するグラフを含む、請求項15から17のいずれか一項に記載のコンピュータプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/572,122 US20230222004A1 (en) | 2022-01-10 | 2022-01-10 | Data locality for big data on kubernetes |
US17/572,122 | 2022-01-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023101462A true JP2023101462A (ja) | 2023-07-21 |
Family
ID=87053886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022204803A Pending JP2023101462A (ja) | 2022-01-10 | 2022-12-21 | コンピュータ実装方法、システム及びコンピュータプログラム(Kubernetesにおけるビッグデータに関するデータ局所性) |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230222004A1 (ja) |
JP (1) | JP2023101462A (ja) |
CN (1) | CN116414518A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11954525B1 (en) * | 2022-09-21 | 2024-04-09 | Zhejiang Lab | Method and apparatus of executing collaborative job for spark faced to multiple K8s clusters |
CN116627661B (zh) * | 2023-07-24 | 2023-11-03 | 杭州谐云科技有限公司 | 算力资源调度的方法和系统 |
-
2022
- 2022-01-10 US US17/572,122 patent/US20230222004A1/en active Pending
- 2022-12-21 JP JP2022204803A patent/JP2023101462A/ja active Pending
-
2023
- 2023-01-06 CN CN202310017087.2A patent/CN116414518A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN116414518A (zh) | 2023-07-11 |
US20230222004A1 (en) | 2023-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10489217B2 (en) | Determining storage tiers for placement of data sets during execution of tasks in a workflow | |
US9830678B2 (en) | Graphics processing unit resource sharing | |
US10083224B2 (en) | Providing global metadata in a cluster computing environment | |
US9823941B2 (en) | Optimized placement of virtual machines on physical hosts based on user configured placement policies | |
US10705869B2 (en) | Optimized migration of virtual objects across environments in a cloud computing environment | |
US9639390B2 (en) | Selecting a host for a virtual machine using a hardware multithreading parameter | |
US10078428B2 (en) | Placement of virtual machines on physical hosts based on collocation rules | |
JP2023101462A (ja) | コンピュータ実装方法、システム及びコンピュータプログラム(Kubernetesにおけるビッグデータに関するデータ局所性) | |
US20200278975A1 (en) | Searching data on a synchronization data stream | |
US11526404B2 (en) | Exploiting object tags to produce a work order across backup engines for a backup job | |
JP7429087B2 (ja) | 改善されたパフォーマンスのためのユーザ・プロファイルの動的かつ自動的な変更を実施するための方法、コンピュータ・システム及びプログラム | |
US11586480B2 (en) | Edge computing workload balancing | |
US11573823B2 (en) | Parallel execution of applications | |
US10643228B2 (en) | Standardizing customer and test data and information collection for run time and historical profiling environments and workload comparisons | |
US11487750B2 (en) | Dynamically optimizing flows in a distributed transaction processing environment | |
US11061743B2 (en) | Event loop optimization through event ordering | |
US20230266997A1 (en) | Distributed scheduling in container orchestration engines | |
US20240104418A1 (en) | Graphics processing unit training job allocation | |
KR20160147958A (ko) | 하드웨어 멀티스레딩 파라미터를 사용한 가상 머신을 위한 호스트의 선택 |