特表2016-526735(P2016-526735A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヴイエムウェア インコーポレイテッドの特許一覧

<>
  • 特表2016526735-仮想ハドゥープマネジャ 図000003
  • 特表2016526735-仮想ハドゥープマネジャ 図000004
  • 特表2016526735-仮想ハドゥープマネジャ 図000005
  • 特表2016526735-仮想ハドゥープマネジャ 図000006
  • 特表2016526735-仮想ハドゥープマネジャ 図000007
  • 特表2016526735-仮想ハドゥープマネジャ 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2016-526735(P2016-526735A)
(43)【公表日】2016年9月5日
(54)【発明の名称】仮想ハドゥープマネジャ
(51)【国際特許分類】
   G06F 9/50 20060101AFI20160808BHJP
   G06F 9/46 20060101ALI20160808BHJP
【FI】
   G06F9/46 462Z
   G06F9/46 350
【審査請求】有
【予備審査請求】未請求
【全頁数】23
(21)【出願番号】特願2016-524367(P2016-524367)
(86)(22)【出願日】2014年7月3日
(85)【翻訳文提出日】2015年12月25日
(86)【国際出願番号】US2014045377
(87)【国際公開番号】WO2015026446
(87)【国際公開日】20150226
(31)【優先権主張番号】61/869,521
(32)【優先日】2013年8月23日
(33)【優先権主張国】US
(31)【優先権主張番号】14/311,755
(32)【優先日】2014年6月23日
(33)【優先権主張国】US
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LT,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US
(71)【出願人】
【識別番号】510149482
【氏名又は名称】ヴイエムウェア インコーポレイテッド
【氏名又は名称原語表記】VMware,Inc.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ホラー、アン
(72)【発明者】
【氏名】ガマラジュ、ジャヤンス
(72)【発明者】
【氏名】ゴビル、キンシュク
(72)【発明者】
【氏名】コリー、ベンジャミン ジェイ.
(72)【発明者】
【氏名】ヒッケン、ジョージ
(57)【要約】
ハドゥープアプリケーションおよび仮想環境内で実行される他の作業負荷の高弾力性マルチテナントプラットホームを提供する分散計算アプリケーションについて説明する。ハドゥープなどの分散計算フレームワークの複数のインスタンスは同時に実行され得る。中央集中型マネジャは、メモリおよびCPUなどの計算資源の競合により、タスクが、所与のホスト上で実行するVM上でより遅く実行される時を検知し、かつ検知された資源競合に基づきクラスタを拡大または縮小する。
【特許請求の範囲】
【請求項1】
仮想計算環境内のマルチテナント分散計算アプリケーションを実行する方法であって、
仮想計算環境内で実行している複数の計算クラスタからクラスタ関連メトリックを受信することであって、各計算クラスタが作業負荷スケジューラと複数のワーカノードとを含むことと、
前記仮想計算環境の性能に関連付けられた資源関連メトリックを受信することであって、前記資源関連メトリックがメモリ関連メトリックおよびCPU関連メトリックのうちの少なくとも1つを含むことと、
前記受信したクラスタ関連メトリックおよび資源関連メトリックに基づいて、ホストの計算資源について前記複数の計算クラスタ間の資源競合の状態を判断すること、
前記資源競合の状態を判断することに応じて、前記ホスト上で少なくとも部分的に実行している前記複数の計算クラスタのうちの少なくとも1つを縮小すること、
資源競合が前記ホスト上に存在しないと判断することに応じて、前記ホスト上で少なくとも部分的に実行していて保留中作業を有する前記複数の計算クラスタのうちの少なくとも1つを拡大すること
を備える方法。
【請求項2】
前記資源競合は、前記ホスト上で実行している仮想マシンの未使用ゲストメモリの量を超える当該仮想マシンのメモリ再利用の量に基づいて判断される、請求項1に記載の方法。
【請求項3】
前記資源競合は、前記仮想計算環境内の仮想マシンが使用可能状態であったが、物理的CPU上で実行されるようにスケジュールできなかった時間のサイクルを示すCPUレディメトリックに基づいて、および前記仮想計算環境内の仮想マシンが当該仮想マシンに代わってシステムサービスを行うために中断された時間のサイクルを示すCPUオーバーラップメトリックに基づいて判断される、請求項1に記載の方法。
【請求項4】
初期期間内に電源が入れられたVMに関連付けられた前記資源関連メトリックの一部が前記資源競合の状態を判断することから無視される、請求項1に記載の方法。
【請求項5】
前記ホスト上で少なくとも部分的に実行している前記複数の計算クラスタのうちの少なくとも1つを縮小することはさらに、メモリ競合VMとCPU競合VMとの両方が前記ホスト上に存在すると判断することに応じて、前記メモリ競合VMを選択することを含む、請求項1に記載の方法。
【請求項6】
前記ホスト上で少なくとも部分的に実行している前記複数の計算クラスタのうちの少なくとも1つを縮小することはさらに、VM上で実行しているタスクトラッカーノードの委託を解除して、前記VMの電源を切ることを含み、
前記ホスト上で少なくとも部分的に実行していて保留中作業を有する前記複数の計算クラスタのうちの少なくとも1つを拡大することはさらに、前記ホスト上で実行しているVMの電源を入れて、前記VM上で実行するためにタスクトラッカーを再委託することを含む、請求項1に記載の方法。
【請求項7】
前記資源競合の状態は、前記受信したクラスタ関連メトリックおよび資源関連メトリックに基づき制御理論ベースアルゴリズムに従って判断される、請求項1に記載の方法。
【請求項8】
第2の組のクラスタ関連メトリックおよび資源関連メトリックを受信すること、
前記第2の組のクラスタ関連メトリックおよび資源関連メトリックに基づいて、および以前の動作サイクル中に受信したクラスタ関連メトリックおよび資源関連メトリックに基づいて、以後の動作サイクル中に資源競合の第2の状態を判断すること
をさらに備える請求項7に記載の方法。
【請求項9】
前記仮想計算環境の性能に関連付けられた前記受信した資源関連メトリックに基づいて1つまたは複数の移動平均を生成すること、
以後の動作サイクル中に受信した第2の組の資源関連メトリックを当該第2の組の資源関連メトリックが前記移動平均に比べて異常であると判断することに応じて無視すること
をさらに備える請求項1に記載の方法。
【請求項10】
プロセッサにより実行可能なコンピュータソフトウェアを格納した非一時的コンピュータ可読記憶媒体であって、
前記コンピュータソフトウェアは、仮想計算環境内のマルチテナント分散計算アプリケーションを実行するための方法を具現化するものであり、当該方法は、
仮想計算環境内で実行している複数の計算クラスタからクラスタ関連メトリックを受信することであって、各計算クラスタが作業負荷スケジューラと複数のワーカノードとを含むことと、
前記仮想計算環境の性能に関連付けられた資源関連メトリックを受信することであって、前記資源関連メトリックがメモリ関連メトリックおよびCPU関連メトリックのうちの少なくとも1つを含むことと、
前記受信したクラスタ関連メトリックおよび資源関連メトリックに基づいて、ホストの計算資源について前記複数の計算クラスタ間の資源競合の状態を判断すること、
前記資源競合の状態を判断することに応じて、前記ホスト上で少なくとも部分的に実行している前記複数の計算クラスタのうちの少なくとも1つを縮小すること、
資源競合が前記ホスト上に存在しないと判断することに応じて、前記ホスト上で少なくとも部分的に実行していて保留中作業を有する前記複数の計算クラスタのうちの少なくとも1つを拡大すること
を含む、非一時的コンピュータ可読記憶媒体。
【請求項11】
前記資源競合は、前記ホスト上で実行している仮想マシンの未使用ゲストメモリの量を超える当該仮想マシンのメモリ再利用の量に基づいて判断される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項12】
前記資源競合は、前記仮想計算環境内の仮想マシンが使用可能状態であったが、物理的CPU上で実行されるようにスケジュールできなかった時間のサイクルを示すCPUレディメトリックに基づいて、および前記仮想計算環境内の仮想マシンが当該仮想マシンに代わってシステムサービスを行うために中断された時間のサイクルを示すCPUオーバーラップメトリックに基づいて判断される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項13】
初期期間内に電源が入れられたVMに関連付けられた前記資源関連メトリックの一部が前記資源競合の状態を判断することから無視される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項14】
前記ホスト上で少なくとも部分的に実行している前記複数の計算クラスタのうちの少なくとも1つを縮小することはさらに、メモリ競合VMとCPU競合VMとの両方が前記ホスト上に存在すると判断することに応じて、前記メモリ競合VMを選択することを含む、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項15】
前記ホスト上で少なくとも部分的に実行している前記複数の計算クラスタのうちの少なくとも1つを縮小することはさらに、VM上で実行しているタスクトラッカーノードの委託を解除して、前記VMの電源を切ることを含み、
前記ホスト上で少なくとも部分的に実行していて保留中作業を有する前記複数の計算クラスタのうちの少なくとも1つを拡大することはさらに、前記ホスト上で実行しているVMの電源を入れて、前記VM上で実行するためにタスクトラッカーを再委託することを含む、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項16】
前記資源競合の状態は、前記受信したクラスタ関連メトリックおよび資源関連メトリックに基づき制御理論ベースアルゴリズムに従って判断される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記方法はさらに、
第2の組のクラスタ関連メトリックおよび資源関連メトリックを受信すること、
前記第2の組のクラスタ関連メトリックおよび資源関連メトリックに基づいて、および以前の動作サイクル中に受信したクラスタ関連メトリックおよび資源関連メトリックに基づいて、以後の動作サイクル中に資源競合の第2の状態を判断すること
を含む、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記方法はさらに、
前記仮想計算環境の性能に関連付けられた前記受信した資源関連メトリックに基づいて1つまたは複数の移動平均を生成すること、
以後の動作サイクル中に受信した第2の組の資源関連メトリックを当該第2の組の資源関連メトリックが前記移動平均に比べて異常であると判断することに応じて無視すること
を含む、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
仮想計算環境内の分散計算アプリケーションを実行するためのシステムであって、ホストコンピュータシステムが、
メモリデバイスと、
プロセッサであって、
仮想計算環境内で実行している複数の計算クラスタからのクラスタ関連メトリックを受信するステップであって、各計算クラスタが作業負荷スケジューラと複数のワーカノードとを含むステップと、
前記仮想計算環境の性能に関連付けられた資源関連メトリックを受信するステップであって、前記資源関連メトリックがメモリ関連メトリックおよびCPU関連メトリックのうちの少なくとも1つを含むステップと、
前記受信したクラスタ関連メトリックおよび資源関連メトリックに基づいて、ホストの計算資源について前記複数の計算クラスタ間の資源競合の状態を判断するステップと、
前記資源競合の状態を判断することに応じて、前記ホスト上で少なくとも部分的に実行している前記複数の計算クラスタのうちの少なくとも1つを縮小するステップと、
資源競合が前記ホスト上に存在しないと判断することに応じて、前記ホスト上で少なくとも部分的に実行していて保留中作業を有する前記複数の計算クラスタのうちの少なくとも1つを拡大するステップと
を行うようにプログラムされたプロセッサと
を備える、システム。
【請求項20】
前記資源競合の状態は、前記受信したクラスタ関連メトリックおよび資源関連メトリックに基づき制御理論ベースアルゴリズムに従って判断される、請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、仮想ハドゥープマネジャに関する。
【背景技術】
【0002】
ハドゥープ(Hadoop)または他のマップ削減関連フレームワークなどの分散計算プラットホームは、複数の計算デバイスにより実行される分散ソフトウェアコンポーネントのグループまたは「クラスタ」にわたって計算タスクを割り振るソフトウェアを含み、大きな作業負荷(例えば、データセット)が並列に、かつ単一ソフトウェアインスタンスまたは単一デバイスにより通常実行可能な速度より速く処理されることを可能にする。このような分散計算プラットホームは通常、大量(例えば、ペタバイト)のデータへアクセスするために多く(例えば、何千程度)の計算デバイス上で実行される入力/出力集約型分散ソフトウェアコンポーネントを支援し得る分散ファイルシステムを利用する。例えば、ハドゥープにより解析されるデータセットは、ハドゥープソフトウェアを実行する様々な計算デバイスがファイルの異なる部分を同時に処理することができるようにするハドゥープと共に通常使用されるハドゥープ分散ファイルシステム(HDFS)内に格納され得る。
【発明の概要】
【0003】
一態様は、仮想計算環境内のマルチテナント分散計算アプリケーションを実行する方法である。当該方法は、仮想計算環境内で実行している複数の計算クラスタからクラスタ関連メトリックを受信することであって、各計算クラスタが作業負荷スケジューラと複数のワーカノードとを含むことと、前記仮想計算環境の性能に関連付けられた資源関連メトリックを受信することであって、前記資源関連メトリックがメモリ関連メトリックおよびCPU関連メトリックのうちの少なくとも1つを含むことと、前記受信したクラスタ関連メトリックおよび資源関連メトリックに基づいて、ホストの計算資源について前記複数の計算クラスタ間の資源競合の状態を判断すること、前記資源競合の状態を判断することに応じて、前記ホスト上で少なくとも部分的に実行している前記複数の計算クラスタのうちの少なくとも1つを縮小すること、資源競合が前記ホスト上に存在しないと判断することに応じて、前記ホスト上で少なくとも部分的に実行していて保留中作業を有する前記複数の計算クラスタのうちの少なくとも1つを拡大することを備える。
【0004】
他の態様は、プロセッサにより実行可能なコンピュータソフトウェアを格納した非一時的コンピュータ可読記憶媒体である。前記コンピュータソフトウェアは、仮想計算環境内のマルチテナント分散計算アプリケーションを実行するための上述した方法を具現化するものである。
【0005】
更なる態様は、仮想計算環境内の分散計算アプリケーションを実行するためのシステムであって、ホストコンピュータシステムが、メモリデバイスと、プロセッサであって、仮想計算環境内で実行している複数の計算クラスタからのクラスタ関連メトリックを受信するステップであって、各計算クラスタが作業負荷スケジューラと複数のワーカノードとを含むステップと、前記仮想計算環境の性能に関連付けられた資源関連メトリックを受信するステップであって、前記資源関連メトリックがメモリ関連メトリックおよびCPU関連メトリックのうちの少なくとも1つを含むステップと、前記受信したクラスタ関連メトリックおよび資源関連メトリックに基づいて、ホストの計算資源について前記複数の計算クラスタ間の資源競合の状態を判断するステップと、前記資源競合の状態を判断することに応じて、前記ホスト上で少なくとも部分的に実行している前記複数の計算クラスタのうちの少なくとも1つを縮小するステップと、資源競合が前記ホスト上に存在しないと判断することに応じて、前記ホスト上で少なくとも部分的に実行していて保留中作業を有する前記複数の計算クラスタのうちの少なくとも1つを拡大するステップと、を行うようにプログラムされたプロセッサとを備えるものである。
【図面の簡単な説明】
【0006】
図1】本開示の1つまたは複数の実施形態が利用され得る仮想計算システムを示すブロック図である。
図2】本開示の一実施形態による、1つまたは複数の仮想マシンを支援するホストコンピュータを示すブロック図である。
図3】ハドゥープクラスタ内のノードの様々な実施形態を描写するブロック図である。
図4】本開示の一実施形態による、分散計算の複数の仮想クラスタとして動作するように構成された仮想ハドゥープマネジャを有する仮想計算システムを示すブロック図である。
図5】本開示の一実施形態による仮想ハドゥープマネジャ(VHM)をさらに詳細に描写するブロック図である。
図6】本開示の一実施形態による、仮想環境内のマルチテナント分散計算アプリケーションの弾力的スケーラビリティのための方法のステップを示す流れ図である。
【発明を実施するための形態】
【0007】
本明細書において開示される1つまたは複数の実施形態は、複数のデータフレームワーク(例えば、ハドゥープ(Hadoop)クラスタ)同士の共存および仮想環境内の他の作業負荷との共存を可能にする方法、システムおよびコンピュータプログラムを提供する。仮想ハドゥープマネジャ(VHM)は、資源競合を示すとして識別された1つまたは複数のメトリックに基づき仮想環境内に資源競合が存在するかどうかを判断し、クラスタを縮小または拡大するなどの1つまたは複数の是正措置を提案する。資源競合により仮想マシン(VM)上でのタスクの実行が遅くなる場合、そうすることで落伍者(straggler)と遅延タスクとを生じ得るため、そのVM上でタスクを実行しないことが望ましいことがあり得ることが判明した。このような資源競合を有しない他のホスト内のVMがこれらのタスクを実行した方がよいことがあり得る。外部スケジューラを再生成または変更するのではなく、仮想ハドゥープマネジャはハドゥープクラスタ内のホスト、VMおよびノードにより提供される「周囲」情報に反応するように構成される。
【0008】
図1は、本開示の1つまたは複数の実施形態が利用され得る計算システム100を示すブロック図である。図示のように、計算システム100は、ホスト108−1、108−2、108−3、108−4として識別されホスト108として集合的に参照されるホストコンピュータのホストグループ106を含む。各ホスト108は、同じホスト108上で同時に実行される複数の仮想マシン(VM)112内へハードウェアプラットホーム118のプロセッサ、メモリ、記憶およびネットワーク資源を抽出する仮想化層を提供するように構成される。VM112は、VM112によるホスト108のハードウェア資源の共有を可能にするソフトウェアインターフェース層(本明細書ではハイパーバイザ116と呼ぶ)上で実行される。本明細書で説明する実施形態において使用され得るハイパーバイザ116の一例は、ブイエムウェア社(VMware, Inc.)から市販されているブイエムウェアブイスフィア(VMware vSphere)ソリューションの一部として提供されるブイエムウェアESXi(VMware ESXi)ハイパーバイザである。
【0009】
一実施形態では、VM112は、CPUおよびメモリなどのハードウェアプラットホーム118の利用可能資源を論理的に分断する複数の資源プール(資源プール114−1、114−2、114−3として識別される)中に編成される。資源プール114は階層にグループ分けすることができ;資源プール114は資源を「子」資源プールと仮想マシンへ提供する。資源プール114は、システム管理者が、計算システム100の資源を編成し、VMおよび計算資源を一方の資源プールから他方のプールへ隔離し、資源に寄与する実際のホスト108から資源を抽出し、資源プール114に関連付けられたVM112の組を管理できるようにする。例えば、システム管理者は、VMの囲う資源プール114上の設定を変更することにより一組のVM112への資源の総割り振りを制御し得る。
【0010】
図示のように、ホスト108のVM112は、ウェブサービス、データベースサービス、データ処理サービスおよびディレクトリサービスを含む情報技術サービスを提供する多くの作業負荷(例えば、作業負荷122)を実行するために設けられ使用され得る。一実施形態では、1つまたは複数のVM112は、その作業負荷を、分散計算アプリケーションのノード128として動作する複数のVMにわたって弾力的に分散するように構成された分散計算アプリケーション124により生成され管理されるクラスタ134のVMノード128として動作するように構成される。分散計算アプリケーション124は、特定の作業負荷要求に基づき追加VMを取り込むまたはそのクラスタから未使用VMノード128を解放し、これにより計算システム100内のそのプロファイルを増大および縮小するように構成される。ホスト108上のノード128として実行するVM112は図2においてさらに詳しく示される。
【0011】
図2は、本開示の一実施形態による、1つまたは複数の仮想マシン112を支援するホストコンピュータ108を示すブロック図である。図示のように、各ホスト108のハードウェアプラットホーム118は、メモリ202、プロセッサ204、ローカル記憶装置206、ディスクインターフェース208およびネットワークインターフェース210などの従来の計算デバイスのコンポーネントを含み得る。プロセッサ204は、命令(例えば、本明細書で説明する1つまたは複数の動作を行う実行命令)を実行するように構成され、メモリ202内およびローカル記憶装置206内に格納され得る。メモリ202とローカル記憶装置206は、実行可能命令、暗号鍵、仮想ディスク、構成および他のデータなどの情報が格納および検索され得るようにするデバイスである。メモリ202は、例えば1つまたは複数のランダムアクセスメモリ(RAM)モジュールを含み得、ローカル記憶装置206は例えば1つまたは複数のハードディスク、フラッシュメモリモジュール、固体ディスクおよび光ディスクを含み得る。ディスクインターフェース208はホスト108が1つまたは複数のネットワークデータ記憶システムと通信できるようにし、ネットワークデータ記憶システムは例えばVMノードによりアクセスされる「仮想ディスク」を格納し得る。ディスクインターフェース208の例は、ホスト108を記憶領域ネットワーク(SAN)またはネットワークファイルシステムインターフェイス(ネットワーク記憶装置220として描写される)へ結合するホストバスアダプタ(HBA)である。ネットワークインターフェース210は、ホスト108がネットワーク110などの通信媒体を介し別のデバイスと通信できるようにする。ネットワークインターフェース210の例は、ネットワークインターフェースカード(NIC)とも呼ばれるネットワークアダプタである。いくつかの実施形態では、複数のNICがネットワークインターフェース210に含まれる。
【0012】
先に説明したように、仮想マシン(例えば、VM112−1〜112−N)は、仮想マシンによりホスト108のハードウェアプラットホーム118の資源の共有を可能にするハイパーバイザ116上で実行される。ハイパーバイザ116は、ホスト108のオペレーティングシステムの上でまたはホスト108のハードウェアコンポーネント上で直接実行され得る。ハイパーバイザ116は、各VM112−1〜112−Nがその対応する仮想ハードウェアプラットホーム(例えば、仮想ハードウェアプラットホーム214−1〜214−Nのうちの対応する1つ)を有するように、各VM112の「仮想」資源へハードウェアプラットホーム118の物理資源をマッピングするように構成されたデバイスドライバ層を提供する。このような仮想ハードウェアプラットホーム214はそれぞれ、例えばその対応するVM112の等価な従来のハードウェアアーキテクチャとして機能し得るエミュレートハードウェア(例えば、メモリ202A、プロセッサ204A、ローカル記憶装置206A、ネットワーク記憶208A、ネットワークインターフェース210Aなど)を提供する。仮想ハードウェアプラットホーム214−1〜214−Nは、ハイパーバイザ116と対応するVM112−1〜112−Nとの間の動作を協調させるために仮想システム支援を実施する仮想コンピュータモニタ(VMM)212−1〜212−Nの一部と考えられ得る。図2に描写する実施形態では、各VM112は、ゲストオペレーティングシステム(OS)216(例えば、マイクロソフトウインドウズ(Microsoft Windows)(登録商標)、リナックス(Linux)(登録商標))と、ゲストOS216上で実行される1つまたは複数のゲストアプリケーションとを含む。一実施形態では、各VM112は、分散計算アプリケーション124の分散ソフトウェアコンポーネントコード220(例えば、Java(登録商標)コード)の実行を支援するJava(登録商標)仮想マシン(JVM)などのランタイム環境218を含む。例えば、分散計算アプリケーション124がハドゥープアプリケーションであれば、VM112は、以下にさらに説明する作業負荷スケジューラ機能(時に「ジョブトラッカー(Job Tracker)」と呼ばれる)、「タスクトラッカー(Task Tracker)」機能、または「ネームノード(Name Node)」機能、「データノード」機能を実施することにより分散ソフトウェアコンポーネントコード220を実行するランタイム環境218(例えば、JVM)を有し得る。代替的に、各VM112は、ゲストOS216上で本来実行されるように構成された分散計算アプリケーション124の分散ソフトウェアコンポーネントコード220を含み得る。
【0013】
図1に描写するように、計算システム100は、ネットワーク110を介し複数のホスト108と通信し得る仮想化管理モジュール130を含む。一実施形態では、仮想化管理モジュール130は、計算システム100内に存在し得る中央サーバ中に存在して実行するか、またはそうでなければホスト108の1つにおいてVMとして実行されるコンピュータプログラムである。仮想化管理モジュールの一例はブイエムウェア社(VMware, Inc.)から入手可能なブイセンタ(vCenter)(登録商標)サーバ製品である。仮想化管理モジュール130は計算システム100の管理業務を行うように構成される。管理業務は、ホスト108を管理すること、各ホスト108内で実行されるVMを管理すること、VMを提供すること、VMをホストからホストへ移動すること、ホスト108間の負荷をバランスさせること、ホスト108とVM112の計算資源からなる資源プール114を生成すること、VMおよび物理資源を割り振るおよび割り振りを解除するために資源プール114を修正すること、および資源プール114の構成を修正することを含む。一実施形態では、仮想化管理モジュール130は、性能データを収集すると共に、ホスト108、VM112および資源プール114の可用性、状態、および性能に関係する性能メトリック(例えば、カウンタ値、統計値)を生成するためにホスト108と通信するように構成される。
【0014】
仮想化管理モジュール130は、ホストグループ106のホスト108全体にわたってVMをバランスさせることによりシステム100全体にわたる負荷をバランスさせる仮想環境スケジューラ機能を提供するように構成され得る。例えば、資源プール内のVMのうちの1つの上の資源利用が劇的に変化すれば、仮想化管理モジュール130は、ホスト全体にわたる仮想マシンの分布を最適化するために物理的ホスト間でVMを移動させる(すなわち移行させる)。さらに、すべてのVMの全体作業負荷が低下すれば、仮想化管理モジュール130は、物理的ホストのいくつかの電源を切り、残りの物理的ホスト全体にわたってVMを集約し得る。仮想環境スケジューラの一例は、ブイエムウェア社(VMware, Inc.)から入手可能なブイエムウェア(VMware)分散資源スケジューラ(DSR:Distributed Resource Scheduler)(登録商標)製品である。
【0015】
一実施形態では、仮想化管理モジュール130は、VM112および資源プール114に関連付けられた1つまたは複数の資源制御を調整するように構成される。資源制御は、構成、属性、およびどのようにハードウェア資源(例えば、メモリ202、CPU204、記憶装置、ネットワーク帯域幅)がVM112と資源プール114により割り振られ利用されるかを規定する他の設定である。一実施形態では、どのように資源(例えば、CPU、メモリ、記憶装置、ネットワーク)がVM112へ割り振られるかを管理するために、仮想化管理モジュール130は、1つまたは複数のVM112の「予約」、「制限」、「共有」のための資源制御と、1つまたは複数の資源プール114へ割り当てられた「予約」、「制限」、「共有」のための資源制御とを修正し、修正された資源制御に基づき上記仮想環境スケジューリング動作を行う。別の実施形態では、仮想化管理モジュール130は、システム100全体にわたって資源を管理するために特定のホスト108上で実行する1つまたは複数のVM112の電源を入れる、1つまたは複数のVM112の電源を切る、1つまたは複数のVM112のクローンを作る、1つまたは複数のVM112を配備する命令を発行し得る。一例では、計算VMは、いかなる資源競合も他の資源プール内の他のより重要なVM(例えば、マスターVM)により見られる前にこれらの計算VMにより最初に見られるように、より低い優先度を示す「低い」共有設定を有する資源プール114内に配置され得る。
【0016】
一実施形態では、分散計算アプリケーション124は、分散計算アプリケーションに関連付けられたVMノード128内で1つまたは複数の作業負荷を実行することにより作業負荷全体の実行を管理するように構成されたアプリケーション作業負荷スケジューラ126(例えば、VM112内で実行する)を含む。動作中、アプリケーション作業負荷スケジューラ126は、追加作業負荷を処理するための資源の状態と可用性とを判断するために、分散計算アプリケーションに割り振られたVMノード128に問い合わせを行い得る。例えば、アプリケーション作業負荷スケジューラ126は、VMが作動されているかどうかを判断するために、そして作動されていれば、分散計算アプリケーションにより行われる作業負荷の一部を実行するためにどれくらいの量のRAMが全体として各VMから割り振られ得るかを判断するために、分散計算アプリケーションに割り振られたVM112−3〜112−9に問い合わせを行い得る。
【0017】
本開示の実施形態は、計算システム100などの仮想環境上の弾力的分散計算を可能にするように構成された仮想ハドゥープマネジャ132を含む。VHM132は、システム100の計算資源に関連付けられた性能メトリックと計算クラスタに関連付けられた性能メトリックとに基づき計算クラスタを縮小または拡大するために仮想化管理モジュール130と(例えば、APIコールを介し)通信するように構成される。
【0018】
仮想ハドゥープマネジャ132は図1および図3ではホスト108のうちの1つの中で実行されるVM112上に存在し実行する別個のコンポーネントとして描写されるが、仮想ハドゥープマネジャ132は代替的に、仮想計算システム100(例えば、仮想化管理モジュール130が存在する同じ中央サーバなど)の計算デバイスのうちの任意の1つ内に存在し得ることが理解される。さらに、添付図面はすべてのホスト108の単一仮想ハドゥープマネジャを描写するが、本開示の実施形態は効果的にスケーリングされ得ることに注意すべきである。すなわち、計算システム100内のホストの数が増加すると、VHM132の分散クラスタが、独立した組のホストを管理するために使用され得る。加えて、ハドゥープフレームワークと共に使用するための仮想ハドゥープマネジャ132について詳細に説明したが、VHM132はデータフレームワークアグノスティック(data framework-agnostic)であるように構成される、すなわち、ハドゥープに限定されない他のフレームワークと共に使用され得ることに留意すべきである。例えば、VHM132は、Hベース(HBase)などの分散データベースフレームワークまたはイムパラ(Impala)などのメモリ内フレームワークと共に使用され得る。
【0019】
図3は、本開示の1つまたは複数の実施形態による、ハドゥープクラスタ内のノード(例えば、ノード128)の様々な実施形態を描写するブロック図である。計算データ分離のための様々な方法が描写される。一つの方法300では、各ノード302(すなわち、VM112上で実行する)はそのノード302上に記憶ノードと計算ノードの組み合せを含み得る。例えば、各ノード302は、その上で実行する1つのタスクトラッカーと1つのデータノードとを有し得る。いくつかのケースでは、VMライフサイクルはデータノードにより判断され、このような方法は限定された弾力性を有し得、ハドゥープマルチテナンシィ(multi-tenancy)に限定され得ることが判明した。
【0020】
方法310では、記憶ノード314は、計算ノード312と記憶ノード314が別個のVM上で実行し得るように計算ノード312から分離される。このような実施形態では、計算ノード312は弾力的計算ノードとして構成され得る。方法310では、共有作業負荷が使用可能にされ(すなわち、異なる作業負荷がハドゥープクラスタ内で実行し得る)、これにより計算システムの利用率を上げる。
【0021】
方法320では、計算システム100はテナント毎に別個の仮想クラスタを含み得る。図3に示すように、別個の計算テナント(compute tenant)322、324(「T1」、「T2」と標記される)が計算システム100内で実行し得る。このような実施形態は有利には、より強いVM級セキュリティと資源隔離を提供し、また複数のハドゥープ・ランタイムバージョンの配備を、またはハドゥープに加えておよびそれを含み様々な種類のフレームワークの配備を可能にする。例えば、テストバージョンである配備フレームワークの1つのクラスタは、ハドゥープの製品バージョンである配備フレームワークの別のクラスタと同じ計算システム内に配備され得る。計算システム100の一実施形態は、同じ記憶層(例えば、ハドゥープ分散ファイルシステム(HDFS)を共有する異なるテナントのための別個の計算クラスタを配備する。一実施形態によると、計算ノードは優先度および利用可能資源に従って委託または委託解除され得る。方法320を使用する例示的アーキテクチャが図4にさらに詳細に描写される。
【0022】
[マルチテナンシィを有する例示的な弾力的ハドゥープアプリケーション]
図4は、本開示の一実施形態による、分散計算の複数の仮想クラスタ134−1、134−2(クラスタ134と総称される)として動作するように構成された仮想ハドゥープマネジャ132を有する仮想計算システム400を示すブロック図である。仮想計算システム400は、ホスト108内の他の非ハドゥープ関連作業負荷を実行する他の非ハドゥープ関連VM(ホスト108−N上で実行するVM410により表される)を含み得ることを認識すべきである。分散計算アプリケーション124は単一エンティティとして描写されるが、仮想クラスタ134は、同じ分散計算アプリケーションの異なるバージョンのものであり得る、または異なる分散計算フレームワークを纏めたものであり得ることを認識すべきである。
【0023】
図3に示す実施形態では、分散計算アプリケーション124は、ハドゥープアプリケーションへ割り振られた一組の分散作業負荷ノード(例えば、VM112)を使用して大きな一組のデータを処理するように構成されたハドゥープアプリケーションである。ハドゥープアプリケーションの別のアーキテクチャ(ヤーン(YARN)など)が本明細書で説明する技術と共に利用され得ることを認識すべきであり、フロントエンドスケジューラまたは大型スケーラブルデータベースシステムを有するウェブアプリケーション(例えば、モンゴDB(MongoDB)、アパッチカサンドラ(Apache Cassandra))などの他の分散計算アプリケーションが本明細書で提供される技術に従って構成され利用され得る。
【0024】
各ハドゥープクラスタ134は、クライアントからジョブを受諾すると共にクラスタ134の一部である複数のスレーブノード上の実行のために対応する作業負荷をスケジューリングする少なくとも1つのジョブトラッカー402(例えば、図示しないVM上で実行する)を含む。各ハドゥープクラスタ134は、ジョブトラッカー402により提供される要求タスク(例えば、マップタスク(map task)、削減タスク(reduce task))を行うワーカノード(worker node)である複数のタスクトラッカー404(例えば、VM上で実行する)を含む。一実施形態では、各タスクトラッカー404は、1つまたは複数の利用可能「スロット」内で1つまたは複数のタスクを実行するように構成される。一例では、各スロットは、単一タスクを完了するための分散ソフトウェアコンポーネントコード(例えば、コード220)を実行するランタイム環境(例えば、Java(登録商標)仮想マシン)のインスタンスとして実装され得る。したがって、いくつかの実施形態では、各トラックトラッカー404は、ジョブトラッカー402によりタスクトラッカーへ割り当てられた複数のタスクを並列に実行するためにランタイム環境の複数のインスタンスを実行し得る。
【0025】
図4に示すように、第1のハドゥープクラスタ134−1は、第2のハドゥープクラスタ134−2の一組のジョブトラッカー402−2とタスクトラッカーノード404(異なる塗りつぶしパターンにより図示される)とは別であるがホスト108のハードウェア資源を共有する一組のジョブトラッカー402−1と複数の計算ノード(タスクトラッカー404)を有し得る。
【0026】
一実施形態では、ハドゥープクラスタ134−1、134−2は、少なくとも1つのネームノード406と複数のデータノード408とからなる単一データ層を共有し得る。各データノード408(例えば、VMとして実行する)は、ハドゥープクラスタにより使用されるデータの一部を、データノードが実行するホスト108に利用可能な記憶装置(ローカルデータ記憶装置(例えば、ローカル記憶装置206)および/またはネットワーク記憶装置220など)内に格納する。ネームノード406は、データの分散部分がハドゥープアプリケーションの分散データノード408間に位置する場所(例えば、ローカル記憶装置206またはネットワーク記憶装置220)を追跡する。
【0027】
図5は、本開示の一実施形態による仮想ハドゥープマネジャ(VHM)132をさらに詳細に描写するブロック図である。VHM132は、ハドゥープクラスタを弾力的にスケーリングするために仮想化管理モジュール130およびジョブトラッカー402と協調するように構成される。一実施形態では、VHM132は仮想化管理モジュール130と分散計算アプリケーション124により提供される周囲データに基づきクラスタ134を(例えば、ジョブトラッカー402を介し)拡大または縮小するように構成される。周囲データは、以下にさらに詳細に説明される資源関連メトリックおよびフレームワーク関連メトリックを含む。いくつかの実施形態では、VHM132は、VHM132が、行うべき仕事が存在すると判断し、仮想計算システム100内に資源の競合が存在しないと判断すると、クラスタ134を拡大する。いくつかの実施形態では、VHM132は、VHM132が、仮想計算システム100内に資源の競合が存在すると判断すると、クラスタ134を縮小する。本開示の実施形態は有利には、顧客の期待、試験の容易さ、および資源利用の改善のための予測スケーリングを提供する。
【0028】
VHM132は、スケーリング応答に対する入力として競合検出を使用する。以下にさらに詳細に説明されるように、資源の競合は、ユーザの資源制御設定(例えば、「予約」、「制限」、および「共有」設定)と作業負荷要求とを反映する。VHM132は、複数のVMにまたがる分散計算アプリケーションのための仮想化管理モジュール130により提供される仮想環境スケジューラ機能(すなわち、DRS)に対する拡張として機能し得る。VHM132は、仮想化管理モジュール130と、ジョブトラッカー402などのアプリケーションスケジューラとの間のグルー(glue)として機能する。VHM132は、資源を割り振る際にすべてのVMを軽度に(すなわち、一様に)不利にするよりもむしろいくつかのVMを重度に(すなわち、偏って)不利にするように構成され得る。VHM132は、ジョブ実行時間の増加を引き起す(すなわち、余りに遅い反応は落伍者またはタスクエラーを引き起こし、余りに速い反応は過渡現象に反応し得る)真の競合が存在する場合(すなわち、活発に使用されている特定の資源が奪われた場合)だけにタイムリーに反応するように構成され得る。VHM132は、クラスタのスケーリングに関する判断を誘導するために、ヒステリシスと一時的窓および閾値などの他の制御理論概念(以前の行為からフィードバックされる)とを適用し得る。
【0029】
動作中、VHM132は、仮想化管理モジュール130(例えば、ブイセンタ(vCenter))とハドゥープクラスタ134から情報502、504を定期的に(例えば20秒間隔で)収集する。図5に示すように、仮想化管理モジュール130からの情報504は、ハドゥープクラスタが実行される下位仮想インフラストラクチャの状態およびそれについての統計値を規定し得る。いくつかの実施形態では、情報504(資源関連メトリックとも呼ばれる)はVM構成とVM112についての資源制御設定(例えば、CPUおよびメモリ割り振り)とを含み得る。いくつかの実施形態では、情報504は、ホストレベルおよびゲストレベルメモリ、CPU、ネットワークおよび記憶性能メトリックなどの性能メトリックを含み得る。ハドゥープクラスタ134からの(例えば、ジョブトラッカー402により報告された)情報502は、分散計算アプリケーションクラスタ134のアプリケーションレベル状態およびそれについての統計値を規定し得る。いくつかの実施形態では、情報502(本明細書ではクラスタ、フレームワークまたはハドゥープ関連メトリックとも呼ばれる)は、保留中または現在行われているジョブまたはタスクの量、ジョブを行うためのスロットの可用性、エラーおよび他のジョブ状態情報、使用されるスロットに関連する統計値および性能メトリック、待ち行列に入れられた保留中作業の量、および他の統計値などの状態情報を含み得る。
【0030】
1つまたは複数の実施形態では、VHM132は、様々なメトリック(例えば、情報502、504から収集された)の移動平均または中央値を時間窓にわたり維持することにより資源消費における一時的スパイクなどの一時的データを除去するように構成される。VHM132は、移動平均および中央値に基づき異常であると判断された値を有するいかなる収集メトリックも無視するように構成され得る。
【0031】
一実施形態では、VHM132は、サイクル(本明細書では「動作サイクル」と呼ぶ)ベースで資源競合をチェックして1つまたは複数の行為を行うように構成される。例えば、VHM132は、動作サイク毎(例えば、300秒毎)に一回縮小および拡大判断を行う。VHM132は、過渡現象を除去する一方で、1つまたは複数のアルゴリズム510を使用して情報502、504を解析し、縮小および拡大のための事象を生成する。一実施形態では、アルゴリズム510は、縮小および拡大判断の影響が次の動作サイクル内のアルゴリズム中にフィードバックされる制御理論ベースアルゴリズムを含む。いくつかの実施形態では、VHM132は、歴史的メトリックだけでなく現在のメトリックにも基づき資源競合および縮小/拡大に関する判断を行う。VHM132により行われる判断(例えば、縮小、拡大)は様々なメトリック(例えば、CPU使用率、メモリ使用率、保留中ジョブの数など)を所定期間にわたって変化させ得ることが理解される。これらの変更されたメトリックは、次の動作サイクルのための新しい判断を行うためにアルゴリズム510中にフィードバックされ得る。
【0032】
VHM132は、事象を集約および配送するために事象待ち行列を使用し得る。事象待ち行列は、VHM132が手動動作モード(ユーザ(例えば、システム管理者)により手動で承認され配送されるまで事象が待ち行列に入れられる)に対処できるようにするだけでなく、事象を自動的に配送する自動動作モードに対処し、行動のために適切なクラスタを呼び出すことができるようにする。他のクラスタ構成412だけでなく手動/自動動作モードも配備ユーティリィティアプリケーション510(例えば、ブイエムウェア社(VMware, Inc.)から入手可能なプロジェクト・セレンゲティ(Project Serengeti)により規定され得る。
【0033】
VHM132により呼び出される行為は、仮想化管理モジュール130へ発行された(例えば、VMの電源をオン/オフする)命令により具現化される仮想化関連行為506と、ハドゥープクラスタ134へ発行された(例えば、計算ノードを委託解除または再委託する)命令により具現化されるハドゥープ行為508とを含む。
【0034】
一実施形態では、VHM132のアルゴリズム510は、クラスタ特有判断を行う1つまたは複数のクラスタスケールストラテジストを含み得る。すなわち、各ハドゥープクラスタ134は、生成された事象を解析すると共にその特定ハドゥープクラスタ134のすべてのホスト上の行動方針を判断するクラスタスケールストラテジストのインスタンスを有し得る。クラスタスケールストラテジストは、他の非関連クラスタがそのクラスタスケールストラテジストの観点から重要ではない「利己的」手法で判断を行い得る。VHM132は、クラスタが互いに踏みにじり合うのを回避するために、クラスタ要求を承認または拒絶するアービトレータモジュールを含み得る。
【0035】
図6は、本開示の一実施形態による、仮想環境内のマルチテナント分散計算アプリケーションの弾力的スケーラビリティのための方法600のステップを示す流れ図である。本方法が図1および図3のシステムに関連して説明されたとしても本方法のステップを行うように構成されるいかなるシステムも本開示の実施形態の範囲に入ることを認識すべきである。
【0036】
ステップ602において、VHM132は、仮想計算環境内で実行する複数の計算クラスタ134からクラスタ関連メトリック(例えば、情報502)を受信する。VHM132は、各計算クラスタ134のタスクトラッカー404から「ローカル」統計値を受信するだけでなく各計算クラスタ134のジョブトラッカー402から「グローバル」統計値も受信し得る。クラスタ関連メトリックの例としては、他のメトリックも使用され得るが以下のものを示す統計値が挙げられ得る:計算クラスタ内の活性計算ノードの数(「alive_nodes」)、計算クラスタ内のタスク失敗の数(「task_failures」)、待機マップ(waiting Map)タスクの数(「waiting_maps」)、待機削減(waiting Reduce)タスクの数(「waiting_reduces」)、特定のタスクトラッカー404内で使用されているマップスロットの数またはすべてのタスクトラッカーの総数(「map_slots_used」)、特定のタスクトラッカー404内のマップスロットの数またはすべてのタスクトラッカーの総数(「max_map_slots」)、特定のタスクトラッカー404内で使用されている削減スロット(Reduce slots)の数またはすべてのタスクトラッカーの総数(「reduce_slots_used」)、および特定のタスクトラッカー404内の削減スロットの最大数またはすべてのタスクトラッカーの総数(「max_reduce_slots」)。
【0037】
ステップ604では、VHM132は仮想計算環境の性能に関連付けられた資源関連メトリック(例えば、情報504)を受信する。VHM132は、ホスト108の下位物理的計算資源の性能を表す「ホストレベル」統計値を受信し得る。VHM132はまた、例えばJVM監視エージェントにより提供されるようなジョブトラッカー、タスクトラッカーなどのインスタンスを実行するランタイム環境218(すなわち、JVM)内だけでなく所与のVM112内の活動の統計値を提供する「ゲストレベル」統計値を受信し得る。資源関連メトリックは、メモリ202とCPU204の性能に関係するメモリ関連メトリックおよびCPU関連メトリックをそれぞれ含み得る。記憶装置およびネットワーク関連メトリックがまた使用され得る。
【0038】
資源関連メトリックの例としては、以下のものを示す統計値が挙げられ得る。
・特定のVM内で活発に使用されているマシンページ番号(MPN)の数に基づきハイパーバイザにより推定される活発に使用されるメモリの量を示す「活性メモリ」メトリック。
・特定のVMに対して許容されたMPNの数に基づき特定のVMに対して許容されたマシンメモリまたは「物理的」メモリの量を示す「許容メモリ」メトリック。
・VM(活性/非活性MPNを含む)により使用されているMPNの数(共有MPNを除く)に基づく特定のVMにより消費されるゲスト物理メモリの量を示す「消費メモリ」メトリック。
・バルーニングを介しVMから現在再要求されているゲスト物理メモリの量を示すバルーン目標サイズを含む「メモリバルーニング(Memory Ballooning)」メトリック。
・スワッピングに利用可能なメモリの量を示すVMスワップファイルの目標サイズを含む「ホストスワップ(Host Swap)」メトリック。
・仮想マシンが準備できていたが、物理的CPU上で実行されるようにスケジュールできなかった時間の百分率(または時間のサイクル)を示すCPUレディメトリック。
・活発に使用される仮想CPUの量を全利用可能CPUの百分率として示すCPU使用率メトリック。
・VMがその仮想マシンまたは他の仮想マシンに代わってシステムサービスを行うために中断された時間量を示すCPUオーバーラップメトリック。
・その他のメトリック。
【0039】
ステップ606では、VHM132は、資源競合の状態が仮想計算環境の計算資源の複数の計算クラスタ間に存在するかどうかを受信クラスタ関連メトリックおよび資源関連メトリックに基づき判断する。VHM132は資源競合をチェックし、1つまたは複数の行為をサイクルベース(例えば300秒の動作サイクル)で行い得る。VHM132はこの判断を行うために多種多様なアルゴリズム510を使用し得る。例えば、VHM132は、資源競合が存在すると示唆する要因と資源競合が存在しないと示唆する要因とを比較検討し得る、またはこれらの要因を利用することにより、確実度の閾値レベルに基づき判断を行い得る。一実施形態では、VHM132は、クラスタ関連メトリックと資源競合を示す資源関連メトリックとの識別された組合せを使用する。資源競合は、上記メトリックの集合バージョンを使用してホストベースだけでなくVMベースでも識別され得ることを認識すべきである。
【0040】
資源競合の状態を判断するために、VHM132は、「縮小関連」メトリックに基づく多くの要因を使用し得る。VHM132は、特定のホスト108の1つまたは複数のCPU204が特定の計算クラスタ134から奪われていることを、資源関連メトリックからのCPUレディメトリックを使用して判断し得る。上述のように、CPUレディは、仮想CPU204Aを実行する準備ができていたが物理的CPU204上にスケジュールされなかった時間量を示す。メモリ競合はメモリバルーニングから始まり次にホストスワッピングに至り得ることが判明した。したがって、VHM132はさらに、特定のホストのメモリ202が特定の計算クラスタから奪われていることを、資源関連メトリックからの活性メモリ、許容メモリ、メモリバルーニングおよびホストスワップメトリックを使用することにより判断し得る。例えばタスクが所与の時間制限内のハートビート(heartbeat)を介し折り返し報告するまたはチェックインするのに不十分な資源を有し得、これによりエラーを発生するため、タスクまたはジョブのエラーがメモリ競合シナリオで発生し得ることが判明した。したがって、VHM132は、計算クラスタ134内の1つまたは複数のタスクトラッカーノード404が無効または故障していると報告されることを、クラスタ関連メトリックからの生存ノード(Alive Node)およびタスク失敗(Task Failure)メトリックを使用することにより判断し得る。
【0041】
資源競合の状態が存在しないと判断するために、VHM132は、仮想計算システム内には資源競合が存在しないことを示唆し得る「拡大関連」メトリックに基づく多くの要因を使用し得る。VHM132は、ジョブが特定の計算機クラスタ内に存在することを、クラスタ関連メトリックからの待機マップおよび待機削減メトリックを使用することにより、判断し得る。VHM132は、特定の計算クラスタ内のスロット使用率が高いことを、クラスタ関連メトリックからの使用マップスロットメトリック(map_slots_used)、最大マップスロットメトリック(max_map_slots)、使用削減スロットメトリック(reduce_slots_used)および最大削減スロットメトリック(max_reduce_slots)を使用することにより判断し得る。VHM132は、特定のホスト内に切迫した競合が無いことを、CPUレディメトリックおよびメモリバルーニングメトリックを使用することにより判断し得る。メトリックが計算クラスタ134(すなわち、ハドゥープ)から利用可能でないいくつかのケースでは、VHM132は、資源関連メトリックからのCPU使用率および活性メモリ使用率メトリックを使用することにより非待機VM112を識別し得る。
【0042】
一実施形態では、VHM132はゲストVMからのメモリ再利用の量がゲストVM内の未使用メモリの量を超えれば資源競合を宣言し得る。ゲスト内の未使用メモリの量は許容メモリと活性メモリとの差(すなわち、[許容メモリ−活性メモリ])に基づき判断され得る。多くの場合、活性メモリはメモリ集中型環境内の許容メモリを追跡する(すなわちメモリ資源の競合が発生すれば)ことが判明した。いくつかのケースでは、活性メモリは許容メモリの一定の百分率として提示され得る。ゲストVMからのメモリ再利用の量は、所与のVMのバルーン目標とスワップ目標に基づき判断され得る。バルーン目標はメモリ共有およびバルーニングの量を示唆するまたはそれに変換し、スワップ目標はホスト内で発生するメモリ圧縮およびスワッピングの量を示唆するまたはそれに変換することが判明した。いくつかの実施形態では、VHM132は、メモリ競合が活性メモリ使用率に影響を与えることなく満足されれば行動を差し控え得る。すなわち、いくつかの実施形態では、VHM132は、活性メモリが競合を処理するために低減される必要があれば、行動し得る(例えば、クラスタを縮小する)。一実施形態では、VHM132は、上記「一次」メトリックほど重要でないと評価される消費メモリメトリックなどの「二次」メトリックを使用し得る。
【0043】
別の実施形態では、VHM132は、資源関連メトリックからのCPUレディおよびCPUオーバーラップメトリックに基づき資源競合を宣言し得る。CPUレディメトリックは所与のホストにより支援される他の仮想CPUに起因する同ホスト内の競合を測定し得、CPUオーバーラップメトリックは割り込みなどの他の要因に起因する競合を測定し得ることが判明した。「二次」メトリックとして、VHM132は、レディ(Ready)、オーバーラップ(Overlap)、電力管理およびハイパー・スレッディング(Hyper Threading)特徴に起因する「盗まれた」サイクルを捕捉するCPU要求メトリックを使用し得る。いくつかの実施形態では、VHM132はCPUレディメトリックに基づき過渡現象を処理するように構成され得る。例えば、小さなタスクを有するハドゥープジョブは、複数のJVMが頻繁に同時に開始されるため、短命なスパイクおよび過渡現象を引き起こし得る。いくつかの実施形態では、VHM132は、いつメモリ競合が調整CPUレディスパイクに至るかを検知するように構成され得る。
【0044】
いくつかの実施形態では、VHM132は、資源競合の判断に基づいてVMの電源が最近入れられたかどうかを考慮し得る。拡張事象中などの新しいVMの電源オンは資源競合を判断する際に問題を起こすことが判明した。例えば、新しいVMの電源オンは、「活性メモリ」を新しいVMのメモリ構成の75%まで設定されるようにし得、メモリ再利用は兄弟(sibling)資源プール114のVMにおいて場合によってはトリガされ得る。ブート時におよびハドゥープジョブが終了した時にVMを観測することにより、新たに電源オンされたVMが「零レベル」へ戻るのに数分(例えば、約10分)かかり得ることが判明した。いくつかのケースでは、許容メモリは、小さなメモリページがブート処理中に使用され得るため、電源が入れられたVMの活性メモリと共に増加しないことがあり得る。他の場合では、許容メモリは、大きなメモリページがブート処理中に使用されたため、電源オン後に直ちに増加し得る。したがって、いくつかの実施形態では、VHM132は、資源競合判断を行う際に、電源オン後の初期の期間の間、新たに電源がオンされたVMの性能メトリックを無視し得るまたは余り重視しなくてもよい。さらに、VHM132は、電源オンによりトリガされた再利用に起因する他のVM(例えば、兄弟VMまたは「ホットスペア」VM)への影響を無視し得る。初期の期間は予め定められてもよいし、動作サイクルの倍数(例えば、300秒の倍数)で規定されてもよい。
【0045】
いくつかの実施形態では、VHM132は、資源関連メトリックがそうでないと示唆したとしても、クラスタ特有メトリックに基づき、資源競合が存在しないと判断し得る。例えば、タスクトラッカーVM内に明示的なマップおよび削減スロット(例えば、タスクトラッカー当たり2つの固定マップスロットと2つの固定された削減スロット)を有するいくつかのハドゥープクラスタでは、異なるVMが、ノード内の削減スロットが使用されているかどうかに依存してマップ削減ジョブ中の異なる時間に、より忙しく見える。1つのVMは、削減タスクを実行するためのより多くの資源を必要とする可能性があり、他のVMはそれらのマップタスクを既に実行し終えた可能性がある。このシナリオは、上述のようにメモリバルーニングメトリックを使用することにより資源競合として出現し得る待機マップ実行(idle Map-executing)VM内にバルーニングを引き起こす可能性がある。しかし、これは真の資源競合でないことがあり得、むしろ資源の再割り振りであることが判明した。したがって、VHM132は、特定のホスト内に真の資源競合が存在しないと判断するために、特定のハドゥープフレームワークの理解と共に、使用マップスロットメトリック(map_slots_used)、最大マップスロットメトリック(max_map_slots)、使用削減スロットメトリック(reduce_slots_used)、および最大削減スロットメトリック(max_reduce_slots)などのクラスタ特有メトリックを使用し得る。
【0046】
ステップ608では、資源競合が特定のホスト上に存在すると判断することに応じて、VHM132は、そのホスト上で実行する複数の計算クラスタのうちの少なくとも1つを縮小する。VHM132は、計算クラスタのノード(例えば、タスクトラッカーノード)として実行するVM112のうちの1つ(資源競合(例えば、メモリ競合、CPU競合)を経験している)を選択し得る。いくつかの実施形態では、VHM132は、選択されたVMに関連付けられたタスクトラッカー404の委託を解除するハドゥープ命令を発行し得、これにより他のタスクトラッカー上のタスクをスケジューリングするジョブトラッカー402を生じ、選択されたVM上の新規タスクの受諾を中止する。いくつかの実施形態では、VHM132は、選択されたVMの電源を切るために仮想化管理モジュール130へ電源オフ命令を発行し得る。
【0047】
メモリおよびCPU集約型環境を観測することにより、メモリはCPU資源より反応がはるかに遅く(数秒対何秒〜何分程度)なり得ることが判明した。メモリへの圧力はしばしばバルーニングを誘起し、より高いCPU使用率を生じる可能性がある。メモリ競合は、CPU競合に比べて、タスクおよびジョブをより容易に失敗させる。メモリ競合VMの除去は他のVMの準備時間を直ちに低減する可能性があることが判明した。同様に、CPU競合VMを除去することにより、メモリ競合VMは回復するのにしばらく時間がかかり得る。したがって、縮小すべきVMを選択する際、VHM132は、CPU競合VMとメモリ競合VMとの両方が存在する場合、CPU競合VMよりメモリ競合VMへ高い優先度を与え得る。すなわち、メモリ競合VMとCPU競合VMとの両方がホスト上に存在すると判断することに応じて、VHM132は縮小事象のメモリ競合VMを選択する。
【0048】
ステップ610では、資源競合が前記ホスト上に存在しないと判断することに応じて、さらに計算クラスタの保留中作業が存在すると判断することに応じて、VHM132は、そのホスト上で実行する計算クラスタを拡大し得る。VHM132は、実行される1つまたは複数の保留中作業が存在することを示すクラスタ関連メトリックに基づき、保留中作業が存在するかどうかを判断し得る。VHM132は、未競合ホスト上に割り振られるが電源オフ状態のVMを選択し得る。いくつかの実施形態では、VHM132は、選択されたVMを電源オンおよびブートするために仮想化管理モジュール130へ電源オン命令を発行する。いくつかの実施形態では、VHM132は、選択されたVMに関連付けられたタスクトラッカー404の委託を解除するハドゥープ命令を発行し、これによりジョブトラッカー402はそのタスクトラッカー上でタスクをスケジューリングし始める。
【0049】
一実施形態では、VHM132は所与のサイクルでホスト毎に最大でも1つの判断(例えば、縮小、拡大)を生じる。上述のように、各ハドゥープクラスタ134に関連付けられたクラスタスケールストラテジストは「利己的」判断を行い、VHM132のアービトレータは他のクラスタからの入力に基づき各判断を承認または拒絶する。いくつかの実施形態では、縮小判断は破局的レベル競合ケースとは区別される。縮小判断は、最近の縮小が自身に有効になるための時間を許容するために「バックオフ」メカニズムとして、最近の縮小を考慮し得る。縮小判断の最近性は動作サイクルの倍数で規定され得る(例えば、最後の2動作サイクル内に発生する縮小判断)。VHM132は、資源競合の程度(すなわち、最大競合から最小競合まで)に基づきVM112をソートし、ソート済みのリストに基づき縮小判断を行い得る。一実施形態では、拡大判断はまた、最近の縮小または拡大を考慮し得る。
【0050】
一実施形態では、VHM132は、故障VMを繰り返し選択することを回避するために、拡大するためのVMの選択をランダム化し得る。別の実施形態では、VHM132は、ノードが正しく機能していることを保証するために計算ノードの健康を監視することにより「自己回復」クラスタを有効にする。計算ノードが故障していることをVHM132が判断すれば、VHM132は計算ノードを「グレーリスト」に載せ、故障計算ノードの電源を切り、その代わりの別の新鮮な計算ノードの電源を入れる。多くの場合、ブートアップ時のおよびネットワーク内の一時的問題が計算ノードの問題を引き起こすため、後の期間中に計算ノードは使用可能な状態となる。しかし、VMがこのような問題を繰り返し有するとVHM132が判断すれば、VHM132はこのような問題の記録を維持し、VMを選択することを長い期間回避し得る。
【0051】
本開示の1つまたは複数の実施形態が理解の明確さのために詳しく説明されたが、いくつかの変更形態および修正形態が本開示の範囲内でなされ得ることは明らかである。したがって、記載の実施形態は例示的であって限定的でないと考えるべきであり、特許請求の範囲は本明細書に記載された詳細に限定されず、請求項の範囲および均等物内で修正され得る。特許請求の範囲において、要素および/またはステップは特許請求の範囲に明示的に示されない限り動作の任意の特定の順序を意味しない。
【0052】
本明細書に記載の様々な実施形態は、コンピュータシステム内に格納されたデータに関わる様々なコンピュータ実施型操作を採用し得る。例えば、これらの操作は、物理量の物理的操作を必要とし得る。通常、必ずしもではないが、これらの量は電気的または磁気的信号の形式を取り得、これらまたはその表現は格納され、転送され、合成され、比較され、またはそうでなければ操作されることができる。さらに、このような操作は、生成、識別、判断、または比較などの用語でしばしば参照される。本開示の1つまたは複数の実施形態の一部をなす本明細書に記載の任意の操作は、有用なマシン操作であり得る。加えて、本開示の1つまたは複数の実施形態はまた、これらの操作を行うためのデバイスまたは装置に関する。上記装置は、特別に必要な目的のために特に構築され得る、またはコンピュータ内に格納されたコンピュータプログラムにより選択的に活性化または構成される汎用コンピュータデバイスであり得る。特に、様々な汎用マシンが、本明細書に記載の説明に従って書かれたコンピュータプログラムと共に使用され得る、または必要な操作を行うためにより専用化された装置を構築することがより好都合であり得る。
【0053】
本明細書に記載の様々な実施形態は、携帯型デバイス、マイクロプロセッサシステム、マイクロプロセサベースまたはプログラム可能民生電子機器、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成と共に実施され得る。本開示の1つまたは複数の実施形態は、1つまたは複数のコンピュータプログラム、または1つまたは複数のコンピュータ可読媒体内に具現化された1つまたは複数のコンピュータプログラムモジュールとして実施され得る。用語「コンピュータ可読媒体」は、その後コンピュータシステムに入力され得るデータを格納し得る任意のデータ記憶装置を指す。コンピュータ可読媒体は、コンピュータプログラムをコンピュータにより読まれることを可能にする方法で具現化する任意の既存技術または今後開発される技術に基づき得る。コンピュータ可読媒体の例としては、ハードディスクドライブ、ネットワーク付属記憶装置(NAS)、読み取り専用メモリ、ランダムアクセスメモリ(例えば、フラッシュメモリデバイス)、CD−ROM(コンパクトディスクROM)、CD−RまたはCD−RW、DVD、磁気テープ、他の光学的および非光学的データ記憶装置が挙げられる。コンピュータ可読媒体はまた、コンピュータ可読コードが分散された方法で格納され実行されるように、ネットワーク結合されたコンピュータシステム上に分散され得る。
【0054】
複数のインスタンスが、単一インスタンスとして本明細書に記載のコンポーネント、操作、または構造に対し設けられ得る。最後に、様々なコンポーネント、操作、データ記憶装置間の境界はある程度任意的であり、特定の操作が特定の例示的構成に関連して示された。機能の他の割り振りが想定され、本開示の範囲に入り得る。一般的に、例示的構成において別個のコンポーネントとして提示された構造と機能は組み合わせられた構造またはコンポーネントとして実現され得る。同様に、単一構成コンポーネントとして提示された構造と機能は別々のコンポーネントとして実現され得る。これらおよび他の変形形態、修正形態、追加形態、および改良形態は添付の特許請求の範囲に入り得る。
図1
図2
図3
図4
図5
図6
【国際調査報告】