【文献】
Jeffrey Dean, Sanjay Ghemawat,MAPREDUCE : SIMPLIFIED DATA PROCESSING ON LARGE CLUSTERS,Communications of the ACM,米国,ACM,2008年 1月,Vol.51, No.1,Pages:107-113
(58)【調査した分野】(Int.Cl.,DB名)
前記トリガ条件は、真と評価されると前記2つ以上のインスタンスグループのうちの前記1つに対し前記自動スケーリング動作の前記実行を引き起こす式を含み、前記式は、前記クラスタ上で前記分散アプリケーションの実行中に生成される1つまたは複数のメトリクスに依拠する、
請求項1に記載の方法。
前記トリガ条件は、真と評価されると前記2つ以上のインスタンスグループのうちの前記1つに対し前記自動スケーリング動作の前記実行を引き起こす式を含み、前記式は、曜日、日付、時刻、経過時間、または推定時間に依拠する、
請求項の1または2に記載の方法。
前記2つ以上のインスタンスグループのうちの別の1つにおけるコンピューティングリソースインスタンスの数を変更する前記2つ以上のインスタンスグループのうちの前記別の1つに対する第2自動スケーリング動作の実行をトリガするための第2トリガ条件であって、当該第2トリガ条件が満たされた場合に第2自動スケーリング動作の実行がトリガされるものである、前記第2トリガ条件を定義する別の自動スケーリングポリシーを、前記2つ以上のインスタンスグループのうちの前記別の1つに対応付ける入力を受信することと、
前記クラスタ上で前記分散アプリケーションの実行中に、前記第2トリガ条件が満たされたことを検出することと、
前記第2トリガ条件が満たされたことの検出に応じて、前記2つ以上のインスタンスグループのうちの前記別の1つに対し前記第2自動スケーリング動作の実行を開始することと
をさらに含む、請求項1から3のいずれかに記載の方法。
前記自動スケーリングポリシーはさらに、前記自動スケーリング動作による前記2つ以上のインスタンスグループのうちの前記1つの容量の変化量、または前記自動スケーリング動作による前記2つ以上のインスタンスグループのうちの前記1つの前記容量の変化率を定義する、
請求項1から5のいずれかに記載の方法。
前記2つ以上のインスタンスグループの各グループは、各自異なる種類のコンピューティングリソースインスタンス、または前記クラスタ上での前記分散アプリケーションの前記実行において各自異なる役割を有するコンピューティングリソースインスタンスを備える、
請求項1から6のいずれかに記載の方法。
前記クラスタの前記作成は、MapReduce分散コンピューティングフレームワークに従って、コンピュートノードのクラスタとして、前記2つ以上のインスタンスグループそれぞれに前記1つまたは複数のコンピューティングリソースインスタンスを含むコンピューティングリソースインスタンスの集合を構成することを含む、請求項1から8のいずれかに記載の方法。
コンピューティングリソースインスタンスの前記クラスタは、1つまたは複数の仮想化コンピューティングリソースインスタンスもしくは仮想化格納リソースインスタンスを備える、請求項1から9のうちのいずれかに記載の方法。
プログラム命令を記憶する非一時的コンピュータアクセス可能記憶媒体であって、前記プログラム命令は、1つまたは複数のコンピュータ上で実行されると、前記1つまたは複数のコンピュータに分散コンピューティングサービスを実施させ、
前記分散コンピューティングサービスは、
分散アプリケーションを実行するように構成される仮想化コンピューティングリソースインスタンスのクラスタであって、前記クラスタは、部分的にステートレスであり、かつ部分的にステートフルである、前記クラスタと、
1つまたは複数のクライアントが前記分散コンピューティングサービスと対話する手段であるインタフェースと、
自動スケーリング規則エンジンと
を備え、
前記分散コンピューティングサービスは、
前記インタフェースを通して前記分散コンピューティングサービスのクライアントから、真と評価されると自動スケーリング動作を実行するトリガ条件を表す式を定義する情報、前記式が真と評価されたことに応じて行われるべきスケーリング行動を指定する情報を含む自動スケーリングポリシーを定義する入力、並びに前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの部分集合を特定する入力を受信する
ように構成され、
前記自動スケーリング規則エンジンは、
前記分散アプリケーションの実行中に、前記実行中に生成された1つまたは複数のメトリクスに依拠して、前記式が真と評価されることを特定し、
前記特定に応じて、前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの前記部分集合に1つまたは複数のインスタンスを追加する動作、または前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの前記部分集合から1つまたは複数のインスタンスを削除する動作を含む前記自動スケーリング動作の実行を開始する
ように構成され、
前記削除する動作は、前記部分集合から、前記インスタンスのうちのどの1つまたは複数を削除するかを特定することと、
前記部分集合から、前記インスタンスのうちの前記特定した1つまたは複数を削除することと
を実行することを含み、
前記特定は、前記部分集合における前記インスタンスのうちの1つが、前記インスタンスが削除された場合に喪失するデータを格納していることを特定すること、前記部分集合における前記インスタンスのうちの1つの削除により、複製要件またはクォーラム要件は満たされなくなることを特定すること、または、前記部分集合における前記インスタンスのうちの1つにおいて現在実行されているタスクの進捗を特定すること、以上のうちの1つまたは複数に依拠する、
非一時的コンピュータアクセス可能記憶媒体。
前記式は、前記分散アプリケーションの前記実行中に生成された前記1つまたは複数のメトリクスのうちの1つの値、前記分散アプリケーションの前記実行中に生成された前記メトリクスのうちの1つに指定された最小または最大閾値、前記分散アプリケーションの前記実行中に生成された前記メトリクスのうちの1つの最小または最大閾値が破られた時間の長さ、曜日、日付、時刻、経過時間、推定時間、リソース使用メトリク、費用メトリク、前記分散アプリケーションのためのタスクを実行完了するための推定時間、または前記分散アプリケーションのために実行されるべき保留タスクの数、以上のうちの1つまたは複数に依拠する、請求項11に記載の非一時的コンピュータアクセス可能記憶媒体。
【発明を実施するための形態】
【0005】
本明細書において、実施形態は、いくつかの実施形態及び例示的図面の実施例を通して説明されるが、説明される実施形態または図面に実施形態は限定されないことを、当業者は認識するであろう。図面とその詳細説明には、実施形態を開示される特定の形態に限定する意図はなく、それとは反対に、添付の請求項により定義される趣旨及び範囲に入る全ての変更、均等物、及び代替案を包含する意図があることを理解されたい。本明細書において使用される見出しは、構成目的でのみ用いられ、説明または請求項を限定するために用いられることを意図しない。本出願を通して使用される英単語「may(
してもよい)」は、義務的な意味(すなわち「〜しなければならない」という意味)ではなく、許容的な意味(すなわち「〜する可能性がある」という意味)で使用される。同様に、英単語「include(含む)」、「including(含んでいる)」、及び「includes(含む)」は「含むが、その対象に限定されない」ことを意味する。
【0006】
クラスタベースの分散コンピューティングシステム(例えばApache(商標)Hadoop(登録商標)フレームワーク)におけるコンピューティングリソースインスタンスの自動スケーリングを実施する方法及び装置の様々な実施形態が、本明細書において説明される。いくつかの実施形態において、これらの技術は、クライアント(例えばサービスの顧客であるエンドユーザ、サービス加入者、または第三者サービスがサービスと対話する際用いるクライアントアプリケーション)からのクラスタ自動スケーリングを有効化する要求に応じて、分散コンピューティングサービスにより自動で(例えばプログラムにより)適用され得る。本明細書においてより詳しく説明されるように、クライアントは、クラスタに対するアプリケーションの実行中に監視対象となるメトリクスを定義し、自動スケーリングトリガ条件(例えば監視されるメトリクスに依拠する条件)を含む自動スケーリングポリシーを定義または選択し得る。いくつかの実施形態において、ポリシーは、条件が満たされた場合に行われるべきスケーリング行動を定義し、クラスタ(またはクラスタの部分集合)内の容量で増加または減少されるべき量を指定し、ポリシーが適用されるクラスタの部分を特定し得る。
【0007】
Hadoopフレームワークにおける作業負荷は、本来非常に急上昇し急降下する傾向にあり、多くの場合バッチ指向であり、ある時間内に多くのリソースを消費し、その後自身のリソース要求を縮小させ得る。さらに、分散コンピューティングシステム(例えばクラウドベースシステム)内のリソースは、必要な時にプロセスがリソースを取得し、その後これらを手放すという点において、多少代替可能である。本明細書において説明されるシステム及び方法は、これらのモデルの両方を採用するシステム内のコンピューティングリソースインスタンスを管理するために使用され得る。例えば、これらは、作業負荷に基づいて、プログラムによりクラスタを拡張または縮小するために使用され得る。いくつかの実施形態において、どの程度の容量を必要とするかわからないサービスプロバイダの顧客は、小さいクラスタ(例えば1つまたは2つのノードを有する1つのクラスタ)を作成し、本明細書において説明される自動スケーリングを有効化することにより、システムが実際の需要に基づいて拡張する時と拡張するかどうかを決定することを許可し得る(やみくもな推定に基づいて作成時にクラスタを正しいサイズに形成しようとするのではなく)。
【0008】
既存の自動スケーリング解決策は通常、均一のノード(例えば全てが同一のソフトウェアを実行しているノード)を有するシステムにおけるステートレス作業負荷のために設計される。例えば、これらは、データ損失が問題ではないウェブフロントエンドをスケーリングするのに使用され得る。しかしながら、MapReduceクラスタは、データを含むノードのいくつかのグループと、データを含まないノードの他のグループとを有し、部分的にステートレスであり、かつ部分的にステートフルであり得る。従って、既存の自動スケーリング手法は、データ(ステート)を損失することの影響が大きくあり得る当状況において好適ではあり得ない。いくつかの実施形態において、本明細書において説明される自動スケーリング技術は、スケーリングを行う時(例えばクラスタ容量を削減する時)にデータ損失及び/またはジョブ障害の可能性を考慮するように構成され得る。これらの技術は、ジョブの再スケジューリングを最小化し、データ損失の確率を低減させるために、使用され得る。いくつかの実施形態において、異なる種類のコンピュートエンジンが、コンピューティングリソースインスタンスのクラスタ上のコンテナサービス内で実行され、それぞれが、クラスタスケーリング中に考慮されるべき独自のビヘイビア及び特性を有する。例えば、一部のクラスタは、一種のエンジンであるMapReduceまたはHadoopフレームワークを実施し得る。他のクラスタは、ApacheからのSpark(商標)フレームワークに基づくエンジン、またはFacebook社からのPrestoSQLクエリエンジンを実行し得る。これらの例示的エンジンは、MapReduce手法を使用しないため、MapReduceクラスタと比較すると、異なるクラスタ内ステート取扱概念、異なるステートフルまたはステートレス定義方法、並びに異なるステート喪失ペナルティを有する。従って、これらの異なるエンジンの自動スケーリングポリシーは、MapReduceクラスタにおいて使用されるものと比較すると、異なるステート情報管理方法、異なるスケーリング開示、異なるジョブ進捗開示、及び/または基礎クラスタをスケーリングする時及びスケーリングするかどうかを決定するための異なる主要指標を有し得る。
【0009】
本明細書において説明されるシステムのいくつかの実施形態において、異なる自動スケーリングポリシーが、異なるクラスタに対し、及び/またはクラスタ内の異なるノードに対し(もしくはクラスタ内の異なるノードグループに対し)適用され、システムは、ノードが重要なステート情報を記憶する場合(例えばノードがデータを記憶しているため問題なく廃止することは不可能である場合)、あるいはクラスタに対し実行されている分散アプリケーションまたはエンジンのビヘイビアと一貫性がなくなる場合、動作中にノードを削除して容量を削減することを回避し得る。言い換えると、既存の自動スケーリング解決策とは異なり、本明細書において説明されるシステムは、スケーリング目的でクラスタ内の全てのノードを同じように処理するのではなく、ノードのうちの少なくとも一部の独特のビヘイビアに起因して、スケーリング動作にインテリジェンスを適用し得る。
【0010】
スケーリング判定を行う時に、既存の解決策の場合のように、マシン内の性能の標準指標を主に頼りにする(例えばCPUとメモリとI/Oの性能指標を頼りに、これらの急上昇のうちの1つの時に拡張する)のではなく、本明細書において説明されるシステムは、スケーリング判定を行う時に、アプリケーションプロバイダにより選ばれ、及び/またはアプリケーションの特定の活動をより深く調べるヒューリスティックを採用し得る(例えば保留のコンテナの数、完了したジョブのパーセント数、現クラスタを拡張せずに現クラスタ内でジョブは終了可能か否か等)。いくつかの実施形態において、本明細書において説明されるシステムは、より設定可能な(及び/または顧客主導の)自動スケーリングポリシーを採用し、また顧客により定義される非生産的な自動スケーリングポリシーを実行することを回避するいくつかの組込安全機能を実施し得る。
【0011】
前述のように、MapReduceフレームワーク内で実施される分散アプリケーションは、他の分散アプリケーションとは異なる自動スケーリング手法を求め得る。例えば、これらのアプリケーションの大半には、マスタノードの概念が存在し、クラスタ内にワーカノードのグループが存在する。マスタノードは、ワーカノード(例えばデータノード)とは非常に異なった働きをする。このようなアプリケーションでは、クラスタの自動スケーリングポリシーは、例えばマスタノードを削除することを抑制しなければならない。
【0012】
いくつかの実施形態において、MapReduceクラスタ(例えばHadoopクラスタ)は、分散ファイルシステム(例えばHadoop分散ファイルシステム、すなわちHDFS)を含み得る。クラスタのオペレータは、ファイルシステムの使用率が所定の閾値を超える場合に、クラスタに対し格納容量を追加することを所望し得る。本明細書において説明されるシステムにより、オペレータは、使用率が80%を超えた場合にシステムが自動で(例えばプログラムにより)オペレータの代わりに容量を追加するような自動スケーリングポリシーを、作成することが可能となり得る。反対に、頻繁にクラスタを立ち上げる顧客には、クラスタ(またはクラスタの特定ノード)が何もしておらず、その存在自体が忘れられているという問題がある。本明細書において説明されるシステムにより、顧客は、ある規則に基づいて容量を削減する(またはクラスタ全体を閉じる)自動スケーリングポリシーを定義することが可能となり得る。例えば、ある時間にわたってCPU使用率が全くなかったこと、またはある時間にわたってジョブの数がゼロであったことを監視プロセスが観察した場合、システムは、クラスタの容量を削減するスケーリング動作を引き起こす、またはクラスタを縮小させるもしくは終了させることを記憶すべきクラスタ動作なしにクラスタを閉じるように構成され得る(顧客定義の自動スケーリングポリシーを通して)。言い換えると、いくつかの実施形態において、自動スケーリング規則は、時間以外のデフォルトまたはカスタムのクラスタレベル、ノードレベル、またはアプリケーションレベルのメトリクスに加えて(またはその代わりに)、時間構成要素を含み得る。例えば、2時間を超える時間HDFS使用率が90%を超える場合にクラスタは拡張しなければならないこと、並びに1時間を超える時間クラスタが遊休状態である場合には縮小しなければならないことを、顧客は指定可能であり得る。いくつかの実施形態において、自動クラスタスケーリングは、サービスプロバイダの顧客が自身の費用を削減することを可能にし(例えば余剰容量を取り除くことにより)、顧客が自身の性能目標またはサービスレベル合意に合うように手伝う(例えば著しい需要がある場合には自動で容量を追加することにより)。いくつかの実施形態において、所定の時間にわたってデフォルトまたはカスタムのメトリクの特定閾値を超えた場合、全ての保留ジョブを完了するための推定時間が指定サービスレベル合意を超える場合、または他の自動スケーリング規則に従って、ある曜日(または日付)に、及び/またはある時刻に、クラスタが自動で拡張または縮小しなくてはならないことを指定する自動スケーリングポリシーを、顧客は定義可能であり得る。
【0013】
いくつかの実施形態において、顧客が自身の規則を指定し得るのではなく、システムが分散コンピューティングシステムまたはサービスプロバイダにより設定されたデフォルトの規則を適用し得る。例えば、いくつかのシステムは、デフォルトの時間数を超える時間HDFS使用率がデフォルト最大使用率閾値を超える場合に、システムが自動でクラスタに対しHDFS容量を追加することを指定するデフォルトの自動スケーリング規則を含み得る。いくつかの実施形態において、本明細書において説明される自動スケーリング技術は、顧客が常に自身のクラスタ内に適切な容量を確保できるように支援し得る。いくつかの実施形態において、自動スケーリング規則は、費用メトリクを含み得る。例えば、顧客が容量を拡張させたい期間、並びに増加容量に対し顧客が支払う意志のある最大費用を指定する自動スケーリングポリシーを顧客は定義し、そしてシステムは、指定最大費用を超えずにクラスタの容量を増加可能な場合にのみ、当期間中にクラスタの容量を増加させるように構成され得る(例えば所定の費用閾値未満である、追加リソースインスタンスのオンデマンドまたはスポット市場価格設定を活用することで)。別の実施例において、容量は特定使用率レベルに維持されるべきであること、または毎時費用を所定の最大費用未満に維持している間は可能な限り容量を増加させるべきであることを指定する自動スケーリングポリシーを、顧客は定義し得る。いくつかのこのような実施形態において、インスタンス価格設定は毎時1回評価され、各評価後に容量は追加または削除され得る。評価において、価格変化は、費用閾値を超えずに取得可能な容量に影響を及ぼす。いくつかの実施形態において、自動スケーリングポリシーは、他の種類の目標ベースまたは対象ベース規則を含み得る。いくつかの実施形態において、クラスタの障害に応じて、その後任となる新たなクラスタが起動され、新たなクラスタは、増える作業負荷に対応するために経時的に自動で拡張され得る。
【0014】
後により詳しく説明されるように、本明細書において説明されるシステムは、分散コンピューティングクラスタ(MapReduceクラスタ等)内の特定インスタンスグループを対象とする顧客定義の自動スケーリングポリシーの使用を支援し、これらポリシーは、ある種のトリガ(例えば時間、曜日、日付、または費用トリガ)と共に、自動スケーリング規則エンジンに対し発せられる、または自動スケーリング規則エンジンにより利用可能となったデフォルト及び/もしくはカスタム(ユーザ定義)のメトリクスの任意の組み合わせに依拠する自動スケーリング規則を含み得る。例えば、Hadoopフレームワークにより、Hadoop Yarn(ジョブごとの保留仕事量またはコンテナごとの保留ジョブ数への洞察を与えるメトリクスを発するHadoopフレームワークのジョブスケジューリング兼クラスタリソース管理コンポーネント)により、またはHDFS(利用可能容量及び残存容量等のメトリクスを発する)により発せられるデフォルトのメトリクスのうちのいずれかが、自動スケーリングトリガ条件を定義する自動スケーリングポリシー内の式において使用され得る(追加カスタムメトリクスの有無にかかわらず)。下記により詳しく説明されるように、いくつかの実施形態において、自動スケーリング技術は、クラスタ内の容量を削減する時に、どのノードが削除にふさわしいかを、ノードの種類、ロール、ビヘイビア、及び/またはノードが対応するように構成される作業負荷に基づいて、決定し得る。例えば、いくつかの実施形態において、1つまたは複数のインスタンスグループは、コアノード(例えば格納を有し、ジョブを実行するように設計されたノード)を含み、1つまたは複数の他のインスタンスグループは、タスクノード(例えばジョブを管理するためだけに設計されたノード)を含み得る。いくつかの実施形態において、MapReduceクラスタ内の様々なノードは、異なるデーモン集合を作動させ、各ノード上で作動するデーモン集合は、ノードが所属するインスタンスグループに基づいて決定され得る。いくつかの実施形態において、システムは、縮小を行う時にノードを終了させる順序を、異なる実施形態により、ノードがデータを格納しているか否かに基づいて、分散アプリケーションのためにノードが現在タスクを実行しているか否かに基づいて、または分散アプリケーションのために様々なノード上で実行されているタスクの相対的進捗に基づいて、決定し得る。
【0015】
前述のように、本明細書において説明される技術は、自動スケーリングを、ユーザの特有アプリケーション及びクラスタアーキテクチャと合わせてユーザがカスタマイズ可能なように提供し得る。例えば、Hadoopクラスタにおいて自動スケーリング判定を行うのに(例えば本明細書において時にコアノードと称される格納ノードを追加または削除する動作を引き起こすために)、HDFS使用率(格納使用メトリク)は役立つメトリクであり、これらHadoopクラスタには、ログのバッチ処理を行うように構成されるHadoopクラスタが含まれる(顧客が容量不足を望まない場合)。しかしながら、分析(主にメモリ限界)のためにPrestoSQLアプリケーションを採用するシステムにおいて、自動スケーリング判定を行うのに(すなわちクラスタ範囲メモリ容量を管理するために)使用されるより興味深いメトリクは、メモリ使用率であり得る(例えば「全メモリ利用可能」)。このようなシステムにおいて、ユーザは、クラスタのサイズ変更を引き起こす規則をきめ細かく制御することを所望し得る。
【0016】
図1は、本明細書において説明される、MapReduceクラスタの自動スケーリングを実施するサービスプロバイダシステムの一実施形態を例示するブロック図である。当実施例において、プロバイダネットワーク100は、可用性ゾーン140において(例えば特定領域または施設において)、MapReduceクラスタ120と、リソースプール130内の追加リソースとを含む。別の実施形態において、サービスプロバイダネットワーク(及びいくつかの事例ではサービスプロバイダネットワーク内で実施されるMapReduceクラスタ)は、多数のこのような可用性ゾーンにわたって分散され得る(図示せず)。当実施例において、MapReduceクラスタ120は、インスタンスグループ121A(少なくともインスタンス125A及び125Cを包含)、インスタンスグループ121B(少なくともインスタンス125D及び125Fを包含)、及びインスタンスグループ121C(少なくともインスタンス125G及び125Iを包含)を含む仮想化リソースインスタンスの多数のグループを備える。MapReduceクラスタ120はまた、1つまたは複数の監視コンポーネント124と、自動スケーリングポリシー情報126とを含む。当実施例において、リソースプール130は、予約インスタンスプール131A(少なくともインスタンス135A及び135Bを含む)と、オンデマンドインスタンスプール131B(少なくともインスタンス135D及び135Eを含む)と、スポットインスタンスプール131C(少なくともインスタンス135G及び135Hを含む)とを備える。いくつかの実施形態において、MapReduceクラスタ(MapReduceクラスタ120等)内のインスタンスグループのうちの1つの容量を増加させる場合、様々なリソースプール(リソースプール130等)から1つまたは複数の利用可能なインスタンスが、当インスタンスグループへ追加され得る。反対に、MapReduceクラスタ(MapReduceクラスタ120等)内のインスタンスグループのうちの1つの容量を減少させる場合、適用リソース管理ポリシー及び/またはサービス合意に従って、MapReduceクラスタ内の1つまたは複数のインスタンスが様々なリソースプール(リソースプール130等)へ返却され得る。
【0017】
図1に例示され、本明細書においてより詳しく説明されるように、いくつかの実施形態において、プロバイダネットワーク100は、監視サービス兼メトリクスアグリゲータ160(監視コンポーネント124からメトリクス情報を収集または受信し、その後これらのメトリクスのうちの少なくともいくつかを集約し得る)と、自動スケーリング規則エンジン165(収集された、受信された、及び/または集約されたメトリクスに依拠し、かつ自動スケーリングトリガ条件を示す式を、評価し得る)と、リソースマネジャ150と、リソース管理データベース170とを備え得る。いくつかの実施形態において、自動スケーリングトリガ条件が真と評価されたとの判断に応じて、自動スケーリング規則エンジン165は、自動スケーリングが行われるべきであることを示す通知をリソースマネジャ150へ送信し、これに応じてリソースマネジャ150は、作用対象インスタンスグループ(複数可)に対するリソース容量の追加または削除を開始し得る。
【0018】
いくつかの実施形態において、リソースマネジャ150はクライアントインタフェースを含み、これを通して1つまたは複数のクライアント110は、プロバイダネットワーク100と対話して、分散コンピューティングサービス(自動スケーリングサービスを含み得る)を受け得る。例えば、いくつかの実施形態において、クライアント110は(クライアントインタフェース155を通して)、MapReduceクラスタ120内のインスタンスグループのうちの1つまたは複数の特定インスタンスグループに対し適用される自動スケーリングポリシーを定義し得る。各ポリシーは、MapReduceクラスタ120に対し分散アプリケーションを実行する時に評価される式(例えば自動スケーリングトリガ条件)を定義し、式が真と評価された時に取るスケーリング行動を指定し(例えば容量の追加または削除)、容量を増加もしくは減少させる量または率を指定し、並びに/またはポリシーが適用されるクラスタ(及び/またはクラスタのインスタンスグループ(複数可))を特定し得る。いくつかの実施形態において、ユーザ定義ポリシー(及び/またはサービスにより対応される任意のデフォルトの自動スケーリングポリシー)を示す情報、並びにポリシーとMapReduceクラスタ120(または当クラスタの特定インスタンスグループ)との対応付けは、リソース管理データベース170に格納され得る。
【0019】
いくつかの実施形態において、リソース管理データベース170はまた、他の種類のリソース管理情報も格納し得る。例えば、リソース管理データベース170は、クライアント110の過去のタスク実行履歴、リソース使用率履歴、課金履歴、及びクライアントのタスクに使用可能であり得るリソースインスタンスの所定集合に関する全体リソース利用傾向を含み得るリソース利用状況データを格納し得る。いくつかの事例において、リソースマネジャ150は、リソースインスタンスの所定集合の過去のリソース利用状況データ及び傾向を使用して、将来のリソース利用状況の予測を展開し、そして実行計画を展開する際、または様々な自動スケーリング行動(例えばクライアント110により、またはクライアント110のために選択及び/または定義された自動スケーリングポリシーに基づいて自動スケーリング規則エンジン165により引き起こされている行動)を実行する方法及び/または時を特定する際に、これらの予測を使用し得る。
【0020】
ノードのクラスタの自動スケーリングを実行する方法の一実施形態が、
図2におけるフロー図により例示される。210に示されるように、当実施例において、方法は、サービスプロバイダまたはサービスが、1つまたは複数の自動スケーリングポリシーとノードのクラスタとを対応付ける入力を、クライアントから受信することを含み得る。当実施例において示されるように、それぞれのポリシーは、1つまたは複数のトリガ条件に依拠し、トリガ条件が満たされた場合/時に行われるべき特定の自動スケーリング行動を指定し得る(例えばクラスタ内、またはクラスタの中のインスタンスグループ内のノードの数を増やすまたは減らす)。本明細書においてより詳しく説明されるように、ノードのクラスタは2つ以上の種類のノードをそれぞれのインスタンスグループに含み、異なるインスタンスグループ内のノードに対し異なる自動スケーリングポリシーが適用され得ることに留意されたい。様々な実施形態において、自動スケーリングポリシーのうちの少なくともいくつかは、アプリケーション特有であり、及び/または特定種類の作業負荷への適用に特に好適であり得る。
【0021】
当実施例において示されるように、方法はまた、220のように、ノードのクラスタに対し分散アプリケーションの実行を開始することを含み得る。
図2に示されるように、方法は、230のように、アプリケーションの実行中に、トリガ条件(複数可)に関するメトリクスを収集及び/または集約することを含み得る。このようなメトリクス(そのうちのいくつかはアプリケーション特有、作業負荷特有、及び/または特定インスタンスグループ特有であり得る)の実施例が、本明細書において説明される。
【0022】
当実施例において示されるように、取得された及び/または集約されたメトリクスに基づいて自動スケーリングトリガ条件が検出される(または分散アプリケーションの実行が完了する)まで、またはそうでない限り、方法は、クラスタ内のノード数を全く変えることなく、ノードのクラスタに対し分散アプリケーションの実行を続けることを含み得る。これは
図2において、240からの否定的矢印、及び260から230への肯定的矢印のフィードバックにより、示される。しかしながら、240からの肯定的矢印で示されるように、取得された及び/または集約されたメトリクスに基づいて自動スケーリングトリガ条件が検出された場合に及びその際に、方法は、250のように、対応自動スケーリング行動を取ることを開始することを含み得る。例えば、クラスタ内(またはクラスタのインスタンスグループ内)のノードの数は、異なる実施形態において、対応自動スケーリングトリガ条件が満たされたことに応じて、増加または減少され得る。
【0023】
当実施例において示されるように、方法は、分散アプリケーションの実行が完了する(260の否定的矢印及び要素270で示される)まで、要素230〜250において示される動作のうちのいずれか、または全てを適宜繰り返すことを含み得る。
【0024】
一般に、本明細書において説明される分散コンピューティングシステムにおいて、1つまたは複数のコンピュートノードは、データ格納からデータ集合の部分へアクセスし、データを処理し、処理したデータをデータ格納へ出力し得る(必ずしもではないが、データ集合がアクセスされたのと同一のデータ格納であり得る)。分散コンピューティングシステムは、分散コンピューティングフレームワークに従って、実施され得る。このような分散コンピューティングシステムを実施するフレームワークの非限定的実施例として、Apache(商標)Hadoop(登録商標)オープンソースソフトウェアライブラリは、単純なプログラミングモデルを使用してコンピュートノードのクラスタにわたる大きなデータ集合の分散処理を可能にするフレームワークを提供する。当ライブラリは、MapReduceと呼ばれる分散処理アーキテクチャの実装を提供し、これはクラスタ上で並列分散アルゴリズムにより大きなデータ集合を処理するプログラミングモデルを含む。
【0025】
様々な実施形態において、MapReduceプログラムは、フィルタリング及び並べ替えを行うMap()プロシージャ(本明細書において時に「マッパプロセス」または「マッパ」と称される)と、要約動作を行うReduce()プロシージャ(本明細書において時に「リデューサプロセス」または「リデューサ」と称される)とを含み得る。例えば、当手法の下、並列アプリケーション(またはアプリケーションの並列計算またはタスク)は、処理用のコンピューティングノード(例えばホストまたはサーバ)の集合にマッピングされ得る。これらのコンピューティングノードにより行われる計算の結果は、その後、単一の出力データ集合にリデュースされ得る。マスタノードとして設計される1つのノードは、他のコンピューティングノード(例えば「ワーカノード」とも称され得るスレーブノード)によるタスクの分散を制御し得る。いくつかの実施形態において、サービスプロバイダは、仮想化リソースインスタンスの集りをMapReduceクラスタ内のコンピューティングノードとしてプロビジョニングし、MapReduceクラスタのコンピューティングノードは、オブジェクト格納サービスを介して仮想化格納リソースからデータを取得し、及び/または仮想化格納リソースへデータを書き込み得る。MapReduceクラスタは任意の数のコンピューティングノードで作成されるが、MapReduceクラスタのコンピューティングノードの全てがマッパまたはリデューサとして割り当てられる(または構成される)必要はないことに留意されたい。また、マッパプロセス(またはリデューサプロセス)とコンピューティングノードとの間に1対1のマッピングは(必ずしも)存在し得ないことに留意されたい。例えば、多数のマッパプロセスが、単一のコンピューティングノード上で実行され得る。
【0026】
MapReduceは、分散コンピューティング環境において、高性能コンピューティング(HPC)アプリケーションまたはその大量及び/または複雑な計算(例えば航空宇宙もしくは機械工学のための計算流体力学シミュレーション、または分子流体力学シミュレーション)を実行するために採用され得る並列プログラミング技術である。いくつかの実施形態において、本明細書において説明されるシステムは、クライアント(例えばクライアントアプリケーション、エンドユーザ、サービス加入者、またはサービスの顧客である第三者サービス)のためにMapReduceクラスタ上でプログラムが実行され得るフレームワークを提供し得る。
【0027】
分散システムにおけるクラスタ(例えばMapReduceクラスタ)の自動スケーリングを実施する方法及びシステムの様々な実施形態が、本明細書において説明される。
図3は、様々な実施形態による、本明細書に説明される自動スケーリング技術が実施され得る例示的システム環境を示す。例示的システム環境は、分散計算システム300を実施し得る。分散計算システム300は、1つまたは複数のマスタノード310と、ワーカノード320A〜320N等の複数のワーカノード320とを含み得る。マスタノード310(複数可)は、ワーカノード320により実行される計算を調整する1つまたは複数のコーディネータプロセスを表し得る。ワーカノードはまた、本明細書において「ワーカホスト」「ワーカ」、または「ホスト」と称され得る。分散計算システム300は、1つまたは複数のネットワークまたは相互接続を使用して、様々なコンポーネントを接続し得る。分散計算システム300の構成要素は、同じコンピューティングハードウェア上にホスティングされる仮想コンピュートインスタンスから、同じデータセンタ内にホスティングされる異なる物理コンピュートインスタンスまでが、地理的に遠隔となるように、相互に任意の好適な場所に配置され得る。いくつかの実施形態において、マスタノード310(複数可)及びワーカノード320は、ワーカノードがマスタノード(複数可)の指示の下で同時に類似タスクを実行するMapReduceアーキテクチャを実施し得る。しかしながら、分散計算システム300は、MapReduceの代わりに、またはMapReduceに加えて、他の種類の分散計算アーキテクチャを実施し得ると考えられる。
【0028】
分散計算システム300を使用して、入力データ360の集合はワーカノード320により処理され、出力データ370の集合が生成され得る。入力データ360は、入力パーティション360A、360B〜360N等、複数のパーティションに分割され得る。入力データ360のパーティションのうちの1つまたは複数は、それぞれのワーカノード320に割り当てられ得る。入力データ360は、任意の好適な基準に基づいてパーティションに分割され得る。例えば、パーティションの境界は、個々のレコード、個々のデータライン等の間の境界に基づき得る。個別パーティションは、単一のワーカノードにより一緒に処理されるように意図される関連アイテムまたはアイテムのファミリ等、入力データの要素を含み得る。3つのパーティション360A、360B、及び360Nは例示目的で示されるが、入力データの任意の好適な数のパーティションが分散計算システム300を使用して処理され得ると考えられる。
図3に示される個別パーティションの個別ワーカノードへの割り当ては、実施例及び例示の目的で示され、個別パーティションの個別ワーカノードへの任意の好適な割り当てが、分散計算システム300と共に使用され得ると考えられる。
【0029】
いくつかの実施形態において、マスタノード310(複数可)は、例えば入力データのパーティショニングの態様、及び/または個別パーティションの個別ワーカノードへの割り当ての態様を行うことにより、入力データ360の個別パーティション(複数可)を個別ワーカノードへ提供し得る。一実施形態において、マスタノード310(複数可)は、パーティション割り当てを示すデータを個別ワーカノードへ送り、各ワーカノードは、任意の好適な技術を使用して、入力データの自分の1つまたは複数のパーティションを取得し得る。例を挙げると、ワーカノードは、例えばネットワークを介して、ワーカノードによりアクセス可能な1つまたは複数の格納デバイス内の1つまたは複数のファイルまたは格納場所から、入力データの一部を読み出し得る。あるいは、マスタノード310(複数可)は、ネットワークを使用して、関連パーティション(複数可)を個別ワーカノードへ直接送り得る。様々な実施形態において、特定のワーカノードを使用して処理予定の入力データのパーティション(複数可)は、パーティション(複数可)の処理が開始される前に、部分的または全体的に特定のワーカノードにおけるメモリにロードされ得る。
【0030】
それぞれのワーカノード320は、入力データ360の1つまたは複数のパーティションに基づいて、出力データ370の1つまたは複数のパーティションを生成する任意の好適な処理タスクを実行し得る。一実施形態において、ワーカノード320を使用して実施される処理タスクは、例えばプログラムコードをワーカノードに送ることにより、または1つまたは複数の格納場所からプログラムコードをロードするようにワーカノードに指示することにより、マスタノード310(複数可)により提供され得る。ワーカノード320により実行される処理タスクの少なくとも一部は、同時に、すなわちお互いに並列して行われ得る。いくつかの実施形態において、それぞれのワーカノード320は、入力データの自分のパーティション(複数可)を処理するために、類似タスクを実行し、及び/または類似アルゴリズムを実施し得る。入力データ360の処理の結果として、それぞれのワーカノード320は、出力データ370の1つまたは複数のパーティションを生成し得る。2つの出力パーティション370A及び370Nは例示目的で示されるが、任意の好適な数の出力パーティションが分散計算システム300を使用して生成され得ると考えられる。それらがワーカノード320により生成されると、出力パーティション370A〜370Nは、ワーカノードによりアクセス可能な1つまたは複数の格納デバイス上の1つまたは複数の格納場所に格納され得る。出力パーティション370A〜370Nは、最終出力データとも称され得る。一実施形態において、出力パーティション370A〜370Nはさらに、マスタノード(複数可)により、例えば個別パーティションを単一出力ファイルに集約または連結することで、処理され得る。
【0031】
それぞれのワーカノード320により実行される計算は、第1段階及び第2段階等の多数の計算段階を含み得る。第1段階は、ワーカノード320Aにより行われるマップ段階330A、及びワーカノード320Nにより行われるマップ段階330N等のマップ段階(マッパプロセスが行われる)であり得る。第2段階は、ワーカノード320Aにより行われるリデュース段階340A、及びワーカノード320Nにより行われるリデュース段階340N等のリデュース段階(リデューサプロセスが行われる)であり得る。一実施形態において、マップ段階は、入力データ360に基づいて中間出力を生成する任意の計算(複数可)を含み得る。一実施形態において、中間出力は、パーティション化され得るが並び替えられる必要はない。本明細書において使用されるように、用語「partitioned(パーティション化)」は、データの関連要素がパーティションに一緒にグループ化されることを示す。通常、特定パーティション内のデータの要素は、同じホストを使用して処理されるように意図される。一実施形態において、リデュース段階は、中間出力に基づいて最終出力370を生成する任意の計算(複数可)を含み得る。例えば、リデュース段階は、マップ段階により生成されるデータの要素を集約し得る。
【0032】
図3に例示されるように、いくつかの実施形態において、分散計算システム300は、ノードのクラスタの(例えばMapReduceクラスタの)自動スケーリングを実施する際採用される監視サービスを含み得る。例えば、様々な実施形態において、それぞれのマスタノード310及び/またはワーカノード320は、監視コンポーネントを含み得る、または同じシステム内の別個の監視コンポーネント(監視コンポーネント350等)と対話し得る。別の実施形態において、監視コンポーネントは、サービスプロバイダネットワーク上の別のシステムにおいて実施され(例えば分散計算システム300のコンピュートノード及び/または格納ノードのビヘイビアを特徴付ける関連メトリクスを収集及び/または分析するサービスにおいて)、そして容量の追加もしくは削減を行う場合と時を決定するように構成され得る。いくつかの実施形態において、監視コンポーネント350は、このようなメトリクスを収及び分析し得る、またはメトリクスを収集して、それらを分析のために別個の自動スケーリング規則エンジンへ渡し、その後、自動スケーリング規則エンジンが、自動スケーリング行動を実行する必要があるか否か、及び必要がある時を決定し得る(図示せず)。いくつかの実施形態において、自動スケーリング規則エンジンは、分散計算システム300の制御プレーンにおいて、または別のサービス(例えばシステム内の格納サービス及び/またはハードウェア仮想化サービス)の制御プレーンにおいて実施され得る。さらに別の実施形態において、自動スケーリング規則エンジンは、サービスプロバイダによる別個の自動スケーリングサービス内で実施され、本明細書において説明される格納サービス及び/またはハードウェア仮想化サービスは、自動スケーリングサービスのクライアントであり得る。
【0033】
分散計算システム300は、図示されない追加コンポーネント、図示よりも少ないコンポーネント、または図示されるコンポーネントの異なる組み合わせ、構成、もしくは数量を含み得ると考えられる。2つのワーカノード320A及び320Nは例示目的で示されるが、任意の好適な数のワーカノードが分散計算システム300と合わせて使用され得ると考えられる。1つのマスタノード310は例示目的で示されるが、任意の好適な数のマスタノード310が分散計算システム300と合わせて使用され得ると考えられる。様々な実施形態において、ワーカノード320のうちのいずれか、及び/またはマスタノード310(複数可)は、仮想コンピュートインスタンスとして、または物理コンピュートインスタンスとして実施され得る。分散計算システム300は、1つまたは複数のコンピューティングデバイスを含み、そのうちのいずれかは、
図17に示される例示的コンピュータシステムと同様のコンピューティングデバイスにより実施され得る。様々な実施形態において、分散計算システム300の異なるコンポーネントの機能は、同じコンピューティングデバイスにより、または異なるコンピューティングデバイスにより提供され得る。様々なコンポーネントのうちのいずれかが異なるコンピューティングデバイスを使用して実施される場合には、それぞれのコンピューティングデバイスは、例えば1つまたは複数のネットワークを介して、通信可能に接続され得る。分散計算システム300の各コンポーネントは、後述されるそれぞれの機能を実行するのに使用可能なソフトウェア及びハードウェアの任意の組み合わせを表し得る。
【0034】
いくつかの実施形態において、分散計算システム300は、ネットワークアクセス可能リソースの配分を管理し得る。インターネット及び/または他のネットワークを介してアクセス可能な1つまたは複数のサービス(様々な種類のクラウドベースコンピューティングまたは格納等)を分散されたクライアント集合に提供するために、企業または公的機関等の事業体により構築されたネットワークは、プロバイダネットワークと称され得る。プロバイダネットワークは、プロバイダにより提供されるインフラストラクチャ及びサービスを実施及び配給するのに使用される物理及び/または仮想化コンピュータサーバ、格納デバイス、ネットワーク機器等の集りといった様々なリソースプールをホスティングする多数のデータセンタを含み得る。リソースは、いくつかの実施形態において、仮想または物理コンピュートインスタンスもしくは格納インスタンス等、「インスタンス」と呼ばれる単位で、クライアントに提供され得る。仮想コンピュートインスタンスは、例えば、指定計算能力(CPUの種類と数、メインメモリサイズ等を指示することで指定され得る)を有する1つまたは複数のサーバと、指定ソフトウェアスタック(例えばハイパーバイザの上部で同様に作動し得る特定バージョンのオペレーティングシステム)とを備え得る。異なる実施形態において、プロバイダネットワークのリソースを実施するために、汎用または専用コンピュータサーバ、格納デバイス、ネットワークデバイス等を含む多数の異なる種類のコンピューティングデバイスが、単一で、または組み合わせて使用され得る。
【0035】
いくつかの実施形態において、プロバイダネットワークのオペレータは、自身のクライアントために、リソース予約、制御、及びアクセスインタフェースの順応性のある集合を実施し得る。例えば、プロバイダネットワークは、クライアントがリソースインスタンスを知り、選択し、購入し、アクセスし、及び/または予約することを可能にするプログラムリソース予約インタフェース(例えばウェブサイトまたはウェブページの集合を介する)を実施し得る。一実施形態において、分散計算システム300を実施するクライアントアクセス可能サービスを使用して、クライアントのためにリソースが予約され得る。このような一実施形態によれば、このような環境における分散計算システム300は、入力データの集合、またはタスク(複数可)により使用予定の入力データのソースの指示と共に、クライアントのために実行予定の1つまたは複数のタスクの指定を受信し得る。これに応じて、分散計算システム300は、プロバイダネットワークの選択リソースプールのうちの1つまたは複数のリソースを使用してタスク(複数可)を実施する実行プランを決定し得る。一実施形態において、リソースプールは、様々なタスクの予想計算需要に基づいて、自動的に選択され得る。一実施形態において、リソースプールは、クライアントにより提出される具体的リソース要求または予約に基づいて、選択され得る。分散計算システム300は、選択リソースを使用したタスク(複数可)の実行をスケジュールし得る。
【0036】
いくつかの実施形態において、クライアントは、1つまたは複数の好適なインタフェース(1つまたは複数のウェブページ、アプリケーションプログラミングインタフェース(API)、またはコマンドラインインタフェース等)を使用して、実施予定のタスク(複数可)、入力データ集合、使用予定のコンピューティングリソース、及び/またはタスク(複数可)が開始されるべき時間を指定し得る。一実施形態において、クライアントは、インタフェース(複数可)を使用してタスク(複数可)の現行実行状況を見ることが可能であり得る。一実施形態において、プログラム出力、エラーログ、例外ログ等、実行されたタスクに関する追加情報が、インタフェース(複数可)を介して入手可能であり得る。
【0037】
分散コンピューティングシステムにおいて(MapReduceクラスタ上で)MapReduce型データ処理アプリケーションを実行する方法の一実施形態が、
図4においてフロー図で示される。いくつかの実施形態において、本明細書において説明される自動スケーリング技術は、MapReduce型データ処理アプリケーションの実行中に適用され得ること(図示せず)に留意されたい。400に示されるように、当実施例において、方法は、クライアントがMapReduce型データ処理アプリケーションを展開することを含み得る。異なる実施形態において、このようなアプリケーションは、様々なプログラミング言語のうちのいずれかを使用して展開され得ることに留意されたい。方法は、410のように、クライアントが、MapReduce型アプリケーション及びアプリケーションの対象データを、サービスプロバイダにおけるオブジェクト格納システムへアップロードすることを含み得る。例えば、異なる実施形態において、サービスプロバイダへの専用ネットワーク接続を確立することにより、または既に実行されているクラスタに直接データを書き込むことにより、サービスのインポート機能または他の入力インタフェースを使用して、サービスプロバイダの1つまたは複数の物理格納デバイスへ、データはアップロードされ得る。
【0038】
当実施例において示されるように、方法は、420のように、クライアントが、分散コンピューティングサービスを介して、MapReduceクラスタ等の分散コンピューティングシステム(DCS)を構成する(またはその構成を要求する)ことを含み得る。例えば、クライアントは、サービスクライアントのためにMapReduce型アプリケーションを集合的に実行するように、コンピューティングノード(ホスト)のクラスタを構成し得る(またはその構成を要求し得る)。当ノード(ホスト)はそれぞれ、1つまたは複数のCPUコアを含む。いくつかの実施形態において、クライアントは、GUI、コマンドラインインタフェース、スクリプト、API、または別のインタフェース機構を通して、クラスタ及び/またはクラスタ上で実行予定のジョブの様々なパラメータを指定可能であり得る(例えばクラスタ内でプロビジョニングする仮想化リソースインスタンスの数、使用するインスタンスの種類、インストールするアプリケーション、及び/またはアプリケーション及びその対象データの場所)。
【0039】
図4における430にて示されるように、方法は、クライアントが、追加ソフトウェアをインストールするために、及び/またはDCS(例えばMapReduceクラスタ)の1つまたは複数のデフォルト構成設定を変更するために、1つまたは複数のブートストラップ行動を採用することを含み得る。ブートストラップ行動は、クラスタが立ち上げられた時に(例えばMapReduceアプリケーションが開始する前、並びにノードがデータを処理し始める前)、それぞれのクラスタノード上で実行されるスクリプトである。様々な実施形態において、クライアントは、カスタムブートストラップ行動を呼び出し得る、またはサービスプロバイダにより提供される事前定義のブートストラップ行動を呼び出し得る。方法はまた、440のように、クライアントが、DCS(例えばMapReduceクラスタ)を立ち上げてMapReduceアプリケーションの実行を開始することと、そして(アプリケーションが実行されると、またはアプリケーションの実行が一旦終了すると)、450のように、クライアントが、オブジェクト格納システムからMapReduceアプリケーションの出力を読み出すこととを含み得る。
【0040】
いくつかの実施形態において、MapReduceアプリケーションの処理が完了すると(図示せず)、サービスプロバイダは、DCS(例えばMapReduceクラスタ)を自動で終了させ得ることに留意されたい。別の実施形態において、DCS(例えばMapReduceクラスタ)は、MapReduceアプリケーションの処理が完了した後も作動し続け、クライアントはDCS/クラスタにさらに多くの仕事を投入可能であり得る。いくつかの実施形態において、クライアントは、サービスプロバイダにより(例えばGUI、コマンドラインインタフェース、スクリプト、API、または別のインタフェース機構を通して)公開されるDCS(例えばMapReduceクラスタ)の正常性、及び/またはMapReduceアプリケーションの様々な監視ツールもしくはユーティリティの進捗を、監視可能であり得ることにも留意されたい。いくつかの実施形態において、クライアントは、より多くの、またはより少ないデータを処理するために、いつでもDCS/クラスタに容量を追加する、またはDCS/クラスタから容量を取り除くことが可能であり得る。サービスプロバイダはまた、いくつかの実施形態において、1つまたは複数のデバッグユーティリティも公開し得る(例えばGUI、コマンドラインインタフェース、スクリプト、API、または別のインタフェース機構を通して)。
【0041】
MapReduceジョブを実行するように構成されるワーカノードの一実施形態が、
図5におけるブロック図により例示される。いくつかの実施形態において、本明細書において説明される自動スケーリング技術は、多数のワーカノードによるMapReduce型データ処理アプリケーションの実行中に適用され得ること(図示せず)に再び留意されたい。当実施例において示されるように、ワーカノード(ワーカノード520等)は、1つまたは複数の入力パーティション560を、入力として使用して、出力パーティション(すなわち最終出力データ)570を生成し得る。ワーカノード520は、
図3に例示されるワーカノード320A〜320Nに関して前述されたのと同じように実施され得る。入力パーティション560(複数可)の処理は、ワーカノード520を使用して実行されるマップ段階530及びリデュース段階540を含み得る。
【0042】
当実施例において示されるように、マップ段階530は、マップ計算531を含み得る。マップ計算531は、入力パーティション560(複数可)の要素を入力として使用するプログラム命令の実行を含み得る。マップ計算531内で使用されるプログラムコードは、マスタノード(
図1に例示されるマスタノード110のうちの1つ等)により指定され得る。マップ計算531は、中間出力データ532を生成し得る。中間出力データ532は、データの関連要素が同じワーカノード520上で一緒にグループ化されるように、パーティション化され得る。中間出力データ532のパーティション化は、中間出力データ532がデータの関連要素(例えばアイテム及び/またはアイテムのファミリのデータ)を含むことを示し得る。中間出力データ532のパーティション化は、中間出力データ532内のデータの要素がリデュース段階540において一緒に処理され得る、すなわち単一のワーカノードを使用して、多数のワーカノードへの再パーティション化及び分散なしに、リデュース段階において処理され得ることを示し得る。
【0043】
いくつかの実施形態において、並び替え動作535が、マップ段階530とリデュース段階540との間に行われ得る。並び替え動作535は、中間出力データ532内のデータの要素を並び替えて、並び替え済み中間出力データ536を生成し得る。中間出力データ532は、リデュース段階540で求められるデータのキー(複数可)またはフィールド(複数可)等、任意の好適なデータのキー(複数可)またはフィールド(複数可)に基づいて、並び替えられ得る。
【0044】
当実施例において示されるように、リデュース段階540は、リデュース計算541を含み得る。リデュース計算541は、中間出力データ532または並び替え済み中間出力データ536の要素を入力として使用するプログラム命令の実行を含み得る。リデュース計算541内で使用されるプログラムコードは、マスタノード(
図3に例示されるマスタノード310のうちの1つ等)により指定され得る。リデュース計算541は、最終出力データ570を生成し得る。いくつかの実施形態において、リデュース計算541は、中間出力データ532または並び替え済み中間出力データ536の集約を実行し得る。別の実施形態において、並び替え動作は、リデュース段階540の一部として、ワーカノード520により実行され得ることに留意されたい。いくつかの実施形態において、マップ段階530とリデュース段階540は、同じワーカノード520上で実行される計算を用いて行われ、中間データ532または536は、別のワーカノードに提供され得ない。
【0045】
本明細書においてより詳しく説明されるように、サービス顧客または加入者は、様々なトリガソースからの様々なトリガの種類(メトリクス)に基づく式に依拠する自動スケーリングポリシーを定義することが可能であり得る。例えば、自動スケーリングポリシーの一部として評価される(例えば自動スケーリング規則エンジンにより評価される)式において使用されるいくつかのメトリクスは、サービスプロバイダネットワーク上の別個の監視サービスにより収集され得る(例えばクラスタ、リソースインスタンス、またはアプリケーションから発せられる内部アクセス対象メトリクスを収集する監視サービス)。他のトリガソースは、カスタムアプリケーション(例えば1つまたは複数のカスタムメトリクスを発するように装備されたカスタムアプリケーション)、またはサービスプロバイダネットワーク内の別のサービスを含み得る。本明細書において説明されるように、トリガデータは、性能またはビヘイビアメトリクス、格納メトリクス(例えば格納消費量、残存容量)、クロン式(例えば時間情報、時計/カレンダー型のトリガ情報)、保留中または現在実行中のジョブのステートまたは数を示すメトリクス、価格設定情報、費用情報、もしくはMapReduceクラスタに特有であり得るまたはあり得ない他のメトリクスを含み得る。
【0046】
いくつかの実施形態において、デフォルトのメトリクス集合は、デフォルトで利用可能とされ、顧客は、1つまたは複数の他のメトリクスを定義することにより、自動スケーリング判定を行う際使用可能なメトリクス集合を、増加可能である(または増加不可能である)。いくつかの実施形態において、サービスプロバイダは、顧客が関心を持ちそうな種類のメトリクスを特定したことに応じて、及び/またはある種類の自動スケーリング判定とよく相関する他のメトリクスを特定したことに応じて、デフォルトのメトリクス集合を増加させ得る。例えば、デフォルト及び/またはカスタムメトリクスのいくつかの組み合わせは、これらのデフォルトまたはカスタムメトリクス単独よりも、より良い自動スケーリング判定トリガを作り得ることが特定され得る。いくつかの実施形態において、本明細書において説明されるシステムは、顧客アプリケーションが自分自身のメトリクスを定義し、報告し、かつ自分自身の自動スケーリングポリシーを定義し、適用することを可能にするフレームワークを提供し得る。自動スケーリング判定を行う際使用する顧客により定義(または選択)され得るいくつかの例示的メトリクスには、クラスタ内で利用可能な全体メモリ(例えばメモリ高集中型アプリケーションを作動している場合)、またはローカルHDFSディスク容量(例えば長時間作動しており、自身のディスクが一杯になると障害を起こしやすいクラスタにおける当容量)が含まれ得る。一般に、顧客は、自身のアプリケーション及び/または作業負荷により頻繁に使用されるリソースの使用率及び/またはビヘイビアへの洞察を与えるメトリクスを、自動スケーリング判定を行う際使用するために、定義または選択し得る。いくつかの実施形態において、顧客は(自身のアプリケーション内で)自分自身のカウンタ(例えばアプリケーション特有メトリクスを反映する)を設定可能であり、自動スケーリング判定を行う際、これらのカウンタの値を使用可能であり得る。
【0047】
いくつかの実施形態において、本明細書において説明されるシステムは、クラスタ自動スケーリングポリシーを作成し施行する際、既存の監視サービスを採用し得る。例えば、分散コンピューティングシステム(例えばHadoopフレームワークまたはMapReduceクラスタを実施するもの)は、このような既存のシステムと統合され、これによりメトリクス情報を収集するその既存プロセス及び/またはそのクライアントインタフェースを活用する(これらは、本明細書に説明されるように、自動スケーリング規則及び/またはポリシーを定義する際使用するために修正され得る)。いくつかのこのような実施形態において、分散コンピューティング環境において作成されたクラスタは、デフォルトで既存の監視サービスに対しメトリクスを発し、サービスプロバイダは、どのメトリクスが監視システムへ発せられるかを制御し得る。例えば、一実施形態において、MapReduceクラスタを実施する分散コンピューティングシステムは、既存の監視サービスに対し23個のクラスタレベルメトリクスと、よく使われるいくつかのアプリケーションまたはエンジンごとに別の30〜40個のアプリケーション特有メトリクスとを提供し得る(デフォルトで)。一実施例において、PrestoSQLアプリケーションを実施するシステムにおいて自動スケーリングを処理するために、メモリ使用率に関連する1つまたは複数のメトリクスが、監視システムへ発せられ得る。顧客は、様々な実施形態において、監視システムにより収集されるあらゆる全てのメトリクス及び/もしくはカスタムメトリクスを使用するポリシー、または他のトリガソースから取得されるポリシーを定義することが可能であり得る。一般に、本明細書において説明されるシステム及び技術は、ユーザに自身のクラスタの自動スケーリングをカスタマイズする能力を与え、多数の異なるアプリケーションのクラスタ自動スケーリングを容易にし得る。
【0048】
本明細書において説明されるように、MapReduceクラスタは、様々な実施形態において、以下のうちの1つまたは複数によりトリガされた時に、自動で拡張または縮小するように構成され得る。
‐ 指定時間にわたって指定閾値を上回る/下回る、監視サービスにより取り込まれるメトリク。例えば、少なくとも60分間、クラスタ内のマッパの数が2個未満である場合に、自動スケーリング行動(例えば容量を削減する行動)が引き起こされ得る。
‐ 指定時間にわたって指定閾値を上回る/下回るクラスタメトリク(例えばクラスタにより発行されるが、監視サービスにおいて利用可能ではないクラスタメトリク)。例えば、少なくとも120分間、格納対仮想化コンピューティングサービスのスループットが100以上である場合に、自動スケーリング行動(例えば容量を追加する行動)が引き起こされ得る。
‐ クラスタ上の全ての進行中及び保留中のジョブを完了するための推定時間。例えば、全てのジョブの推定完了時間が120分以上である場合に、自動スケーリング行動(例えば容量を追加する行動)が引き起こされ得る。
‐ 曜日(もしくは日付)及び/または時間。例えば、毎土曜日の17時に、自動スケーリング行動(例えば容量を追加もしくは削減する行動)が引き起こされ得る。
【0049】
本明細書において説明されるように、自動クラスタスケーリングは、1つまたは複数の自動スケーリングポリシーにより統制され得る。いくつかの実施形態において、本明細書において説明される自動スケーリング技術を活用するために、顧客は、デフォルトの自動スケーリングポリシー(本明細書において説明されるもののうちのいずれか等)を頼りにし得る、または自分自身の自動スケーリングポリシーを書き、それらをサービスプロバイダネットワークへ(例えばその格納サービスへ)アップロードし得る。いくつかの実施形態において、自動スケーリングポリシーは1つまたは複数の規則を含み、各規則は以下の要素の一部または全てを含み得る。
‐ 評価される1つまたは複数の式。顧客は、自動スケーリングトリガ条件を表す1つの式を定義し得る、または2つ以上の式を組み合わせて、論理演算子ANDもしくはORを使用する自動スケーリングトリガ条件を作成し得る。例えば、以下が自動スケーリングポリシーにおいて定義された有効な式であり得る。
・“numberOfMappers < 2 for at least 60 minutes”(“マッパの数 < 少なくとも60分間2個”)
・OR(“numberOfMappers < 2 for at least 60 minutes”、“numberOfMappers < 5 for at least 120 minutes”)(OR(“マッパの数 < 少なくとも60分間2個”、“マッパの数 < 少なくとも120分間5個”))
‐ 式が真の場合に取る行動。例えば、行動は以下のうちの1つであり得る。
・“add”(“追加”)(すなわちクラスタに、またはクラスタの特定のインスタンスグループに、容量を追加する)。
・“remove”(“削除”)(すなわちクラスタから、またはクラスタの特定のインスタンスグループから、容量を削除する)。
・“terminate‐cluster”(“クラスタを終了”)(すなわちクラスタ全体を終了する)。クラスタを終了する行動の場合、下記に挙げられる残りのパラメータのうちのいずれも指定する必要はあり得ないことに留意されたい。
‐ クラスタ(またはクラスタの特定インスタンスグループ)に対し追加する、またはクラスタ(またはクラスタの特定インスタンスグループ)から削除する容量の量または率(例えばリソースインスタンスの数または率)。例えば、ポリシーは、リソース容量における変化を、以下のうちの1つで指定し得る。
・“5”(例えば5個のリソースインスタンスが追加または削除されなければならない)。
・“20%”(例えば変更は現在のリソースインスタンスの20%を示さなければならない)。
‐ 行動が実行されるべきインスタンスグループ(複数可)。様々な実施形態において、ポリシーは、1つの指定インスタンスグループに関してのみ、多数の指定インスタンスグループにおいて、または特定種類の全てのインスタンスグループ(例えば全てのコアインスタンスグループもしくは全てのタスクインスタンスグループ)において、行動が取られるべきであることを示し得る。例えば、ポリシーは、インスタンスグループを以下のうちの1つで指定し得る。
・“abc‐123”(すなわち1つのインスタンスグループの識別子)。
・“abc‐123”、“xyz‐978”(すなわち2つのインスタンスグループの識別子)。
・“core”(“コア”)(例えば格納ノードを含む全てのインスタンスグループを示す)。
・“task”(“タスク”)(例えばコンピュートノードを含む全てのインスタンスグループを示す)。
【0050】
いくつかの実施形態において、分散コンピューティングシステムにより提供されるデフォルトのポリシーのうちの少なくともいくつかは、所定の使用事例に特有であり得る。例えば、メトリクス及び規則は1つの使用事例から別の使用事例において大きく異なり得ることから、抽出、変換、及びロード(ETL)に関する1つのデフォルト自動スケーリングポリシー(またはデフォルト自動スケーリングポリシー集合)と、短待ち時間問い合わせにより好適な別のデフォルト自動スケーリングポリシー(またはデフォルト自動スケーリングポリシー集合)とが存在し得る。
【0051】
いくつかの実施形態において、いくつかの(全てでなければ)自動スケーリングポリシーは、前述の要素に加えて、クラスタレベル制限集合を含み得る。これらのクラスタレベル制限は、様々な実施形態において、他のクラスタレベル制限と同様に、以下のうちのいずれかまたは全てを含み得る。
‐ 自動スケーリング動作によりいくつのインスタンスが削除可能かを制約するクラスタの任意最小インスタンス数。例えば、容量を削除する自動スケーリング動作を受けて、作用対象であるクラスタまたはクラスタのインスタンスグループにおいて5個を下回るインスタンスが残ることがないよう動作を制約するために、ポリシーは当制限を“5”という値に設定し得る。
‐ 自動スケーリング動作によりいくつのインスタンスが追加可能かを制約する任意最大インスタンス数。例えば、容量を追加する自動スケーリング動作を受けて、作用対象であるクラスタまたはインスタンスグループにおいて25個を超えるインスタンスが含まれることがないよう動作を制約するために、ポリシーは当制限を“25”という値に設定し得る。
‐ 次に可能な自動スケーリングイベントまで待機する時間(例えば分)。例えば、クラスタまたはクラスタのインスタンスグループに適用された自動スケーリング動作の完了後少なくとも30分まで、クラスタまたはクラスタのインスタンスグループに対し別の自動スケーリング動作が適用されることを防ぐために、ポリシーは当制限を“30”という値に設定し得る。
【0052】
いくつかの実施形態において、顧客は、サービスプロバイダにより事前に定義された式を書くためのドキュメント構造及び構文を使用して、自動スケーリングポリシードキュメント(例えばJavaScript(登録商標) Object Notationを使用して書かれるドキュメント、すなわちJSONドキュメント)を作成することにより、自分自身のポリシーを書く能力を有し得る。いくつかの実施形態において、顧客は、もたらされた自動スケーリングポリシードキュメントを、サービスプロバイダネットワーク上の格納サービスにアップロードし、その後、自動スケーリングを有効化する時に、ドキュメントへのパスを提供し得る。別の実施形態において、自動スケーリングポリシードキュメントは、分散コンピューティングシステムまたはクラスタの制御プレーンに格納され、自動スケーリング判定を行う時に自動スケーリング規則エンジンによりアクセスされ得る。
【0053】
本明細書においてより詳しく説明されるように、いくつかの実施形態において、ユーザ(例えばサービス顧客または加入者)は、自動スケーリングポリシーを組み合わせ得る(例えばユーザは、多数の自動スケーリング規則を1つのポリシー内に含め得る、または多数の自動スケーリングポリシー(それぞれが1つまたは複数の自動スケーリング規則を定義する)を同じクラスタまたはクラスタのインスタンスグループと対応付け得る)。いくつかの実施形態において、自動スケーリング規則間または自動スケーリングポリシー間の競合を、プログラム的に検証することは不可能であり得る(例えば顧客はカスタムアプリケーション特有メトリクスを定義し、これらをカスタム自動スケーリングポリシーにおける式内で使用することが可能であるため)。従って、いくつかの実施形態において、任意の潜在的競合は、以下のような順序付けに基づく競合解消機構を使用して解消され得る。すなわち各規則またはポリシーの優先度は、ポリシーごとの規則またはインスタンスグループごとのポリシーのリストにおける規則またはポリシーの位置により与えられ得る。いくつかの実施形態において、全てのポリシーは評価され得るが、自動スケーリング行動を引き起こす第1ポリシー(またはポリシー内の規則)のみが、行われる行動をもたらす。別の規則またはポリシーが競合する行動を引き起こす場合、その行動は行われない。いくつかの実施形態において、顧客は、優先順位または評価順序を、各自動スケーリングポリシーまたはその規則と、明確に対応付けることが可能であり得る。
【0054】
自動スケーリングポリシーを作成する際に既存の監視サービスが採用されるいくつかの実施形態において、監視サービスは、顧客が自身のカスタムメトリクスを定義し、監視サービスへ直接押し出すことを可能にする手段である公衆対向APIを提供し得る。別の実施形態において、カスタムメトリクスの作成は、既存の監視サービスから切り離され得る。しかしながら、いくつかのこのような実施形態において、メトリクが監視サービスにより収集されようが、別のトリガソースを介して取得されようが、システムは、メトリクごとに一意的識別子または名前が存在することを確保する必要があり得る。いくつかの実施形態において、顧客はそれから、これらの一意的識別子または名前を、トリガソースにかかわらず、自身のカスタムポリシーに使用し得る。
【0055】
自動スケーリングポリシーを作成する際に既存の監視サービスが採用される一例示的実施形態において、監視サービスのAPIは、監視サービスにより監視及び/または収集されるメトリクスのうちの1つまたは複数に依拠する自動スケーリングトリガ条件を表す式を書く時に、使用され得る。例えば、このような一実施形態において、監視サービスにより収集されたメトリクを用いる適正形成式には、以下のように、引用符内に含まれ、スペースで区切られた4つの要素が含まれ得る。
構文:“[メトリク名][>、>=、<、<=、==][閾値][時間量(分)]”
【0056】
当構文を使用して作られたいくつかの例示式が、以下に示される。第1式において、メトリク“MappersRemaining”(“残りのマッパ”)は閾値2と比較され、当メトリクの値が少なくとも60分にわたって2未満である場合に、式は真と評価される。第2式において、メトリク“MasterCPU”(“マスタCPU”)は閾値0.01と比較され、当メトリクの値が少なくとも60分にわたって0.01未満である場合に、式は真と評価される。
“MappersRemaining < 2 60”(“残りのマッパ < 2 60”)
“MasterCPU < .01 60”(“マスタCPU < .01 60”)
【0057】
自動スケーリングポリシーを作成する際に既存の監視サービスが採用されるいくつかの実施形態において、全ての進行中及び保留中ジョブを完了するための推定時間を用いる適正形成式には、以下のように、引用符内に含まれ、スペースで区切られた3つの要素が含まれ得る。
構文:“[推定時間][>、>=、<、<=、==][時間量(分)]”
【0058】
当構文を使用して作られた例示式は、“estimatedTime >= 120”(“推定時間 >= 120”)である。全てのジョブの推定完了時間が120分以上である場合に、当式は真と評価される。
【0059】
自動スケーリングポリシーを作成する際に既存の監視サービスが採用されるいくつかの実施形態において、日付/時間を用いる適正形成式は、以下のように、引用符内に含まれたソフトウェアユーティリティ「クロン」と呼ばれる日付/時間式を使用し得る。
構文:“[クロン日付/時間式]”
【0060】
当構文を使用して作られた例示式は、“000?
*SAT
*”である。当式は、毎土曜の午前零時に真と評価される自動スケーリングトリガ条件を表し得る。例えば、当式は、自動スケーリング行動(例えばクラスタに20ノードを追加すること)が毎土曜の夜の午前零時に行われなければならないことを指定する自動スケーリングポリシーに含まれ得る。当実施例において、補足自動スケーリングポリシーは、クラスタが毎月曜の朝4時に削減されなければならないことを指定し得る。
【0061】
いくつかの実施形態において、自動スケーリングポリシーは、多数の自動スケーリング規則を含み得る。このような実施形態において、自動スケーリングポリシー内で定義される規則は、順番に、お互いに独立して評価され得る。いくつかの実施形態において、真と評価された第1規則は、対応自動スケーリング行動を引き起こし、一旦規則のうちのただ1つが真に評価されると、他の規則は評価されなくなる。従って、単一の自動スケーリングポリシー内の多数の規則を順序付ける時には、注意しなければならない。具体的な一実施例において、単一の自動スケーリングポリシーは、2時間を超える時間HDFS使用率が90%を超える場合にクラスタ(またはクラスタのインスタンスグループ)を拡張させる第1規則と、クラスタが1時間を超える時間遊休状態である場合にクラスタ(またはクラスタのインスタンスグループ)を縮小させる第2規則とを含み得る。規則評価器(例えば自動スケーリング規則エンジン)が現行のメトリクス集合に対して自動スケーリングポリシーを評価するように呼び出された時に、第1規則が真と評価された場合、クラスタは拡張され、第2規則は全く評価され得ない。
【0062】
いくつかの実施形態において、クラスタ自動スケーリングは任意であり、クラスタ作成の際に有効化され得る。当有効化は、例えばコマンドラインインタフェース内にスイッチを含ませて、自動スケーリングポリシーを指定することにより、またはデフォルトのポリシーが適用されるべきであると指定することにより、行われ得る。例えば、一実施形態において、クラスタ自動スケーリングは、以下のコマンドのうちの1つを使用して有効化され得る。
$create‐cluster ―enable‐auto‐scale “default‐policy”($クラスタ作成 ―自動スケーリング“デフォルトポリシー”有効化)
$create‐cluster ―enable‐auto‐scale “storage‐system/path/to/my/policy”($クラスタ作成 ―自動スケーリング“格納システム/path/to/my/policy”有効化)
【0063】
同様に、いくつかの実施形態において、クラスタ自動スケーリングは、作動中クラスタに対し有効化され得る(例えばクラスタ自動スケーリングなしのクラスタ作成の後で)。例えば、一実施形態において、クラスタ自動スケーリングは、以下のコマンドのうちの1つを使用して、作動中クラスタ上で有効化され得る。
$cluster‐id j‐12345678 ―enable‐auto‐scale “default‐policy”($クラスタ‐id j‐12345678 ―自動スケーリング“デフォルトポリシー”有効化)
$cluster‐id j‐98642 ―enable‐auto‐scale “storage‐system/path/to/my/policy”($クラスタ‐id j‐98642 ―自動スケーリング“格納システム/path/to/my/policy”有効化)
【0064】
自動スケーリングポリシーを作成する際に既存の監視サービスが採用される別の実施形態において(及び既存の監視サービスを採用しない少なくともいくつかの実施形態において)、クラスタ自動スケーリングは、クラスタ作成の際に、またはクラスタの作動中に、分散コンピューティングシステムのグラフィカルユーザインタフェース(GUI)(もしくは当システムの任意のコンポーネント)を通して、またはポリシー/規則構築アプリケーションを実施するユーザインタフェース「ウィザード」を通して、有効化され得ることに留意されたい。
【0065】
仮想化コンピューティングリソースインスタンスのクラスタに対する自動スケーリングポリシーを定義する方法の一実施形態が、
図6におけるフロー図により例示される。610に例示されるように、当実施例において、方法は、サービス顧客または加入者のために所定のアプリケーション(またはその計算)を実行する対象となる仮想化コンピューティングリソースインスタンスのクラスタを作成する要求を、サービスが受信することを含み得る。方法は、620のように、サービスがクラスタを作成することを含み、これは、1つまたは複数のインスタンスグループにプロビジョニングリソースインスタンスを含ませることを含み得る。いくつかの実施形態において、リソースインスタンスは種類によってグループ化され、例えば1つのインスタンスグループは多数の格納ノードを含み、一方別のインスタンスグループはコンピュートノードを含み得る。別の実施形態において、リソースインスタンスは、所定のアプリケーションまたは計算を実行する際のそれらのロールに従ってグループ化され得る(例えばマッピング段階に関わるノードは、リデュース段階に関わるノードとは異なるインスタンスグループに属し得る)。
【0066】
図6に例示されるように、方法は、630のように、サービスが、自動スケーリングポリシーの一部として評価される式を定義する入力を受信することを含み、当式は、サービスプロバイダシステムにより、クラスタにより、または所定のアプリケーションにより発せられる1つまたは複数のデフォルトのメトリクス、並びに/あるいは、アプリケーションにより発せられる、またはデフォルトもしくはカスタムメトリクスのうちの他のものを集約して作成される、1つまたは複数のカスタムメトリクスを含み得る。方法はまた、640のように、サービスが(例えば自動スケーリングポリシーのために)、式が真となった場合に取られるべき行動(例えば容量を追加する、または削減すること)、追加または削減するリソースインスタンスの量または率、及び/またはポリシーが適用されるインスタンスグループ(複数可)を定義する入力を受信することを含み得る。例えば、異なるインスタンスグループにおけるリソースインスタンスに適用される自動スケーリングポリシーのうちの少なくともいくつかは、異なり得る。当実施例において示されるように、方法はまた、650のように、サービスが(任意で)、追加/削除可能なインスタンス数に関するクラスタレベル制限、及び/または連続自動スケーリングイベント間の最小時間を指定する入力を受信することを含み得る。
【0067】
当実施例において示されるように、660からの肯定的矢印が示す通りに当クラスタに対応付けるポリシーがもっとある場合、方法は、追加ポリシーを作成してそれらをクラスタに対応付けるために、630〜650に示される動作を適宜繰り返すことを含み得る。660からの否定的矢印が示す通りに当クラスタに対応付ける追加ポリシーがない場合(または一旦なくなると)、方法は、670のように、サービスが、対象データを所定のアプリケーションに配給し、クラスタ上でその実行を開始することを含み得る。当実施例において示されるように、所定のアプリケーションを実行することは、必要に応じて、定義された自動スケーリングポリシーを適用することを含み得る。いくつかの実施形態において、クラスタに(またはクラスタの1つまたは複数のインスタンスグループに)対応付けられた自動スケーリングポリシーのうちの1つまたは複数は、所定のアプリケーションの実行中に修正され得ることに留意されたい(例えばクライアントからサービスにより受信される入力に応じて)。いくつかの実施形態において、1つまたは複数の追加自動スケーリングポリシーは、所定のアプリケーションの実行中に、定義され、及び/またはクラスタ(もしくはクラスタの1つもしくは複数のインスタンスグループ)に対応付けられ得る、あるいは自動スケーリングポリシーとクラスタ(またはクラスタの1つまたは複数のインスタンスグループ)との対応付けは、所定のアプリケーションの実行中に取り消され得る。このような修正、追加、及び取り消しは、
図6に図示されない。いくつかの実施形態において、自動スケーリングポリシーは、クラスタの容量を増加させるために、サービスが、クラスタに1つまたは複数のインスタンスグループを追加するように(クラスタ内の任意の既存のインスタンスグループに容量を追加するのではなく)構成され得ることを指定し得ることにも留意されたい。同様に、自動スケーリングポリシーは、クラスタの容量を減少させるために、サービスが、クラスタから1つまたは複数のインスタンスグループを削除するように(クラスタ内の任意の既存のインスタンスグループから容量を削除するのではなく)構成され得ることを指定し得る。
【0068】
様々な実施形態において、サービスプロバイダネットワークのインフラストラクチャ内で、本明細書において説明されるクラスタ自動スケーリング技術を支援する様々な方法が存在し得る。例えば、
図1は、MapReduceクラスタの自動スケーリングを実施するサービスプロバイダシステムの一実施形態を例示する。当実施例において、プロバイダネットワークは、MapReduceクラスタ内の監視コンポーネント(例えばメトリクスコレクタまたはメトリクス収集エージェント)と、集中監視サービス兼メトリクスアグリゲータと、自動スケーリングトリガ条件を評価する集中自動スケーリング規則エンジンと、これら評価に起因する任意の自動スケーリング行動を遂行する集中リソースマネジャとを含む。いくつかの実施形態において、クライアント(例えばサービスプロバイダの顧客または加入者)が、興味のあるメトリクスと、クラスタ内の様々なインスタンスグループに適用したい自動スケーリングポリシーとを定義した後、これらの定義は、例えば自動スケーリングポリシー情報126として、リソース管理データベース(
図1におけるリソース管理データベース170等)にロードされ得る、またはクラスタ(またはクラスタのインスタンスグループのうちの1つまたは複数)の論理データモデル内に格納され得る。続いて監視サービスが、例えば所定の周期で、ポリシーと、ポリシーが依拠するメトリクスとを取得し、それらを自動スケーリング規則エンジンに対し利用可能にし、その後、規則エンジンが、ポリシーにより定義された自動スケーリングトリガ条件を評価し、ポリシーにより呼び出される任意の行動を開始し得る。いくつかの実施形態において、規則エンジンは、サービスプロバイダシステムの制御プレーン(または当システムの分散コンピューティングサービスの制御プレーン)内で実施され、当規則エンジンは、顧客定義ポリシーを調べ、自動スケーリング判定を行うために、これを現在のメトリクス集合に適用し得る。
【0069】
MapReduceクラスタにおいて自動スケーリングを実行する方法の一実施形態が、
図7におけるフロー図により例示される。710に例示されるように、当実施例において、方法は、仮想化リソースインスタンスを顧客に提供するサービスが、所定のMapReduce型データ処理アプリケーションの実行のために、MapReduceクラスタの仮想化コンピューティング及び/または格納リソースインスタンスをプロビジョニングすることを含み得る。方法は、720のように、1つまたは複数の自動スケーリングポリシーがMapReduceクラスタ及び/または所定のMapReduce型データ処理アプリケーションに対応付けられていることを、サービスが特定することを含み得る。例えば、サービスは、1つまたは複数のデフォルトまたはクライアント指定のポリシーが、クラスタに(もしくはクラスタの1つもしくは複数のインスタンスグループに)またはアプリケーションに対応付けられていることを特定し得る(例えば格納されているポリシー情報に基づいて、あるいは1つまたは複数の自動スケーリングポリシーを定義または選択する入力の受信に応じて)。当ポリシーには、例えば、クラスタ(もしくはクラスタのリソースインスタンス)またはアプリケーションにより発せられるメトリクスに依拠する、あるいは他のメトリクス(例えばクラスタ、クラスタのインスタンス、またはアプリケーションにより発せられる、あるいは代替ソースから受信または取得されるメトリクス)を集約して作成される、1つまたは複数のシステム全体、クラスタ特有、アプリケーション特有、及び/またはインスタンスグループ特有のポリシーが含まれる。
【0070】
当実施例において示されるように、方法は、730のように、サービスが、対応付けられた自動スケーリングポリシーを施行する際使用する1つまたは複数の監視コンポーネント(例えばメトリクス収集エージェント)、メトリクス集約コンポーネント、及び/または自動スケーリング規則エンジンを設定することを含み得る。様々な実施形態において、監視コンポーネント、メトリクス集約コンポーネント、及び/または自動スケーリング規則エンジンのうちのいずれかまたは全ては、クラスタ自身のコンポーネントであり得る(または特定のリソースインスタンスもしくはインスタンスグループのコンポーネントであり得る)、あるいはクラスタの外部にあり得ることに留意されたい。例えば、いくつかの実施形態において、メトリクス収集エージェントは、クラスタ(またはクラスタのリソースインスタンス)内で実施され、クラスタの外部にある1つまたは複数のメトリクス集約コンポーネント及び/または自動スケーリング規則エンジンに対しメトリクス情報を渡し得る。
【0071】
図7に示されるように、方法は、740のように、サービスが、対象データを所定のMapReduce型データ処理アプリケーションに配給し、MapReduceクラスタ上でその実行を開始することを含み得る。加えて、サービスは、クラスタの自動スケーリングを実施するのに使用される監視、集約、及び評価プロセスを呼び出し得る。750からの否定的矢印で示されるように、所定のアプリケーションの実行中に自動スケーリングトリガ条件(例えば自動スケーリングポリシー内の式により定義される条件)が検出されない場合、770のように、実行中にMapReduceクラスタ内のインスタンス数に対し何の変化も加えられ得ない。しかしながら、750からの肯定的矢印で示されるように、実行中に1つまたは複数の自動スケーリングトリガ条件が検出された場合、方法は、760のように、サービスが、適用自動スケーリングポリシーに従って、1つまたは複数の作用対象インスタンスグループに対しインスタンスを追加または削除することを含み得る。いくつかの実施形態において、所定のアプリケーションの実行中に、多数の自動スケーリングトリガ条件が同時に及び/または異なる時点で検出され(例えば異なるインスタンスグループ内のノード上で検出され、及び/または異なるインスタンスグループに作用するトリガ条件)、事例ごとに異なるポリシーが適宜適用され得る。
【0072】
前述のように、本明細書において説明されるシステムは、2つ以上のインスタンスグループを含むコンピューティングリソースインスタンスのクラスタを実施し、それぞれがインスタンス(例えば特定種類の作業負荷で使用するように設計され得るインスタンス)の部分集合(例えば重複または非重複部分集合)を含む。いくつかの実施形態において、いくつかのインスタンスグループは特定サービスを実行し、一方他のインスタンスグループは実行しない。例えば、1つのインスタンスグループは、スポットインスタンスを使用し、一方別のインスタンスグループは、オンデマンドインスタンスを使用し得る。本明細書において説明されるように、特定の自動スケーリングポリシー及び対応自動スケーリング行動は、クラスタ内のインスタンスグループのうちの特定のグループを対象とし得る。例えば、アプリケーションがHDFS容量不足となり、さらに多くのHDFS容量を追加する必要がある場合、対象自動スケーリングポリシーの使用により、HDFSを実行しているインスタンスグループ(複数可)に対してのみノードが追加されることが可能となり得る。同様に、クラスタ内の1つのインスタンスグループがファイルシステムを実行していて、別のインスタンスグループが実行していない場合に(非常によくある状況であり得る)、クラスタが縮小される時(例えばCPUが遊休状態であるため)、データが失われないように、ファイルシステムを実行していないインスタンスグループを対象とする縮小動作が、対象自動スケーリングポリシーの使用により可能となり得る。
【0073】
いくつかの実施形態において、対象自動スケーリングポリシーにより、分散コンピューティングシステムは、容量削減動作にあるインテリジェンスを導入することが可能となり得る。例えば、クラスタにおいて容量が削減されるべきであるという判定に応じて、システムが、ステート(例えばデータ)を格納しない、またはノードが格納しているデータの所定の複製もしくはクォーラム要件を保持する必要のないノードを、削除対象として優先させ得る「スマート縮小」技術を、システムは実施し得る。別の実施例において、クラスタにおいて容量が削減されるべきであるという判定に応じて、システムは、いくつかの実施形態において、ノードが分散アプリケーションのためにタスクを現在実行中であるか否か、ノードが最近タスクを実行し始めたか(もしくは実行するところか)否か、ノードが現在タスクを実行中か否か、及び/またはノードが自身のタスクをもう少しで終了しそうか否かに依拠して、ノードを削除対象として優先させ得る。
【0074】
一例示的実施形態において、クラスタを構成する2つのインスタンスグループのうち、1つはデータを格納するノードを含み、もう1つはデータを格納しないノードを含む。データを保持するノードを含むインスタンスグループは、ディスク使用量が75%を超えた場合、容量が増加されなければならないことを指定するポリシーに対応付けられ、一方もう1つのインスタンスグループ(データを保持しないノードを含むインスタンスグループ)は、CPUが使用されていない場合、ノードが削除されなければならないことを指定するポリシーに対応付けられ得る。いくつかの実施形態において、データを格納するノードを削除する前に、データは別のノードに移動される必要があり得る、あるいはノードの削除により、データ損失、または複製要件もしくはクォーラムを達成するのに十分なデータのコピーを保持する要件の妨害を生じないことをシステムが判断する必要があり得ることに、留意されたい。いくつかの実施形態において、データを格納し、問題なく廃止不可能なノード(例えば他の要件のため)を削除するのではなく、代わりに別のノードが削除対象として選択され得る(例えばデータを格納するが問題なく廃止可能な別のノード、またはデータを格納していないノード)。いくつかの実施形態において、システムは、クラスタの容量を削減する時、もしあればどの格納ノードが削除にふさわしいかを特定するために、及び/または削除対象の格納ノードを準備するために、HDFS廃止(Hadoopに組み込まれている)に依存し得る。例えば、いくつかの実施形態において、クラスタを縮小させる時、システムは、データ損失を防ぐために(例えば複製を通して)、HDFSに組み込まれた機構に依存し得る。いくつかのこのような実施形態において、ノードが強制的に終了される場合、当機構は、目標複製要素(所定のデータブロックがクラスタ中に複製されなければならない回数)に合わせて、ノード上に格納されたデータを再分散するように構成され得る。より具体的には、HDFS廃止に依存する実施形態において、当機構は初めに、利用可能な格納が複製要求を受け入れるのに十分であるか否かを評価し得る。十分である場合に、当機構は、各廃止ノードが終了される前に各廃止ノードからのデータの再調整が完了するまで待機して、ノードを廃止し始め得る。
【0075】
いくつかの実施形態において、容量が削除されなければならないと自動スケーリングポリシーが示す場合、もしあればどのインスタンスが削除されるべきかを特定する時に、様々な要素が考慮され得る。例えば、いくつかの自動スケーリングポリシーは、各ノード上に値を設定し(例えば削除対象としてのノードの適格性または適合性に相対して)、ポリシーは、どのインスタンスを削除するかを決定する際、ノードの値に依存し得る(例えばデータを保持するノード上のデータ損失を回避する)。いくつかの実施形態において、無差別にではなく、異なるノードの相対値に依拠した縮小動作を適用する当能力は、自身のクラスタ容量を安全に(例えばデータ損失または著しい性能損失を心配することなく)調整したい顧客にとって、重要であり得る。
【0076】
いくつかの実施形態において、本明細書において説明されるシステムはまた、コンピュートノード(例えば分散アプリケーションのためにタスクを実行しているノード)を削除する時に既存の自動スケーリング解決策を実施するシステムよりも、より高い識別力を有し得る。例えば、自動スケーリングポリシーは、現にジョブを実行しているノードを削除することを回避するように構成され得る(削除により、ジョブは別のノードによる実行に再スケジュールされる必要があるため、パフォーマンスに影響を与え得る)。このような実施形態において、システムは、削除対象として、仕事をしていない(もしくは他のノードより仕事の少ない)、またはジョブを実行し始めたばかりのノードを、現在実行しているジョブが完了に近づいているノード(例えば現在実行しているジョブが80%完了しているノード)よりも、優先させるように構成され得る。例えば、いくつかの実施形態において、ノード削除、またはノード削除の適格性のために、優先順位は確立され、分散アプリケーションの実行が進むにつれて定期的に(または時々)更新され得る。これにより、いくつかの実施形態において、多数のノードが安全に削除されることが可能となり得る(例えばノードが削除に尚もふさわしいことを確認しながら、1つずつ優先順位に従って)。様々な実施形態において、特定のリソースインスタンスの実際の開始及び終了は、基礎仮想化サービスに組み込まれたAPI(例えば様々な種類の仮想化リソースインスタンスをプロビジョニング及び/またはでプロビジョニングするAPI)を使用して行われ得ることに留意されたい。いくつかの実施形態において、いつでも好適な終了対象を特定可能であり得るように、自動スケーリングプロセスのエージェントは、進行中の現在実行タスクを有するノードを記録するように構成され得る。これらのノードに作用する縮小の事例において、エージェントは、これらを次の終了として印付け始め、その後、対応タスクの実行が一旦完了すると、これらを終了し得る。
【0077】
MapReduceクラスタにおいてインテリジェント縮小動作(例えば「スマート縮小」)を実行する方法の一実施形態が、
図8におけるフロー図により例示される。810に例示されるように、当実施例において、方法は、仮想化リソースインスタンスを顧客に提供するサービスが、1つまたは複数の自動スケーリングポリシーが対応付けられたMapReduceクラスタ上で、所定のMapReduce型データ処理アプリケーションの実行を、好適な監視、集約、及び評価プロセスと共に開始することを含み得る。820からの否定的矢印で示されるように、クラスタの容量の削減を引き起こす自動スケーリングトリガ条件がアプリケーションの実行中に検出されない場合、825に示されるように、実行中にMapReduceクラスタ内のノード数の削減はあり得ない。
【0078】
しかしながら、当実施例において示されるように、実行中に1つまたは複数の自動スケーリングトリガ条件が検出された場合(820からの肯定的矢印で示されるように)、かつポリシーがMapReduceクラスタ内の1つまたは複数のインスタンスグループにおける1つまたは複数の格納ノードの削除を指定する場合(830からの肯定的矢印で示されるように)、方法は、860のように、削除によりどのデータも損失されない方法で、削除可能な格納ノードが十分に存在するか否かを判定すること(適用自動スケーリングポリシーに従って)を含み得る。例えば、方法は、複製により、既に廃止された、あるいはクラスタから(またはクラスタの1つまたは複数の作用対象インスタンスグループから)削除するのにふさわしい格納ノードが十分に存在するか否かを判定することを含み得る。860からの肯定的矢印で示されるように、十分に存在する場合、方法は、880のように、サービスが、適用自動スケーリングポリシーにより定義される数の格納ノードを削除することを含み得る。しかしながら、クラスタまたはクラスタの適用インスタンスグループから削除するのにふさわしい格納ノードが十分に存在しない場合(適用自動スケーリングポリシーに従って)(860からの否定的矢印で示されるように)、方法は、870のように、サービスが、1つまたは複数の格納ノードが廃止されるもしくは削除適格となるのを待つこと、あるいは、サービスが、適用自動スケーリングポリシーにより定義される数より少ない格納ノードを削除することを含み得る。いくつかの実施形態において、クラスタまたはクラスタの適用インスタンスグループから削除するのにふさわしい格納ノードが十分に存在しない場合、サービスは、クラスタまたはインスタンスグループ(複数可)内の1つまたは複数の格納ノードの廃止を開始するように構成され、それからノード(複数可)が廃止されるのを待ち得る(図示せず)ことに留意されたい。
【0079】
当実施例において示されるように、実行中に1つまたは複数の自動スケーリングトリガ条件が検出された場合(820からの肯定的矢印で示されるように)、かつポリシーがMapReduceクラスタ内の1つまたは複数の格納ノードの削除を指定しない場合(すなわち、830からの肯定的矢印で示されるように、ポリシーが、MapReduceクラスタ内の1つまたは複数のインスタンスグループにおける1つまたは複数のコンピュートノードの削除を指定する場合)、方法は、サービスが、タスク進捗に基づいて、クラスタまたは作用対象インスタンスグループ(複数可)内のどのコンピュートノードが削除にふさわしいかを特定することを含み(840のように)、この後にサービスは、850のように、自動スケーリングポリシーにより定義される数の適格コンピュートノードを削除し得る。いくつかの実施形態において、例えば、現在タスクを実行していない、またはタスクを実行し始めたばかりのコンピュートノードは、現在タスクを実行している、及び/または自身のタスクをもう少しで終了しそうなコンピュートノードより、削除対象として優先され得る。
【0080】
本明細書に含まれる実施例のうちの多数が、クラスタ自動スケーリング技術を、Hadoop/MapReduceクラスタに対するその適用の観点から説明しているが、別の実施形態において、これらの技術は、他の種類のクラスタ指向分散コンピューティングシステム内の自動スケーリングにより幅広く適用され得る。例えば、これらの技術は、Hadoopの外側に存在するが、顧客がある規則に基づいて自動的に拡張または縮小することを所望可能な分散アプリケーションであるSpark及び/またはPrestoアプリケーションとの使用に適用可能であり得る。前述のように、これら(または他)のアプリケーションの実行時、自動スケーリング判定を行う際に顧客が関心のあるメトリクスは、Hadoop/MapReduceクラスタの自動スケーリング判定を行う際に顧客が関心のあるメトリクスとは異なり得る。従って、このような実施形態において、分散コンピューティングシステムは、異なるデフォルトメトリクス集合を発信及び/もしくは収集するように、並びに/またはHadoop/MapReduceクラスタにおいて使用するために提供されるものとは異なるデフォルト自動スケーリングポリシーを提供するように構成され得る。いくつかの実施形態において、このようなシステムは、これらのアプリケーションに好適なメトリクスを選択、定義、及び/または収集するために、既存の監視サービスを採用し得る。これらのシステムはまた、顧客が異なるインスタンスグループに対し異なる自動スケーリングポリシーを適用することを可能にし、これは、自動スケーリング動作においてインスタンスまたはインスタンスグループを対象とする時に(例えばノードを削除する時に)非常に重要なノードまたはインスタンス類と、重要ではない他のものとを区別することを顧客が所望するこれらのアプリケーションに役立ち得る。
【0081】
コンピューティングリソースインスタンスのクラスタに対し自動スケーリングを実施する際に監視サービスを採用する方法の一実施形態が、
図9におけるフロー図により例示される。910に示されるように、当実施例において、方法は、コンピューティングリソースインスタンスの1つまたは複数のクラスタのビヘイビアを監視するように監視サービスを構成することを含み得る。方法は、920のように、監視サービスが、分散アプリケーションが実行中であるコンピューティングリソースインスタンスのクラスタからメトリクスを受信することを含み得る。例えば、監視サービスは、クラスタ内の1つまたは複数のコンピューティングリソースインスタンスから(このうちのいくつかは異なるインスタンスグループに属し得る)、メトリクスを受信し得る。方法はまた、930のように、監視サービスが、受信したメトリクスのうちの少なくともいくつかを集約し、それらを自動スケーリング規則エンジンにより利用可能にすること(例えばそれらを自動スケーリング規則エンジンに渡すことにより、またはそれらを自動スケーリング規則エンジンがアクセス可能なメモリに格納することにより)を含み得る。
図9において930から920へのフィードバックにより例示されるように、監視サービスは、クラスタからメトリクスを受信し、それらを集約し、及び/またはそれらを自動スケーリング規則エンジンにより利用可能にすることを、そのように構成される限り継続し得る。
【0082】
図9において例示されるように、方法は、940のように、自動スケーリング規則エンジンが、クラスタに、及び/またはクラスタ内の1つまたは複数のインスタンスグループに対応付けられた1つまたは複数の自動スケーリングポリシー内で定義される式(例えば受信及び/または集約されたメトリクスに基づき、自動スケーリングトリガ条件を表す式)を評価することを含み得る。950からの肯定的矢印で示されるように、式のうちの少なくとも1つが真と評価されると、方法は、960のように、自動スケーリング規則エンジンが、クラスタに対し、またはクラスタの1つまたは複数のインスタンスグループに対し特定の自動スケーリング行動が引き起こされたという開示を、クラスタのリソースマネジャに送信することを含み得る。方法はまた、970のように、クラスタのリソースマネジャが、対応自動スケーリングポリシー及びその他の適用リソース管理ポリシーに従って、自動スケーリング行動を開始することを含み得る。
図9において、960から940へのフィードバック、及び950から940への否定的矢印のフィードバックにより例示されるように、自動スケーリング規則エンジンは、クラスタに対応付けられた自動スケーリングポリシー内の様々な式を評価することを、それらのうちのいずれかが真と評価されるかどうかに関わりなく、そのように構成される限り継続し、960及び970に例示される動作は、それらのうちのいずれかが真と評価された場合に繰り返され得る。
【0083】
仮想化格納リソースをウェブサービス等のサービスとしてクライアントに提供する非構造化オブジェクト格納モデルの例示的一実施形態が、
図10におけるブロック図により示される。例示されたモデルにおいて、格納サービスインタフェース1010が、オブジェクト格納サービス1000へのクライアント対向インタフェースとして提供される。格納サービスインタフェース1010は、例えば、アプリケーションプログラミングインタフェース(API)として実施され得る、あるいはアプリケーションプログラミングインタフェース(API)を含み得る。インタフェース1010によりクライアント1040に提示されるモデルに従って、格納サービスは、インタフェース1010を介してアクセス可能な任意の数のバケット1020a〜1020nとして組織され得る。一般に、バケットは、ユーザのために格納システムにおいてオブジェクトが格納され得る論理コンテナであり、オブジェクトは、格納システムに格納される基本エンティティである。いくつかの実施形態において、格納オブジェクトは、オブジェクトデータ及び/またはメタデータを含み得る。例えば、各オブジェクトは、データオブジェクト部分と、メタデータ部分を含み得る。いくつかの実施形態において、全てのオブジェクトはバケット内に含まれ、全てのオブジェクトは、バケットの識別子と、オブジェクト自体の1つまたは複数の識別子(例えばユーザキー、またはユーザキーとバージョン識別子との組み合わせ)との組み合わせを使用して、アドレス指定可能であり得る。
【0084】
図10において示される実施例において、各バケット1020は、任意の数のオブジェクト1030a〜1030nを格納するように構成され、それぞれのオブジェクトは、格納サービス1000のクライアント1040により指定されたデータ(データ1033a〜1033nと表示)及び/またはメタデータ(1031a〜1031nと表示)を格納し得る。様々な実施形態において、メタデータ1031a〜1031nは、クライアント1040により指定され得る、またはオブジェクト格納サービス1000により生成され得る。1つまたは複数のクライアント1040は、データオブジェクト1030を格納する、読み出す、及び下記により詳しく説明されるようにデータオブジェクト1030に対し1つまたは複数の動作を実行する要求を、格納サービスインタフェースに提出し得る。格納サービスインタフェースは、要求に対する応答1048を提供し、これには例えば、確認応答及び/または読み出しデータが含まれ得る。一般に、データオブジェクトの格納及び読み出しに加えて、格納サービス1000が行い得る要求または命令には、格納サービス1000内のデータを修正する命令が含まれ得る。このようにして、格納サービス1000からデータを削除し、動作を実行し、それから修正したデータを格納サービスに返す処理を、クライアント1040が背負い込むことはない。当構成により、例えば、クライアント1040のネットワーク帯域幅及び処理リソースが節約され得る。
【0085】
いくつかの実施形態において、格納サービスインタフェース1010は、ウェブサービスモデルに従って、格納サービス1000とそのクライアント1040(複数可)との間の対話に対応するように構成され得る。例えば、一実施形態において、インタフェース1010は、サービスクライアントにより生成されるウェブサービス呼び出しが処理対象として指示され得るユニフォームリソースロケータ(URL)を有するウェブサービスエンドポイントとして、クライアントによりアクセス可能であり得る。一般的に、ウェブサービスは、あるバージョンのハイパーテキスト転送プロトコル(HTTP)または別の好適なプロトコル等、1つまたは複数のインターネットベースアプリケーション層データ転送プロトコルを含む要求インタフェースを介して、要求クライアントにより利用可能にされた任意の種類のコンピューティングサービスを指し得る。
【0086】
少なくともいくつかの実施形態において、オブジェクト格納サービス1000は、データ冗長性及び復元性目的で、データオブジェクトを内部で複製するように構成され得る。しかしながら、オブジェクト格納サービス1000は、格納サービス1000に格納されたデータオブジェクトへのアクセスが常に最新または最近のバージョンのデータオブジェクトを返すことを、保証しない。データオブジェクトは一般に全てのインスタンスにわたって最終的に整合性があるとだけ保証されるため、オブジェクト格納サービス1000等の格納サービスの当特性は、本明細書において「結果整合性」と称され得る。別の実施形態において、オブジェクト格納サービス1000は、格納サービスに格納されたデータオブジェクトへのアクセスが最新または最近のバージョンのデータオブジェクトを返すことを保証し得る強整合性モデルに対応し得る。
【0087】
いくつかの実施形態において、オブジェクト格納サービス(オブジェクト格納サービス1000等)は、分散コンピューティングシステム(MapReduceクラスタ等)上で実行されているMapReduceアプリケーション(またはその計算)によりダウンロード及び処理される予定のデータ集合、及び/またはこのようなアプリケーションにより生成される出力データに対し、格納を提供し得る。いくつかの実施形態において、オブジェクト格納サービス(オブジェクト格納サービス1000等)は、MapReduceジョブのキーペア、ホストファイル、ランクファイル、または構成もしくは作動パラメータ、あるいはこのようなアプリケーションを実行する時に使用可能なその他の情報を、非限定的に含む他の種類のデータまたはメタデータに対し、格納を提供し得る。別の実施形態において、これらの要素のいずれかまたは全ては、
図10に例示されるものとは異なるモデル及び/または構成を有する1つまたは複数のオブジェクトデータストアに格納され得る。
【0088】
いくつかの実施形態において、オブジェクト格納サービスは、本明細書において説明されるように、クラスタの自動スケーリングを実施する際採用される監視コンポーネントを含み得る、または監視コンポーネントと対話し得る。例えば、監視サービス1050は、自動スケーリングトリガ条件を表す式において使用されるメトリクスを収集及び分析するために、オブジェクト格納サービス1000と対話し得る(例えば格納サービスインタフェース1010を介して)、またはこのようなメトリクスを収集して、それらを分析のために別個の自動スケーリング規則エンジンへ渡し、その後、自動スケーリング規則エンジンが、自動スケーリング行動を実行する必要があるか否か、及び必要がある時を決定し得る(図示せず)。いくつかの実施形態において、自動スケーリング規則エンジンは、サービスプロバイダによる別個の自動スケーリングサービス内で実施され、オブジェクト格納サービス1000は、自動スケーリングサービスのクライアントであり得る。
【0089】
いくつかの実施形態において、オブジェクトのデータオブジェクト部分は、格納システムにとって不明瞭なものであり、すなわち格納システムにより「ブラックボックス」エントリとして扱われ得ることに留意されたい。様々な実施形態において、オブジェクトのデフォルトのメタデータは、例えば名前値ペア、オブジェクトが最後に修正された日付、及び/またはコンテンツの種類の指標(すなわちオブジェクトのデータオブジェクト部分のコンテンツのデータ種類)を含み得る。いくつかの実施形態において、オブジェクトに対応付けられたメタデータは、ユーザ提供のキー値ペアと共に、システム挿入のキー値ペア(例えば作成日付及び/もしくは最終修正日付、または他のバージョン関連メタデータを含む)を含み得る。いくつかの実施形態において、オブジェクトに対応付けられた、及び/または格納されたメタデータは、アクセス制御リスト(ACL)を含み得る。いくつかの実施形態において、開発者は、オブジェクトが格納される時点で、カスタムメタデータを指定することが可能であり得る。様々な実施形態において、所定のオブジェクトに対応付け可能なメタデータの量は、使用されるインタフェースの限度、及び/または要求もしくは応答メッセージに対しシステムが許容するもしくは対応するデータの量により、制限され得る。
【0090】
様々な実施形態において、本明細書において説明される格納システムは、バケットの作成、バケット内のデータの格納及び読み出し(例えばデータの開発者またはバケットの所有者により割り当てられ得る一意的キーを使用)、データの削除、及び/または格納オブジェクトのリスト化、以上の格納関連タスクへの対応を含み得る。いくつかの実施形態において、ユーザは、格納システムにおいてある動作を実行可能なように、特別許可(例えば特定アクセスロール)を有する必要があり得る。例えば、バージョンステートを調べる、バージョンステートを修正する、オブジェクト及び/またはキーを削除する、論理的に削除されたデータを回復させる、バケットまたはバケットのオブジェクトに対し許可を設定する等のために、ユーザは、システムにおいて(及び/またはシステム内の特定バケットに関して)特権ユーザとして指名される必要があり得る。別の実施例において、格納オブジェクトのリスト化及び/または格納オブジェクトの読み出しのために、ユーザは、特定アクセスロールを有する必要があり得る。いくつかの実施形態において、このような許可は、バケット所有者に自動的に付与され、及び/またはバケット所有者により制御され得る。別の実施形態において、このような特権は、他の手段により、及び/またはバケット所有権以外の要素に基づいて、ユーザに指名及び/または付与され得る。様々な実施形態において、これらの許可のうちのいくつかまたは全ては、バケットベースで付与及び/または制御され得る。別の実施形態において、これらの許可のうちの1つまたは複数は、個別オブジェクトベースで、またはオブジェクトの種類もしくはコンテンツの種類に基づいて、付与及び/または制御され得る。
【0091】
分散コンピューティングシステムの実施形態は一般に、サービスプロバイダのプロバイダネットワーク上で実施される仮想化リソース(例えば仮想化コンピューティング及び格納リソース)を、インターネット等の中間ネットワークを介して、クライアントに提供するサービスプロバイダとの関連において、本明細書において説明される。
図11は、分散コンピューティングシステムにおいてデータ格納を提供する方法及び装置の実施形態が実施され得る例示的サービスプロバイダネットワーク環境を示す。MapReduceクラスタ上でMapReduceジョブを実行する分散コンピューティングシステムの実施形態が実施され得る別の例示的環境が、図面のうちの他のものにおいて示され、下記に説明される。これらの実施例に、限定する意図はない。
【0092】
図11において示される実施例において、サービスプロバイダは、クライアント(例えばクライアントネットワーク1180上のクライアント1182、または他のクライアント1162)に対し、クライアントがプロバイダネットワーク1100上で少なくとも部分的に分散コンピューティングシステムのプロビジョニング、管理、及び操作を行い得る1つまたは複数のサービス(分散コンピューティングサービス1102(複数可)と称される)を、提供し得る。少なくともいくつかの実施形態において、分散コンピューティングサービス1102(複数可)を介して分散コンピューティングシステムをプロビジョニングすることは、1つまたは複数の仮想化コンピューティングリソース(クライアントリソースインスタンス1110として表示)を分散コンピューティングシステムのコンピュートノードとしてプロビジョニングすることと、仮想化格納(データストア1120として表示)を分散コンピューティングシステムにおいて使用されるデータ集合のデータ格納として、及び/または様々なクライアントのために行われる計算結果のデータ格納としてプロビジョニングすることとを含み得る。様々な実施形態において、クライアントリソースインスタンス1110及び/またはデータストア1120は、別の方法でプロビジョニングされ得ることに留意されたい。例えば、代案として、少なくともいくつかの実施形態において、クライアント(例えばクライアントネットワーク1180により表される)は、外部クライアントネットワーク上の1つまたは複数のクライアントデバイス1182を、分散コンピューティングサービスのコンピュートノードとしてプロビジョニングし、同時に、分散コンピューティングシステムにおいて使用予定のデータ集合の格納を、分散コンピューティングサービス1102(複数可)を介してデータストア1120上にプロビジョニングし得る。様々な実施形態において、データストア1120は、本明細書において説明されるように、オブジェクト格納、ブロックベース格納、及び/またはボリュームベース格納を実施し得ることに留意されたい。
【0093】
少なくともいくつかの実施形態において、クライアント(複数可)は、1つまたは複数のアプリケーションプログラミングインタフェース(API1104(複数可))を介して分散コンピューティングサービス1102(複数可)と対話して、特定の分散コンピューティングシステム(例えばMapReduceクラスタ)に対しプロバイダネットワーク1100上の計算及び格納リソースのプロビジョニングを要求し、分散コンピューティングサービス1102(複数可)は次に、API1108(複数可)を介して仮想化サービス1106(複数可)と対話して、プロバイダネットワーク1100上の計算及び格納リソースを実際にプロビジョニングし得ることに留意されたい。しかしながら、いくつかの実施形態において、分散コンピューティングサービス1102(複数可)は、プロバイダネットワーク上の計算及び格納リソースと直接対話して、特定の分散コンピューティングシステムに対し、リソースをプロビジョニングあるいは構成し得る。
【0094】
少なくともいくつかの実施形態において、サービスプロバイダは、例えばApache(商標)Hadoop(登録商標)フレームワークのような分散コンピューティングフレームワークに従って、クライアントのためにこのような分散コンピューティングシステム(例えばMapReduceクラスタ)を実施し得る。しかしながら、いくつかの実施形態において、他のフレームワークが使用され得ることに留意されたい。
【0095】
少なくともいくつかの実施形態において、プロバイダネットワーク1100を介してサービスプロバイダのクライアントに提供されるリソースのうちの少なくともいくつかは、他のクライアント(複数可)と共有されるマルチテナントハードウェア上で、及び/または特定クライアント専用のハードウェア上で実施される仮想化コンピューティングリソースであり得る。各仮想化コンピューティングリソースは、リソースインスタンスと、またはクライアントリソースインスタンス(例えばクライアントリソースインスタンス1110)と称され得る。リソースインスタンス1110は、例えば、サービスプロバイダのクライアントにレンタルまたはリースされ得る。例えば、サービスプロバイダのクライアントは、API1108(複数可)を介してプロバイダネットワークの1つまたは複数のサービス1106にアクセスし、サービス1106に、リソースインスタンス1110を取得及び構成させ、例えば
図16に示される仮想化プライベートネットワークのように、リソースインスタンス1110を含む仮想ネットワーク構成を確立及び管理させ得る。リソースインスタンス1110は、例えば、多数のオペレーティングシステムがホストコンピュータ上で同時に作動する、すなわちホスト上で仮想マシン(VM)として作動することを可能にするハードウェア仮想化技術に従って、実施され得る。ホスト上のハイパーバイザ、すなわち仮想マシンモニタ(VMM)は、仮想プラットフォームによりホスト上のVMを提示し、VMの実行を監視する。各VMには、1つまたは複数のプライベートIPアドレスが提供され得る。ホスト上のVMMは、ホスト上のVMのプライベートIPアドレスを認識し得る。ハードウェア仮想化技術の実施態様及び使用の実施例はさらに、
図13において示され、下記において説明される。
【0096】
少なくともいくつかの実施形態において、プロバイダネットワーク1100、仮想化サービス1106(複数可)、及びAPI1108(複数可)を介してサービスプロバイダのクライアントに提供されるリソースのうちの少なくともいくつかは、プロバイダネットワーク1100上の格納ハードウェアで実施される仮想化格納リソースであり、他のクライアント(複数可)と共有され得る。様々な種類のデータ格納及び格納サービスをクライアントに提供するために、様々な実施形態において、仮想化データストア技術が使用され得る。例えば、オブジェクト格納サービスは、クライアントに、汎用かつ非構造化データオブジェクトベース格納を提供し(
図11においてデータストア1120により表され得る)、これを介してクライアントは、任意の種類のデータオブジェクト(その一部はデータファイルを含み得る)の格納及び読み出しを行い得る。
図11に例示されるように、オブジェクト格納サービスにより提供される非構造化オブジェクトストア(データストア1120として表示)は、例えば、分散コンピューティングサービス1102(複数可)を通してプロビジョニングされる分散コンピューティングシステムのデータ集合を格納するのに使用され得る。
図11に図示されないが、別の実施例として、データ格納サービス、例えばサービスプロバイダによりまたはある他のエンティティにより提供されるデータベースサービスは、クライアントに、構造化データを格納し読み出すための構造化データモデル(例えばデータベースモデル)を提供し得る。
【0097】
図11に例示されるように、いくつかの実施形態において、プロバイダネットワーク1100は、監視サービス1130、及び/または自動スケーリングコンポーネント1135を含み得る。例えば、いくつかの実施形態において、監視サービス1130は、自動スケーリングトリガ条件を表す式において使用されるメトリクスを収集及び分析するように構成され得る、またはこのようなメトリクスを収集して、それらを分析のために別個の自動スケーリング規則エンジンへ渡し、その後、自動スケーリング規則エンジンが、自動スケーリング行動を実行する必要があるか否か、及び必要がある時を決定し得る(図示せず)。いくつかの実施形態において、分散コンピューティングサービス1102、及び/または仮想化サービス1106は、監視サービス1130のクライアントであり得る。いくつかの実施形態において、自動スケーリングコンポーネント1135は、本明細書において説明される自動スケーリング技術のうちのいずれかを使用して特定される任意の自動スケーリング行動を実行し得る。いくつかの実施形態において、自動スケーリング規則エンジンは、監視サービス1130内ではなく、自動スケーリングコンポーネント1135内で実施され得る。
【0098】
図11において示される例示的プロバイダネットワークにおいて、分散コンピューティングシステムは、1つまたは複数のコンピュートノードを含み得る。コンピュートノードは、
図11に示されるようにクライアントリソースインスタンス1110としてプロビジョニングされ得る、あるいは
図11に示されるようにクライアントネットワーク1180上のクライアントデバイス1182として、またはクライアント1162上にプロビジョニングされ得る。分散コンピューティングシステムのデータ集合は、データストア1120上でインスタンス化され得る。いくつかの実施形態において、データ集合からのデータを処理するために、コンピュートノードは、オブジェクト格納サービスを介して、データストア1120にアクセスし得る(図示せず)。少なくともいくつかの実施形態において、このようなオブジェクト格納サービスは、1つまたは複数のAPIを提供し、これを介してコンピュートノードまたは他のエンティティは、データストア1120にアクセスし得る。いくつかの実施形態において、処理されたデータ(例えば出力データ)は、必ずしもではないが、データストア1120に書き戻され得る。いくつかの事例において、データストア1120に書き戻された処理済みデータのうちの少なくとも一部は、コンピュートノード(複数可)のうちの1つまたは複数によりアクセスされ得る。例を挙げると、ジョブ(例えばMapReduceジョブ)は、データストア1120からのデータを読み出し、データストア1120へ出力データを書き込み得る。後続ジョブ(例えば別のMapReduceジョブ)はそれから、データストア1120からの出力データのうちの少なくとも一部にアクセスを試み得る。
【0099】
オブジェクト格納サービスを介して提供される非構造化オブジェクトストアは、非常に大きなデータ集合を格納できる能力、高処理能力、データ複製等の機能による信頼性及び高可用性、並びに柔軟性を非限定的に含む利点を有し得る。クライアントは、クライアントのネットワーク上に追加の格納デバイスをインストールし構成することなく、必要に応じて、容易にかつ比較的安価に追加格納をプロビジョニングするために、このようなオブジェクト格納サービスを活用し得る。オブジェクト格納サービスは、このようなデータ複製の機能のため、いくつかの実施形態において、結果整合性の特性を有し得る。別の実施形態において、これは、強整合性モデルを実施し得る。少なくともいくつかの実施形態において、クライアントリソース1110としてプロビジョニングされるそれぞれのコンピュートノードは、分散コンピューティングシステムの処理部分(例えばMapReduceプロシージャ)を実施し得る1つまたは複数のモジュールを含み得る。コンピュートノードはまた、メタデータを取得するように、またはオブジェクト格納サービスによりその処理モジュール(複数可)のためにデータストア1120に保持されるデータオブジェクト(もしくはデータファイル)にアクセスするように、データ格納サービスにアクセスする1つまたは複数のデータアクセスモジュールを含み得る。少なくともいくつかの実施形態において、オブジェクト格納サービスは、1つまたは複数のAPIを提供し、これを介して、クライアントリソース1110としてプロビジョニングされる様々なコンピュートノード上のデータアクセスモジュール(複数可)は、それぞれのサービスにアクセスし得る。
【0100】
図12は、いくつかの実施形態による、ブロックベース格納サービスを含む多数のネットワークベースサービスを実施するプロバイダネットワークを例示するブロック図である。インターネット及び/または他のネットワークを介してクライアント1210がアクセス可能な1つまたは複数のサービス(様々な種類のクラウドベースコンピューティングまたは格納等)を提供するために、企業または公的機関等の事業体により、プロバイダネットワーク1200が構築され得る。プロバイダネットワーク1200は、プロバイダネットワーク1200が提供するインフラストラクチャ及びサービスを実行及び配給するために必要な物理及び/または仮想化コンピュータサーバ、格納デバイス、ネットワーク機器等の集合(例えば
図17に関して後述されるコンピュータシステム1700)といった様々なリソースプールをホスティングする多数のデータセンタを含み得る。いくつかの実施形態において、プロバイダネットワーク1200は、仮想コンピュートサービス1230等のコンピューティングリソース、ブロックベース格納サービス1220及び別の格納サービス1240等の格納サービス(オブジェクト/キー値ベースデータストアまたは様々な種類のデータベースシステム等の様々な格納種類を含み得る)、及び/またはその他の種類のネットワークベースサービス1250を提供し得る。クライアント1210は、ネットワーク1260を介して、プロバイダネットワーク1200が提供するこれらの様々なサービスにアクセスし得る。同様に、ネットワークベースサービス自体は、異なるサービスを提供するために、お互いに通信及び/または利用し合い得る。例えば、仮想もしくは物理コンピュートインスタンスまたは格納インスタンスといった「インスタンス」と呼ばれる単位でクライアント1210に提供されるコンピューティングリソースは、特定のデータボリューム1226を利用して、コンピュートインスタンスの仮想ブロック格納を提供し得る。
【0101】
前述のように、仮想コンピュートサービス1230は、クライアント1210に様々なコンピュートインスタンスを提供し得る。仮想コンピュートインスタンスは、例えば、指定計算能力(CPUの種類と数、メインメモリサイズ等を指示することにより指定され得る)を有する1つまたは複数のサーバと、指定ソフトウェアスタック(例えばハイパーバイザの上部で同様に作動し得る特定バージョンのオペレーティングシステム)とを備え得る。異なる実施形態において、仮想コンピュートサービス1230のコンピュートインスタンスを実行するために、多数の異なる種類のコンピューティングデバイスが単一で、または組み合わせて使用され、これには汎用または専用コンピュータサーバ、格納デバイス、ネットワークデバイス等が含まれる。いくつかの実施形態において、インスタンスクライアント1210またはその他のユーザは、コンピュートインスタンスへネットワークトラフィックを向けるように構成され得る(及び/または権限が与えられ得る)。様々な実施形態において、様々な動作の実行用の持続的ブロックベース格納を取得するために、コンピュートインスタンスは、ブロックベース格納サービス1220が提供する1つまたは複数のデータボリューム1226に、配属またはマッピングされ得る。
【0102】
コンピュートインスタンスは、アプリケーションサーバインスタンス、Java(商標)仮想マシン(JVM)、汎用または専用オペレーティングシステム、Ruby、Perl、Python、C、C++等の様々なインタプリタ型またはコンパイラ型プログラミング言語に対応するプラットフォーム、または高性能コンピューティングプラットフォーム等、例えばインスタンスにアクセスするようクライアント1210に要求することなく、クライアントアプリケーションを実行するのに好適な様々な異なるプラットフォームを作動または実行し得る。コンピュートインスタンス構成はまた、コンピュート集中アプリケーションの計算作業負荷(例えば高トラフィックウェブアプリケーション、広告提供、バッチ処理、ビデオ符号化、分散解析論、高エネルギー物理学、ゲノム分析、及び計算流体力学)、グラフィック集中作業負荷(例えばゲームストリーミング、3Dアプリケーションストリーミング、サーバ側グラフィック作業負荷、レンダリング、財務モデリング、及び工学設計)、メモリ集中作業負荷(例えば高性能データベース、分散メモリキャッシュ、インメモリ分析論、ゲノムアセンブリ及び分析)、及び格納最適化作業負荷(例えばデータウェアハウジング及びクラスタファイルシステム)といった汎用及び専用目的のコンピュートインスタンスも含み得る。特定数の仮想CPUコア、メモリ、キャッシュ、格納等のコンピュートインスタンスのサイズ、並びにその他の性能特性は、変わり得る。コンピュートインスタンスの構成はまた、特定のデータセンタ、可用性区域、地理、場所等におけるそれらの位置と、予約期間(予約コンピュートインスタンスの場合)とを含み得る。
【0103】
様々な実施形態において、プロバイダネットワーク1200は、格納動作を行うブロックベース格納サービス1220も実施し得る。当実施例において示されるように、ブロックベース格納サービス1220は、1つまたは複数のデータボリューム集合(複数可)1226a、1226b、1226c、〜、1226nを格納するブロックレベル格納を提供する多数の独立格納ノード1224a、1224b、1224c、〜、1224nのプールから成る格納システム(例えばサーバブロックデータ格納システム)であり得る。データボリューム1226は、特定のクライアントにマッピングされ、論理ブロックの連続集合として仮想ブロックベース格納(例えばハードディスク格納または他の持続的格納)を提供し得る。いくつかの実施形態において、スナップショット動作または複製動作等、他のブロック格納動作を実行するために、データボリューム1226は、多数のデータチャンク(1つまたは複数のデータブロックを含む)に分割され得る。データボリューム1226のボリュームスナップショットは、データボリューム1226のステートの特定時点固定表現であり得る。いくつかの実施形態において、ボリュームスナップショット1242は、別の格納サービス1240内等、データボリュームを保持する格納ノード624から遠隔な場所に格納され得る。スナップショット動作は、別の格納サービス1240における遠隔スナップショットデータストア等、別の格納場所における所定のデータボリュームのスナップショットを、送信、コピー、及び/または保存するために行われ得る。
【0104】
ブロックベース格納サービス1220は、ブロックベース格納サービス1220の動作を支援するブロックベース格納サービス制御プレーン1222を実行し得る。様々な実施形態において、ブロックベース格納サービス制御プレーン1222は、プロバイダネットワーク1200内に配置された仮想コンピュートサービス1230及び/または別のネットワークベースサービスにより、並びに/あるいは任意で、1つまたは複数の他のデータセンタ内に配置されたコンピューティングシステム(図示せず)、またはネットワーク1260上で利用可能なプロバイダネットワーク1200外の他のコンピューティングシステムにより、提供されるコンピュートインスタンス上で実行されるプログラム等、クライアントに対するブロックデータ格納の可用性の管理を支援する。データボリューム1226へのアクセスは、ブロックデータトランザクション命令に応じて、プロバイダネットワーク1200内の内部ネットワークを介して、または外部的にネットワーク1260を介して、提供され得る。
【0105】
ブロックベース格納サービス制御プレーン1222は、ユーザアカウントの管理(例えば作成、削除、課金、支払い収集等)を含むブロックレベル格納機能の提供に関連する様々なサービスを提供し得る。ブロックベース格納サービス制御プレーン1222はさらに、構成要求に応じて、データボリューム1226の作成、使用、削除に関連するサービスを提供し得る。ブロックベース格納サービス制御プレーン1222はまた、別の格納サービス1240上のボリュームスナップショット1242の作成、使用、削除に関連するサービスを提供し得る。ブロックベース格納サービス制御プレーン1222はまた、データボリューム1226の使用及びこれらボリュームのスナップショット1242に関する性能及び監査データの収集及び処理に関連するサービスを提供し得る。
【0106】
プロバイダネットワーク1200はまた、前述のように、別の格納サービス1240を実施し得る。別の格納サービス1240は、ブロックベース格納サービス1220により提供される格納と、同じまたは異なる種類の格納を提供し得る。例えば、いくつかの実施形態において、別の格納サービス1240は、データをデータオブジェクトとして格納及び管理し得るオブジェクトベース格納サービスを提供し得る。例えば、様々なデータボリューム1226のボリュームスナップショット1242は、特定のデータボリューム1226のスナップショットオブジェクトとして格納され得る。別の格納サービス1240に加えて、プロバイダネットワーク1200は、別のネットワークベースサービス1250を実施し得る。これには、クライアント1210並びにプロバイダネットワーク1200の他のサービス(例えばブロックベース格納サービス1220、仮想コンピュートサービス1230、及び/または別の格納サービス1240)が、様々なタスクを実行または要求することを可能にする様々な異なる種類の分析、計算、格納、または他のネットワークベースシステムが含まれ得る。
【0107】
クライアント1210は、ネットワークプロバイダ1200に対し要求を提出するように構成可能な任意の種類のクライアントを含み得る。例えば、所定のクライアント1210は、好適バージョンのウェブブラウザを含み得る、またはウェブブラウザが提供する実行環境に対する拡張、もしくは実行環境内の拡張として実行されるように構成されるプラグインモジュールまたは他の種類のコードモジュールを含み得る。あるいは、クライアント1210は、データベースアプリケーション(またはそのユーザインタフェース)、メディアアプリケーション、オフィスアプリケーション、または様々な動作を実行するためにプロバイダネットワーク1200内のコンピュートインスタンス、データボリューム1226、もしくは別のネットワークベースサービスを利用し得るその他のアプリケーションといったアプリケーションを含み得る。いくつかの実施形態において、このようなアプリケーションは、全種類のネットワークベースデータの完全なブラウザサポートを必ずしも実施することなく、ネットワークベースサービス要求を生成及び処理するのに十分なプロトコルサポート(例えば好適バージョンのハイパーテキスト転送プロトコル(HTTP)に対するプロトコルサポート)を含み得る。いくつかの実施形態において、クライアント1210は、レプレゼンテーショナルステートトランスファ(REST)式ネットワークベースサービスアーキテクチャ、ドキュメントもしくはメッセージベースのネットワークベースサービスアーキテクチャ、または別の好適なネットワークベースサービスアーキテクチャに従って、ネットワークベースサービス要求を生成するように構成され得る。いくつかの実施形態において、クライアント1210(例えば計算クライアント)は、コンピュートインスタンスが提供する計算リソースまたはデータボリューム1226が提供するブロック格納を使用するクライアント1210上で実施されるアプリケーションに明白な方法で、コンピュートインスタンスまたはデータボリューム1226へのアクセスを提供するように構成され得る。
【0108】
クライアント1210は、外部ネットワーク1260を介して、プロバイダネットワーク1200にネットワークベースサービス要求を伝達し得る。様々な実施形態において、外部ネットワーク1260は、クライアント1210とプロバイダネットワーク1200との間のネットワークベース通信を確立するために必要なネットワークハードウェア及びプロトコルの任意の好適な組み合わせを含み得る。例えば、ネットワーク1260は一般に、共同してインターネットを実施する様々な電気通信ネットワーク及びサービスプロバイダを含み得る。ネットワーク1260はまた、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)等のプライベートネットワーク、並びにパブリックまたはプライベート無線ネットワークを含み得る。例えば、自身の内部ネットワークを有する企業内に、所定のクライアント1210及びプロバイダネットワーク1200の両者がそれぞれプロビジョニングされ得る。このような実施形態において、ネットワーク1260は、所定のクライアント1210とインターネットとの間、並びにインターネットとプロバイダネットワーク1200との間のネットワークリンクを確立するために必要なハードウェア(例えばモデム、ルータ、スイッチ、ロードバランサ、プロキシサーバ等)及びソフトウェア(例えばプロトコルスタック、会計ソフトウェア、ファイアウォール/セキュリティソフトウェア等)を含み得る。いくつかの実施形態において、クライアント1210は、パブリックインターネットではなくプライベートネットワークを使用して、プロバイダネットワーク1200と通信し得ることに留意されたい。
【0109】
いくつかの実施形態において、
図12において例示されるようなブロックベース格納サービス(及びその基礎ブロックベース格納システム)により、顧客は、格納ボリュームを作成し、それらを、分散コンピューティングシステム内のコンピュートノードクラスタのコンピュートノードを実施するインスタンスを含む仮想化コンピューティングリソースインスタンスに配属させることが、可能になり得る。一旦このような格納ボリュームが配属されると、顧客は、これらのボリュームの上部でファイルシステムを作成し得る、これらのボリュームにアプリケーションまたはデータをロードし得る、これらのボリュームに対しデータベースを実行し得る、あるいは一般に顧客がブロックデバイスを使用し得る任意の方法でこれらのボリュームを使用し得る。いくつかの実施形態において、格納ボリュームは、特定のデータセンタ、可用性ゾーン、または領域内に配置され、いずれか1つのコンポーネントの障害から顧客のデータを守るために、格納ボリュームは自動で複製され得る。
【0110】
当実施例において、ブロックベース格納サービス制御プレーン1222、または仮想コンピュートサービス1230、格納サービス1240(複数可)、もしくは別のサービス1250(複数可)の制御プレーンのうちの1つまたは複数は、クラスタ自動スケーリングを実施するために監視コンポーネント及び/または規則エンジンを含み得る、あるいはクラスタ自動スケーリング(本明細書において説明される)は、プロバイダネットワーク1200上の別個のサービスとして実施され得る(図示せず)。いくつかの実施形態において、ブロックベース格納サービス1220、仮想コンピュートサービス1230、格納サービス1240(複数可)、及び/または別のサービス1250(複数可)は、このような外部自動スケーリングサービスのクライアントであり得る。
【0111】
いくつかの実施形態において、サービスプロバイダは、多数の種類の格納ボリュームを提供し、各種類は異なる機能及び/または性能特性を有する。いくつかの実施形態において、ブロックベース格納サービスにより、顧客は、特定時間スナップショットを作成し、それらを使用して新たなボリュームをインスタンス化することが可能となり得る。このようなスナップショットは、例えば、地理的拡張、データセンタ移行、及び/または障害復旧のために使用され得る。ブロックベース格納サービスはまた、格納ボリュームの性能メトリクス(帯域幅、処理能力、待ち時間、及び待ち行列の長さ等)へのアクセスを提供し得る。これら及び他のメトリクスは、監視ツールのAPIを通して、あるいはGUI、コマンドライン、またはブロックベース格納サービスの他のインタフェースを通して、アクセス可能であり得る。
【0112】
本明細書において説明されるシステムのいくつかの実施形態において、顧客に格納及びコンピューティングサービスを提供する分散コンピューティングシステムは、顧客が、収集対象のカスタムメトリクスを定義し、これらのメトリクスに依拠するカスタム自動スケーリングポリシーを定義し、及び/またはこれらのポリシーが適用されるべきクラスタ内のインスタンスグループの特定部分集合を指示することを、明示的に可能にするAPIを公開し得る。
【0113】
少なくともいくつかの実施形態において、本明細書において説明されるデータストアは、非構造化オブジェクト格納サービス上に構築されたHadoop(登録商標)ファイルシステムAPIの実施態様であり得る。分散コンピューティングシステム内の自動スケーリングクラスタに関する技術の多数の実施形態が、Apache(商標)Hadoop(登録商標)フレームワーク上に構築されたMapReduceシステム及びサービスの具体的な実施態様に関して説明されるが、別の実施形態において、これらの技術は、MapReduceの他の実施態様上または他の種類のクラスタベース分散コンピューティングフレームワークにおいて、クラスタの自動スケーリングを実行するために適用され、他の種類のクラスタベース分散コンピューティングフレームワークのうちの一部(全てではない)は、マスタコンピュートノード及びワーカ(すなわちスレーブ)コンピュートノードを含み得ることにも留意されたい。
【0114】
いくつかの実施形態において、本明細書において説明されるメタデータ、データアイテム、及び/またはオブジェクトのうちの少なくともいくつかは、ソリッドステートドライブ(SSD)上に格納され得る。いくつかの実施形態において、メタデータ、データアイテム、及び/またはオブジェクトのうちの少なくともいくつかは、高可用性及び永続性のために、例えば3つの場所にわたって、複製され得る。
【0115】
例示的プロバイダネットワーク環境
本節は、本明細書において説明される方法及び装置(例えばMapReduceクラスタ上でアプリケーションを実行する際採用される方法及び装置)の実施形態が実施され得る例示的プロバイダネットワーク環境を説明する。しかしながら、これらの例示的プロバイダネットワーク環境に、限定的意図はない。
【0116】
図13は、少なくともいくつかの実施形態による、例示的プロバイダネットワーク環境を示す。プロバイダネットワーク1300は、1つまたは複数の仮想化サービス1310を介して、クライアントにリソース仮想化を提供し得る。1つまたは複数の仮想化サービス1310により、クライアントは、1つまたは複数のデータセンタにおけるプロバイダネットワーク(複数可)内のデバイス上で実施される計算及び格納リソースを非限定的に含む仮想化リソースのインスタンス1312を、購入、レンタル、あるいは取得することが可能となる。プライベートIPアドレス1316は、リソースインスタンス1312に対応付けられ、プライベートIPアドレスは、プロバイダネットワーク1300上のリソースインスタンス1312の内部ネットワークアドレスである。いくつかの実施形態において、プロバイダネットワーク1300はまた、クライアントがプロバイダ1300から取得し得るパブリックIPアドレス1314及び/またはパブリックIPアドレス範囲(例えばインターネットプロトコルバージョン4(IPv4)もしくはインターネットプロトコルバージョン6(IPv6)アドレス)を提供し得る。
【0117】
従来、プロバイダネットワーク1300は、仮想化サービス1310を介して、サービスプロバイダのクライアント(例えばクライアントネットワーク1350Aを操作するクライアント)が、クライアントに割り当てまたは配分された少なくともいくつかのパブリックIPアドレス1314を、クライアントに割り当てられた特定のリソースインスタンス1312に、動的に対応付けることを可能にし得る。プロバイダネットワーク1300はまた、クライアントが、クライアントに配分された1つの仮想化コンピューティングリソースインスタンス1312に以前マッピングされていたパブリックIPアドレス1314を、クライアントに同様に配分された別の仮想化コンピューティングリソースインスタンス1312に再マッピングすることを可能にし得る。サービスプロバイダにより提供される仮想化コンピューティングリソースインスタンス1312及びIPアドレス1314を使用して、クライアントネットワーク1350Aのオペレータ等のサービスプロバイダのクライアントは、例えば、クライアント特有アプリケーションを実行し、インターネット等の中間ネットワーク1340上でクライアントのアプリケーションを示し得る。中間ネットワーク1340上の別のネットワークエンティティ1320はそれから、クライアントネットワーク1350Aにより発行された宛先パブリックIPアドレス1314へのトラフィックを生成し得る。トラフィックは、サービスプロバイダデータセンタへルーティングされ、データセンタにて、ネットワーク基板を介して、宛先パブリックIPアドレス1314へ現在マッピングされている仮想化コンピューティングリソースインスタンス1312のプライベートIPアドレス1316へルーティングされる。同様に、仮想化コンピューティングリソースインスタンス1312からの応答トラフィックは、ネットワーク基板を介して、中間ネットワーク1340上へ戻って発信元エンティティ1320へルーティングされ得る。
【0118】
図13に監視コンポーネントまたは自動スケーリング規則エンジンは図示されないが、このようなコンポーネントは、いくつかの実施形態において、仮想化サービス1310の制御プレーン内で実施され得ることに留意されたい。別の実施形態において、このようなコンポーネントは、プロバイダネットワーク1300上の別個の自動スケーリングサービスの一環として実施され、仮想化サービス1310は、このようなサービスのクライアントであり得る。
【0119】
本明細書において使用されるプライベートIPアドレスは、プロバイダネットワーク内のリソースインスタンスの内部ネットワークアドレスを指す。プライベートIPアドレスは、プロバイダネットワーク内のみルーティング可能である。プロバイダネットワークの外側から生じるネットワークトラフィックは、直接プライベートIPアドレスへルーティングされず、代わりに、トラフィックは、リソースインスタンスへマッピングされたパブリックIPアドレスを利用する。プロバイダネットワークは、パブリックIPアドレスからプライベートIPアドレスへのマッピング、及びその反対のマッピングを実行するために、ネットワークアドレス変換(NAT)または同様の機能を提供するネットワークデバイスまたはアプライアンスを含み得る。
【0120】
本明細書において使用されるパブリックIPアドレスは、サービスプロバイダにより、またはクライアントにより、リソースインスタンスに割り当てられたインターネットルーティング可能ネットワークアドレスである。パブリックIPアドレスへルーティングされたトラフィックは、例えば1対1ネットワークアドレス変換(NAT)を介して変換され、リソースインスタンス各自のプライベートIPアドレスへ転送される。
【0121】
いくつかのパブリックIPアドレスは、プロバイダネットワークインフラストラクチャにより、特定のリソースインスタンスに割り当てられ得る。これらのパブリックIPアドレスは、標準パブリックIPアドレス、または単純に標準IPアドレスと称され得る。少なくともいくつかの実施形態において、標準IPアドレスをリソースインスタンスのプライベートIPアドレスにマッピングすることは、全リソースインスタンス種類に対するデフォルトの起動構成である。
【0122】
少なくともいくつかのパブリックIPアドレスは、プロバイダネットワーク1300のクライアント(例えばエンドユーザ、サービス加入者、またはサービスの顧客である第三者サービスが、サービスと対話する手段であるクライアントアプリケーション)に対し配分され得る、あるいはクライアントにより取得され得る。クライアントはそれから、自身の配分されたパブリックIPアドレスを、クライアントに配分された特定のリソースインスタンスに割り当て得る。これらのパブリックIPアドレスは、クライアントパブリックIPアドレス、または単純にクライアントIPアドレスと称され得る。標準IPアドレスの事例のように、プロバイダネットワーク1300によりリソースインスタンスに割り当てられる代わりに、クライアントIPアドレスは、例えばサービスプロバイダにより提供されるAPIを介して、クライアントによりリソースインスタンスに割り当てられ得る。標準IPアドレスと異なり、クライアントIPアドレスはクライアントアカウント(例えば顧客アカウント)に配分され、必要または所望に応じて、それぞれのクライアントにより他のリソースインスタンスに再マッピング可能である。クライアントIPアドレスは、特定のリソースインスタンスではなく、クライアントのアカウントに対応付けられ、クライアントがそのIPアドレスを解除することを選択するまで、クライアントはそのIPアドレスを制御する。従来の固定IPアドレスと異なり、クライアントIPアドレスは、クライアントが、クライアントのパブリックIPアドレスを、クライアントのアカウントに対応付けられた任意のリソースインスタンスに再マッピングすることにより、リソースインスタンスまたは可用性ゾーンの障害をマスクすることを可能にする。クライアントIPアドレスは、例えば、クライアントが、クライアントIPアドレスを置換リソースインスタンスに再マッピングすることにより、クライアントのリソースインスタンスまたはソフトウェアに関する問題を処理することを可能にする。
【0123】
図14は、少なくともいくつかの実施形態による、IPトンネリング技術を使用してネットワーク基板上でオーバーレイネットワークを実施する例示的データセンタを示す。プロバイダデータセンタ1400は、ルータ、スイッチ、ネットワークアドレス変換(NAT)等のネットワークデバイス1412を含むネットワーク基板を含み得る。少なくともいくつかの実施形態は、オーバーレイネットワークを提供するインターネットプロトコル(IP)トンネリング技術を採用し、オーバーレイネットワークを介して、カプセル化パケットはトンネルを使用してネットワーク基板1410を通され得る。IPトンネリング技術は、ネットワーク(例えば
図14のデータセンタ1400におけるローカルネットワーク)上でオーバーレイネットワークを作成するマッピング及びカプセル化システムを提供し、オーバーレイ層(パブリックIPアドレス)及びネットワーク基板1410層(プライベートIPアドレス)に別個のネームスペースを提供し得る。オーバーレイ層におけるパケットは、それらのトンネル基板対象(プライベートIPアドレス)が何であるべきかを特定するために、マッピングディレクトリ(例えばマッピングサービス1430により提供)と照合され得る。IPトンネリング技術は、仮想ネットワークトポロジー(オーバーレイネットワーク)を提供し、クライアントに提示されるインタフェース(例えばサービスAPI)は、オーバーレイネットワークに配属されているため、クライアントがパケットを送りたいIPアドレスを提供する時、IPオーバーレイアドレスがどこかを知るマッピングサービス(例えばマッピングサービス1430)と通信することにより、IPアドレスは仮想空間において実行される。
【0124】
少なくともいくつかの実施形態において、IPトンネリング技術は、IPオーバーレイアドレス(パブリックIPアドレス)を基板IPアドレス(プライベートIPアドレス)にマッピングし、2つのネームスペース間のトンネルにおいてパケットをカプセル化し、カプセル化がパケットから取り除かれる正しいエンドポイントへトンネルを介してパケットを届け得る。
図14において、ホスト1420A上の仮想マシン(VM)1424Aから中間ネットワーク1440上のデバイスへの例示的オーバーレイネットワークトンネル1434A(エッジルータ1414を通過)、並びにホスト1420B上のVM1424Bとホスト1420C上のVM1424Cとの間の例示的オーバーレイネットワークトンネル1434Bが、表示される。いくつかの実施形態において、パケットは、送信前にオーバーレイネットワークパケット形式にカプセル化され、オーバーレイネットワークパケットは、受信後に取り除かれ得る。別の実施形態において、オーバーレイネットワークパケットにパケットをカプセル化する代わりに、送信前にオーバーレイネットワークアドレス(パブリックIPアドレス)がパケットの基板アドレス(プライベートIPアドレス)に埋め込まれ、受信の際にパケットアドレスから取り除かれ得る。実施例として、オーバーレイネットワークは、パブリックIPアドレスとして32ビットIPv4(インターネットプロトコルバージョン4)アドレスを使用して実施され、IPv4アドレスは、プライベートIPアドレスとして基板ネットワーク上で使用される128ビットIPv6(インターネットプロトコルバージョン6)の一部として埋め込まれ得る。いくつかの実施形態において、
図14に例示されるようなIPトンネリング技術は、本明細書において説明されるクラスタ自動スケーリングを実施するアプリケーションをMapReduceクラスタ上で実行する時に、採用され得る。
【0125】
図14を参照すると、実施形態が実行され得る少なくともいくつかのネットワークは、多数のオペレーティングシステムがホストコンピュータ(例えば
図14のホスト1420A及び1420B)上で同時に実行される、すなわちホスト1420上の仮想マシン(VM)1424として実行されることを可能にするハードウェア仮想化技術を含み得る。VM1424は、例えば、ネットワークプロバイダのクライアントにレンタルまたはリースされ得る。ホスト1420上のハイパーバイザ、すなわち仮想マシンモニタ(VMM)1422は、仮想プラットフォームによりホスト上のVM1424を提示し、VM1424の実行を監視する。各VM1424には、1つまたは複数のプライベートIPアドレスが提供され得る。ホスト1420上のVMM1422は、ホスト上のVM1424のプライベートIPアドレスを認識し得る。マッピングサービス1430は、全てのネットワークIPプレフィックス、並びにルータまたはローカルネットワーク上でIPアドレスを供給する他のデバイスのIPアドレスを、認識し得る。これには、多数のVM1424を供給するVMM1422のIPアドレスが含まれる。マッピングサービス1430は、例えばサーバシステム上で集中化され得る、またはネットワーク上の2つ以上のサーバシステムもしくは他のデバイス間で分散され得る。ネットワークは、例えば、マッピングサービス技術及びIPトンネリング技術を使用して、例えばデータセンタ1400のネットワーク内で異なるホスト1420上のVM1424間でデータパケットをルーティングし得る。このようなローカルネットワーク内のルーティング情報を交換するために、内部ゲートウェイプロトコル(IGP)が使用され得ることに留意されたい。
【0126】
加えて、プロバイダデータセンタ1400のネットワーク等のネットワーク(時に自律システム(AS)と称される)は、マッピングサービス技術、IPトンネリング技術、及びルーティングサービス技術を使用して、VM1424からインターネット発信先へ、及びインターネット発信元からVM1424へ、パケットをルーティングし得る。外部ゲートウェイプロトコル(EGP)または境界ゲートウェイプロトコル(BGP)は通常、インターネット上の発信元と発信先との間のインターネットルーティングに使用されることに留意されたい。
図14は、少なくともいくつかの実施形態による、リソース仮想化技術を提供し、かつインターネットトランジットプロバイダに接続するエッジルータ1414(複数可)を介して完全なインターネットアクセスを提供するネットワークを実施する例示的プロバイダデータセンタ1400を示す。プロバイダデータセンタ1400は、例えばクライアントに、ハードウェア仮想化サービスを介して仮想コンピューティングシステム(VM1424)を実行する能力、並びに格納仮想化サービスを介して格納リソース1418上の仮想化データストア1416を実行する能力を、提供し得る。様々な実施形態において、仮想化データストア1416の格納1418は、本明細書において説明されるように、オブジェクト格納、ブロックベース格納、及び/またはボリュームベース格納を含み得ることに留意されたい。
【0127】
データセンタ1400のネットワークは、IPトンネリング技術、マッピングサービス技術、及びルーティングサービス技術を実施して、仮想化リソースへ及び仮想化リソースからのトラフィックをルーティングし得る、例えばデータセンタ1400内のホスト1420上のVM1424からインターネット発信先へ、及びインターネット発信元からVM1424へ、パケットをルーティングし得る。インターネット発信元及び発信先は、例えば、中間ネットワーク1440に接続されたコンピューティングシステム1470と、中間ネットワーク1440に接続するローカルネットワーク1450に接続されたコンピューティングシステム1452(例えばネットワーク1450をインターネットトランジットプロバイダに接続するエッジルータ1414(複数可)を介して)とを含み得る。プロバイダデータセンタ1400のネットワークはまた、データセンタ1400内のリソース間、例えばデータセンタ1400内のホスト1420上のVM1424からデータセンタ1400内の同じホスト上または他のホスト1420上の他のVM1424へ、パケットをルーティングし得る。
【0128】
データセンタ1400を提供するサービスプロバイダはまた、データセンタ1400と同様のハードウェア仮想化技術を含み、かつ中間ネットワーク1440にやはり接続され得る追加データセンタ1460(複数可)を提供し得る。パケットは、データセンタ1400から他のデータセンタ1460へ、例えばデータセンタ1400内のホスト1420上のVM1424から別の同様のデータセンタ1460内の別のホスト上の別のVMへ、及びその反対方向に、転送され得る。
【0129】
多数のオペレーティングシステムが、ネットワークプロバイダのクライアントにレンタルまたはリースされ得るホスト上の仮想マシン(VM)として、ホストコンピュータ上で同時に実行されることを可能にするハードウェア仮想化技術が前に説明されるが、ハードウェア仮想化技術はまた、他のコンピューティングリソース、例えば格納リソース1418を、ネットワークプロバイダのクライアントへ仮想化リソースとして同様に提供するために、使用され得る。
【0130】
図14に例示されるように、いくつかの実施形態において、プロバイダデータセンタ1400は、監視サービス1480、及び/またはクラスタ自動スケーリングエンジン1485を含み得る。例えば、いくつかの実施形態において、監視サービス1480は、自動スケーリングトリガ条件を表す式において使用されるメトリクスを収集及び分析するように構成され得る、またはこのようなメトリクスを収集して、それらを分析のために別個の自動スケーリング規則エンジンへ渡し、その後、自動スケーリング規則エンジンが、自動スケーリング行動を実行する必要があるか否か、及び必要がある時を決定し得る(図示せず)。いくつかの実施形態において、プロバイダデータセンタ1400により提供される分散コンピューティングサービスは、監視サービス1480のクライアントであり得る。いくつかの実施形態において、クラスタ自動スケーリングエンジン1485は、本明細書において説明される自動スケーリング技術のうちのいずれかを使用して特定される任意の自動スケーリング行動を実行するように構成され得る。いくつかの実施形態において、自動スケーリング規則エンジンは、監視サービス1480内ではなく、クラスタ自動スケーリングエンジン1485内で実施され得る。
【0131】
図15は、少なくともいくつかの実施形態による、格納仮想化サービス及びハードウェア仮想化サービスをクライアントに提供する例示的プロバイダネットワークのブロック図である。ハードウェア仮想化サービス1520は、多数の計算リソース1524(例えばVM)をクライアントに提供する。計算リソース1524は、例えば、プロバイダネットワーク1500のクライアントに(例えばクライアントネットワーク1550を実施するクライアントに)レンタルまたはリースされ得る。各計算リソース1524には、1つまたは複数のプライベートIPアドレスが提供され得る。プロバイダネットワーク1500は、計算リソース1524のプライベートIPアドレスからパブリックインターネット発信先へ、及びパブリックインターネット発信元から計算リソース1524へ、パケットをルーティングするように構成され得る。
【0132】
プロバイダネットワーク1500は、例えばローカルネットワーク1556を介して中間ネットワーク1540に接続されたクライアントネットワーク1550に、中間ネットワーク1540に、及びプロバイダネットワーク1500に接続されたハードウェア仮想化サービス1520を介して、仮想コンピューティングシステム1592を実行する能力を提供し得る。いくつかの実施形態において、ハードウェア仮想化サービス1520は、1つまたは複数のAPI1502、例えばウェブサービスインタフェースを提供し、これを介して、クライアントネットワーク1550は、例えばコンソール1594を用いて、ハードウェア仮想化サービス1520により提供される機能にアクセスし得る。少なくともいくつかの実施形態において、クライアントネットワーク1550の各仮想コンピューティングシステム1592は、プロバイダネットワーク1500にて、クライアントネットワーク1550にリース、レンタル、あるいは提供される計算リソース1524に対応し得る。
【0133】
仮想コンピューティングシステム1592及び/または別のクライアントデバイス1590またはコンソール1594のインスタンスから、クライアントは、例えば1つまたは複数のAPI1502を介して、格納仮想化サービス1510の機能にアクセスして、プロバイダネットワーク1500により提供される仮想化データストア1516に対しデータアクセス及びデータ格納を行い得る。いくつかの実施形態において、仮想化データストアゲートウェイ(図示せず)は、クライアントネットワーク1550にて提供され、仮想化データストアゲートウェイは、少なくともあるデータ、例えば頻繁にアクセスされるまたは重要なデータを、ローカルにキャッシュし、かつデータの1次ストア(仮想化データストア1516)が維持されるようローカルキャッシュから新たなデータまたは修正データをアップロードするために、1つまたは複数の通信チャンネルを介して仮想化データストアサービス1510と通信し得る。少なくともいくつかの実施形態において、仮想コンピューティングシステム1592を介して及び/または別のクライアントデバイス1590上で、ユーザは、ローカル仮想化格納1598とユーザに映る仮想化データストア1516のボリュームを、搭載しアクセスし得る。様々な実施形態において、仮想化データストア1516の格納1518は、本明細書において説明されるように、オブジェクト格納、ブロックベース格納、及び/またはボリュームベース格納を含み得ることに留意されたい。
【0134】
図15に図示されないが、仮想化サービス(複数可)はまた、API1502(複数可)を介してプロバイダネットワーク1500内のリソースインスタンスからもアクセスされ得る。例えば、クライアント、アプライアンスサービスプロバイダ、または他のエンティティは、API1502を介してプロバイダネットワーク1500上の各自のプライベートネットワーク内からの仮想化サービスにアクセスして、プライベートネットワーク内または別のプライベートネットワーク内の1つまたは複数のリソースインスタンスの配分を要求し得る。
【0135】
図15に監視コンポーネントまたは自動スケーリング規則エンジンは図示されないが、このようなコンポーネントは、いくつかの実施形態において、格納仮想化サービス1510及び/またはハードウェア仮想化サービス1520の制御プレーン内で実施され得ることに留意されたい。別の実施形態において、このようなコンポーネントは、プロバイダネットワーク1500上の別個の自動スケーリングサービスの一環として実施され、仮想化サービス1510及び/または1520は、このようなサービスのクライアントであり得る。
【0136】
図16は、少なくともいくつかの実施形態による、プロバイダネットワーク上のプライベートネットワークを少なくともいくつかのクライアントに提供する例示的プロバイダネットワークを示す。プロバイダネットワーク1600上のクライアントの仮想化プライベートネットワーク1660により、例えばクライアントは、クライアントネットワーク1650上の自身の既存のインフラストラクチャ(例えばデバイス1652)を、論理的に分離されたリソースインスタンスの集合(例えばVM1624A及び1624B並びに格納1618A及び1618B)に接続すること、並びに自身のリソースインスタンスを含めるために、セキュリティサービス、ファイアウォール、及び侵入検出システム等の管理能力を拡張することが、可能になる。
【0137】
クライアントの仮想化プライベートネットワーク1660は、プライベート通信チャンネル1642を介して、クライアントネットワーク1650に接続され得る。プライベート通信チャンネル1642は、例えば、ネットワークトンネリング技術に従って実施されるトンネル、または中間ネットワーク1640によるその他のピアリング接続であり得る。中間ネットワークは、例えば、共有ネットワーク、またはインターネット等のパブリックネットワークであり得る。あるいは、プライベート通信チャンネル1642は、仮想化プライベートネットワーク1660とクライアントネットワーク1650との間の直接専用接続で実施され得る。
【0138】
パブリックネットワークは、複数のエンティティに対するオープンアクセス、及び複数のエンティティ間の相互接続を提供するネットワークとして広く定義され得る。インターネット、すなわちWorld Wide Web(WWW)は、パブリックネットワークの実施例である。共有ネットワークは、アクセスが一般に制限されないパブリックネットワークと対照的に、アクセスが2つ以上のエンティティに制限されるネットワークとして広く定義され得る。共有ネットワークは、例えば、1つまたは複数のローカルエリアネットワーク(LAN)及び/またはデータセンタネットワーク、あるいは広域ネットワーク(WAN)を形成するために相互接続された2つ以上のLANまたはデータセンタネットワークを含み得る。共有ネットワークの実施例には、企業ネットワーク及び他のエンタープライズネットワークが非限定的に含まれ得る。共有ネットワークは、ローカルエリアを対象とするネットワークからグローバルネットワークまでの範囲内のどこにでも存在し得る。共有ネットワークは、少なくともあるネットワークインフラストラクチャをパブリックネットワークと共有し、その上、共有ネットワークは、パブリックネットワークを含み得る1つまたは複数の他のネットワークに、他のネットワーク(複数可)と共有ネットワークとの間に制御アクセスを伴って、接続され得ることに留意されたい。共有ネットワークはまた、インターネット等のパブリックネットワークと対照的に、プライベートネットワークとして見られ得る。実施形態において、共有ネットワークまたはパブリックネットワークは、プロバイダネットワークとクライアントネットワークとの間の中間ネットワークとして機能し得る。
【0139】
プロバイダネットワーク1600上のクライアントの仮想化プライベートネットワーク1660を確立するために、1つまたは複数のリソースインスタンス(例えばVM1624A及び1624B並びに格納1618A及び1618B)が仮想化プライベートネットワーク1660に配分され得る。他のリソースインスタンス(例えば格納1618C及びVM1624C)は、他のクライアントによる使用のために、プロバイダネットワーク1600上で利用可能な状態で残り得ることに留意されたい。ある範囲のパブリックIPアドレスがまた、仮想化プライベートネットワーク1660に配分され得る。加えて、プロバイダネットワーク1600の1つまたは複数のネットワークデバイス(ルータ、スイッチ等)が、仮想化プライベートネットワーク1660に配分され得る。プライベート通信チャンネル1642は、仮想化プライベートネットワーク1660におけるプライベートゲートウェイ1662と、クライアントネットワーク1650におけるゲートウェイ1656との間に確立され得る。
【0140】
少なくともいくつかの実施形態において、プライベートゲートウェイ1662に加えて、またはプライベートゲートウェイ1662の代わりに、仮想化プライベートネットワーク1660は、パブリックゲートウェイ1664を含み、パブリックゲートウェイ1664により、仮想化プライベートネットワーク1660内のリソースは、プライベート通信チャンネル1642を介する代わりに、またはプライベート通信チャンネル1642を介することに加えて、中間ネットワーク1640を介してエンティティ(例えばネットワークエンティティ1644)と直接通信すること、並びにその反対方向の直接通信が可能となる。
【0141】
仮想化プライベートネットワーク1660は、必ずしもではないが、2つ以上のサブネット1670に細分され得る。例えば、プライベートゲートウェイ1662及びパブリックゲートウェイ1664の両者を含む実施態様において、プライベートネットワークは、プライベートゲートウェイ1662を通して到達可能なリソース(当実施例においてはVM1624A及び格納1618A)を含むサブネット1670Aと、パブリックゲートウェイ1664を通して到達可能なリソース(当実施例においてはVM1624B及び格納1618B)を含むサブネット1670Bとに、細分され得る。
【0142】
クライアントは、特定のクライアントパブリックIPアドレスを、仮想化プライベートネットワーク1660内の特定のリソースインスタンスに割り当て得る。中間ネットワーク1640上のネットワークエンティティ1644はそれから、クライアントにより発行されたパブリックIPアドレスへトラフィックを送信し得る。トラフィックは、プロバイダネットワーク1600により、対応付けられたリソースインスタンスにルーティングされる。リソースインスタンスからの返答トラフィックは、プロバイダネットワーク1600により、中間ネットワーク1640上のネットワークエンティティ1644へ戻るようルーティングされる。リソースインスタンスとネットワークエンティティ1644との間のトラフィックをルーティングすることは、リソースインスタンスのパブリックIPアドレスとプライベートIPアドレス間の変換を行うネットワークアドレス変換を必要とし得ることに留意されたい。
【0143】
少なくともいくつかの実施形態により、クライアントは、
図16に例示されるクライアントの仮想化プライベートネットワーク1660内のパブリックIPアドレスを、クライアントの外部ネットワーク1650上のデバイスに再マッピングすることが可能であり得る。パケットが受信されると(例えばネットワークエンティティ1644から)、ネットワーク1600は、パケットにより示される宛先IPアドレスが外部ネットワーク1650上のエンドポイントに再マッピングされたことを特定し、各エンドポイントへのパケットのルーティングを、プライベート通信チャンネル1642を介して、または中間ネットワーク1640を介して、処理し得る。応答トラフィックは、プロバイダネットワーク1600を通して、エンドポイントからネットワークエンティティ1644へルーティングされ得る、またはクライアントネットワーク1650により、ネットワークエンティティ1644へ直接ルーティングされ得る。ネットワークエンティティ1644の観点からは、ネットワークエンティティ1644がプロバイダネットワーク1600上のクライアントのパブリックIPアドレスと通信しているように映る。しかしながら、ネットワークエンティティ1644は実際には、クライアントネットワーク1650上のエンドポイントと通信したのである。
【0144】
図16が中間ネットワーク1640上で、プロバイダネットワーク1600の外部に存在するネットワークエンティティ1644を示すが、ネットワークエンティティは、プロバイダネットワーク1600上のエンティティであり得る。例えば、プロバイダネットワーク1600により提供されるリソースインスタンスのうちの1つは、クライアントにより発行されたパブリックIPアドレスにトラフィックを送るネットワークエンティティであり得る。
【0145】
図16に監視コンポーネントまたは自動スケーリング規則エンジンは図示されないが、このようなコンポーネントは、いくつかの実施形態において、格納仮想化サービス1630及び/またはハードウェア仮想化サービス1635の制御プレーン内で実施され得ることに留意されたい。別の実施形態において、このようなコンポーネントは、プロバイダネットワーク1600上の別個の自動スケーリングサービスの一環として実施され、仮想化サービス1630及び/または1635は、このようなサービスのクライアントであり得る。
【0146】
例示的コンピュータシステム
少なくともいくつかの実施形態において、本明細書において説明される方法及び装置の一部または全てを実施するコンピューティング環境は、1つまたは複数のコンピュータアクセス可能媒体を含む、またはそのような媒体にアクセスするように構成される汎用コンピュータシステム、例えば
図17において例示されるコンピュータシステム1700等を含み得る。例えば、様々な実施形態において、コンピュータシステム1700は、分散計算システム(例えばMapReduceクラスタ)のマスタノードまたはワーカノード、あるいはオブジェクト格納サービス、ブロックベース格納サービス、もしくはボリュームベース格納サービスのノード、あるいはクラスタ自動スケーリングを実施するサービスプロバイダシステム、クライアントコンピューティングシステム、もしくは本明細書において説明される方法及び装置を実施するために採用され得るその他の種類のコンピュータシステム上のコンピューティングノードを、表し得る。例示される実施形態において、コンピュータシステム1700は、入出力(I/O)インタフェース1730を介してシステムメモリ1720に接続された1つまたは複数のプロセッサ1710を含む。コンピュータシステム1700はさらに、I/Oインタフェース1730に接続されたネットワークインタフェース1740を含む。
【0147】
様々な実施形態において、コンピュータシステム1700は、1つのプロセッサ1710を含むユニプロセッサシステム、またはいくつか(例えば2つ、4つ、8つ、もしくは別の好適な個数)のプロセッサ1710を含むマルチプロセッサシステムであり得る。プロセッサ1710は、命令を実行可能な任意の好適なプロセッサであり得る。例えば、様々な実施形態において、プロセッサ1710は、様々な命令集合アーキテクチャ(ISA)、例えばx86、PowerPC、SPARC、もしくはMIPS ISA、またはその他の好適なISA等のうちのいずれかを実行する汎用または組み込みプロセッサであり得る。マルチプロセッサシステムにおいて、それぞれのプロセッサ1710は通常、必ずしもではないが、同一のISAを実行し得る。
【0148】
システムメモリ1720は、プロセッサ1710(複数可)によりアクセス可能な命令及びデータを格納するように構成され得る。様々な実施形態において、システムメモリ1720は、静的ランダムアクセスメモリ(SRAM)、同期式動的RAM(SDRAM)、不揮発性/フラッシュ型メモリ、またはその他の種類のメモリ等、任意の好適なメモリ技術を使用して実行され得る。例示される実施形態において、本明細書において説明される方法及び装置に関して前述された方法、技術、及びデータ等、1つまたは複数の所望する機能を実行するプログラム命令及びデータは、システムメモリ1720内にコード1725及びデータ1726として格納されていることが示される。例えば、様々な時点で、システムメモリ1720におけるデータ1726には、HPCアプリケーションもしくは計算(例えばMapReduceアプリケーション)により処理予定のデータ集合(もしくはその部分)、このようなアプリケーションにより生成される出力データ、MapReduceジョブのキーペア、ホストファイル、ランクファイル、または構成もしくは作動パラメータ、あるいはこのようなアプリケーションを実行する時に使用可能なその他の情報、以上のうちの1つまたは複数が含まれ得る。別の実施例において、様々な時点で、システムメモリ1720におけるコード1725には、MapReduceアプリケーション(またはそのいずれか一部)を実施するように実行可能なプログラム命令、オペレーティングシステムもしくは仮想マシンモニタ、ライブラリもしくはユーティリティ機能、APIもしくはサービスインタフェース、または本明細書において説明される方法を実行するように実行可能なその他のプログラム命令が、含まれ得る。
【0149】
一実施形態において、I/Oインタフェース1730は、プロセッサ1710と、システムメモリ1720と、ネットワークインタフェース1740または他の周辺インタフェースを含むデバイス内の任意の周辺デバイスとの間のI/Oトラフィックを調整するように構成され得る。いくつかの実施形態において、I/Oインタフェース1730は、1つのコンポーネント(例えばシステムメモリ1720)からのデータ信号を、別のコンポーネント(例えばプロセッサ1710)が使用する好適な形式に変換するために、任意の必要なプロトコル変換、タイミング変換、または他のデータ変換を実行し得る。いくつかの実施形態において、I/Oインタフェース1730は、例えば周辺構成要素相互接続(PCI)バス規格または汎用シリアルバス(USB)規格の変形等、様々な種類の周辺バスを通して取り付けられるデバイスの対応を含み得る。いくつかの実施形態において、I/Oインタフェース1730の機能は、例えばノースブリッジとサウスブリッジといった2つ以上の別個のコンポーネントに分割され得る。また、いくつかの実施形態において、システムメモリ1720へのインタフェースといったI/Oインタフェース1730の機能の一部または全ては、プロセッサ1710に直接組み込まれ得る。
【0150】
ネットワークインタフェース1740は、コンピュータシステム1700と、ネットワーク1750(複数可)に接続される他のデバイス1760との間で、データ交換を可能にするように構成され得る。他のデバイス1760には、例えば
図1〜16において例示及び説明される他のコンピュータシステム(例えばコンピュータシステム1700と同様のコンピュータシステム、またはコンピューティングシステム1700よりも多い、少ない、もしくは異なるコンポーネントを含むコンピュータシステム)またはデバイス等がある。例えば、いくつかの実施形態において、コンピュータシステム1700は、本明細書において説明されるように、自動スケーリングを実施するクラスタベースDCS(例えばMapReduceクラスタ)のノードを表し、ネットワークインタフェース1740は、コンピュータシステム1700と、オブジェクト格納サービス、ブロックベース格納サービス、またはボリュームベース格納サービスを実施するデバイスとの間で、データ交換を可能にするように構成され得る。様々な実施形態において、ネットワークインタフェース1740は、例えばイーサネット(登録商標)ネットワーク類等、任意の好適な有線または無線汎用データネットワークを介した通信に対応し得る。加えて、ネットワークインタフェース1740は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワーク等の電気通信/電話ネットワークを介した、またはファイバチャネルSAN等の格納エリアネットワークを介した、またはその他の好適な種類のネットワーク及び/もしくはプロトコルを介した通信に対応し得る。
【0151】
いくつかの実施形態において、システムメモリ1720は、本明細書において説明される方法及び装置の実施形態を実行するよう
図1〜16に関して前述されたプログラム命令及びデータを格納するように構成されるコンピュータアクセス可能媒体の一実施形態であり得る。しかしながら、別の実施形態において、プログラム命令及び/またはデータは、異なる種類のコンピュータアクセス可能媒体上で受信、送信、または格納され得る。一般に、コンピュータアクセス可能媒体には、例えばI/Oインタフェース1730を介してコンピュータシステム1700に接続されるディスクまたはDVD/CDといった磁気媒体または光学媒体等の非一時的記憶媒体またはメモリ媒体が含まれ得る。非一時的コンピュータアクセス可能記憶媒体には、RAM(例えばSDRAM、DDR、SDRAM、RDRAM、SRAM等)、ROM等、コンピュータシステム1700のいくつかの実施形態にシステムメモリ1720または別の種類のメモリとして含まれ得る任意の揮発性または不揮発性媒体も含まれ得る。さらに、コンピュータアクセス可能媒体は、ネットワークインタフェース1740を介して実施され得るように、ネットワーク及び/または無線リンク等の通信媒体を介して伝達される伝送媒体すなわち電気、電磁、もしくはデジタル信号等の信号を含み得る。
【0152】
様々な実施形態はさらに、コンピュータアクセス可能媒体に関する前述の説明に従って実行される命令及び/またはデータの受信、送信、または格納処理を含み得る。一般に、コンピュータアクセス可能媒体には、例えばディスクまたはDVD/CD‐ROM等の磁気媒体または光学媒体、及びRAM(例えばSDRAM、DDR、RDRAM、SRAM等)、ROM等の揮発性または不揮発性媒体といった記憶媒体またはメモリ媒体、並びに、ネットワーク及び/または無線リンク等のコミュニケーション媒体を介して伝達される伝送媒体すなわち電気、電磁もしくはデジタル信号等の信号が、含まれ得る。
【0153】
本開示の実施形態は、以下の条項を考慮して説明され得る。
1.少なくとも1つのプロセッサ及びメモリをそれぞれが備える複数のコンピュートノードと、
インタフェースと
を備える分散コンピューティングシステムであって、
前記分散コンピューティングシステムは、分散コンピューティングサービスを実施し、
前記複数のコンピュートノードは、MapReduce分散コンピューティングフレームワークに従ってコンピュートノードのクラスタとして構成され、前記クラスタは分散アプリケーションを実行するように構成され、
前記分散コンピューティングサービスは、
前記インタフェースを通して前記分散コンピューティングサービスのクライアントから、真と評価されると前記クラスタに対し自動スケーリング動作を行うトリガ条件を表す式を定義する入力、及び前記式が真と評価されたことに応じて行われるべきスケーリング行動を指定する入力を受信し、前記式は前記分散アプリケーションの実行中に生成される1つまたは複数のメトリクスの値に依拠し、
前記分散アプリケーションの実行中に、前記1つまたは複数のメトリクスを収集し、
前記分散アプリケーションの実行中に、前記収集されたメトリクスに依拠して、前記式が真と評価されることを特定し、
前記特定に応じて、前記クラスタに対し前記自動スケーリング動作の実行を開始し、前記自動スケーリング動作は、前記クラスタに1つまたは複数のコンピュートノードを追加する動作、または前記クラスタから1つまたは複数のコンピュートノードを削除する動作を含む
ように構成される、前記分散コンピューティングシステム。
【0154】
2.前記複数のコンピュートノードは、前記複数のコンピュートノードの非重複部分集合をそれぞれが含む2つ以上のコンピュートノードグループを備え、
前記インタフェースを通して受信される前記入力は、自動スケーリングポリシーを定義し、
前記インタフェースを通して受信される前記入力はさらに、前記2つ以上のコンピュートノードグループのうちの1つまたは複数を、前記自動スケーリングポリシーが適用されるコンピュートノードグループとして特定する入力を含み、
前記クラスタに対し前記自動スケーリング動作の実行を開始するために、前記分散コンピューティングサービスは、前記特定されたコンピュートノードグループのうちの1つに1つまたは複数のコンピュートノードを追加する動作、または前記特定されたコンピュートノードグループのうちの1つから1つまたは複数のコンピュートノードを削除する動作の実行を開始するように構成される、
条項1に記載のシステム。
【0155】
3.前記複数のコンピュートノードは、前記複数のコンピュートノードの非重複部分集合をそれぞれが含む2つ以上のコンピュートノードグループを備え、
前記インタフェースを通して受信される前記入力は、自動スケーリングポリシーを定義し、
前記自動スケーリングポリシーは、前記式が真と評価されたことに応じて行われるべき前記スケーリング行動に、前記複数のコンピュートノードに新たなコンピュートノードグループを追加する動作、または前記複数のコンピュートノードから前記2つ以上のコンピュートノードグループのうちの1つを削除する動作が含まれることを、指定する、
いずれかの先行条項に記載のシステム。
【0156】
4.前記分散アプリケーションは、前記分散コンピューティングサービスの前記クライアントにより定義された1つまたは複数のアプリケーション特有メトリクスを発するように構成され、
前記式は、前記1つまたは複数のアプリケーション特有メトリクスのうちの少なくとも1つに依拠する、
いずれかの先行条項に記載のシステム。
【0157】
5.前記式は、前記クラスタが、または前記コンピュートノードのうちの1つまたは複数が、前記分散コンピューティングシステムにおいて作動している間にデフォルトで発する1つまたは複数のメトリクスに依拠する、
いずれかの先行条項に記載のシステム。
【0158】
6.前記分散アプリケーションの実行中に前記1つまたは複数のメトリクスを収集するために、前記分散コンピューティングサービスは、
前記複数のコンピュートノードのうちの2つ以上に各自備わる各監視コンポーネントから1つまたは複数のメトリクスを受信し、
前記それぞれの監視コンポーネントから受信した前記メトリクスを集約して、前記2つ以上のコンピュートノードの集約メトリクを生成する
ように構成され、
前記式は、前記集約メトリクに依拠する、
いずれかの先行条項に記載のシステム。
【0159】
7.1つまたは複数のコンピュータにより、
1つまたは複数のコンピューティングリソースインスタンスをそれぞれが含む2つ以上のインスタンスグループを備えるコンピューティングリソースインスタンスのクラスタを作成することと、
前記2つ以上のインスタンスグループのうちの1つにおけるコンピューティングリソースインスタンスの数を変更する前記2つ以上のインスタンスグループのうちの前記1つに対する自動スケーリング動作の実行を、満たされた場合に引き起こす条件を定義する自動スケーリングポリシーを、前記2つ以上のインスタンスグループのうちの前記1つに対応付ける入力を受信することと、
前記クラスタ上で分散アプリケーションの実行中に、前記トリガ条件が満たされたことを検出することと、
前記検出に応じて、前記2つ以上のインスタンスグループのうちの前記1つに対し前記自動スケーリング動作の実行を開始することと
を実行することを含む方法。
【0160】
8.前記トリガ条件は、真と評価されると前記2つ以上のインスタンスグループのうちの前記1つに対し前記自動スケーリング動作の前記実行を引き起こす式を含み、前記式は、前記クラスタ上で前記分散アプリケーションの実行中に生成される1つまたは複数のメトリクスに依拠する、
条項7に記載の方法。
【0161】
9.前記トリガ条件は、真と評価されると前記2つ以上のインスタンスグループのうちの前記1つに対し前記自動スケーリング動作の前記実行を引き起こす式を含み、前記式は、曜日、日付、時刻、経過時間、または推定時間に依拠する、
条項7または8に記載の方法。
【0162】
10.前記2つ以上のインスタンスグループのうちの別の1つにおけるコンピューティングリソースインスタンスの数を変更する前記2つ以上のインスタンスグループのうちの前記別の1つに対する第2自動スケーリング動作の実行を、満たされた場合に引き起こす第2条件を定義する別の自動スケーリングポリシーを、前記2つ以上のインスタンスグループのうちの前記別の1つに対応付ける入力を受信することと、
前記クラスタ上で前記分散アプリケーションの実行中に、前記第2トリガ条件が満たされたことを検出することと、
前記第2トリガ条件が満たされたことの検出に応じて、前記2つ以上のインスタンスグループのうちの前記別の1つに対し前記第2自動スケーリング動作の実行を開始することと
をさらに含む、条項7〜9のうちのいずれかに記載の方法。
【0163】
11.前記自動スケーリング動作は、前記2つ以上のインスタンスグループのうちの前記1つに容量を追加する動作を含む、
条項7〜10のうちのいずれかに記載の方法。
【0164】
12.前記自動スケーリング動作は、前記2つ以上のインスタンスグループのうちの前記1つから容量を削除する動作を含む、
条項7〜11のうちのいずれかに記載の方法。
【0165】
13.前記方法はさらに、
前記2つ以上のインスタンスグループのうちの前記1つから、前記コンピューティングリソースインスタンスのうちのどの1つまたは複数を削除するかを特定することと、
前記2つ以上のインスタンスグループのうちの前記1つから、前記コンピューティングリソースインスタンスのうちの前記特定した1つまたは複数を削除することと
を含み、
前記特定は、前記2つ以上のインスタンスグループのうちの前記1つにおける前記コンピューティングリソースインスタンスのうちの1つが、前記コンピューティングリソースが削除された場合に喪失するデータを格納していることを特定すること、前記2つ以上のインスタンスグループのうちの前記1つにおける前記コンピューティングリソースインスタンスのうちの1つの削除により、複製要件またはクォーラム要件は満たされなくなることを特定すること、前記2つ以上のインスタンスグループのうちの前記1つにおける前記コンピューティングリソースノードのうちの1つが廃止されたことを特定すること、前記2つ以上のインスタンスグループのうちの前記1つにおける前記コンピューティングリソースノードのうちの1つが、前記分散アプリケーションのためにタスクを現在実行していることを特定すること、または、前記2つ以上のインスタンスグループのうちの前記1つにおける前記コンピューティングリソースインスタンスのうちの1つにおいて現在実行されているタスクの進捗を特定すること、以上のうちの1つまたは複数に依拠する、
条項12に記載の方法。
【0166】
14.前記自動スケーリングポリシーはさらに、前記自動スケーリング動作による前記2つ以上のインスタンスグループのうちの前記1つの前記容量の変化量、または前記自動スケーリング動作による前記2つ以上のインスタンスグループのうちの前記1つの前記容量の変化率を定義する、
条項7〜13のうちのいずれかに記載の方法。
【0167】
15.前記2つ以上のインスタンスグループの各グループは、各自異なる種類のコンピューティングリソースインスタンス、または前記クラスタ上での前記分散アプリケーションの前記実行において各自異なる役割を有するコンピューティングリソースインスタンスを備える、
条項7〜14のうちのいずれかに記載の方法。
【0168】
16.前記検出は、コンピューティングリソースインスタンスの前記クラスタの外部のコンピューティングリソース上で実施される外部サービスにより実行され、
前記開始は、前記トリガ条件が満たされたという開示を前記外部サービスから受信することに応じて行われる、
条項7〜15のうちのいずれかに記載の方法。
【0169】
17.前記クラスタの前記作成は、MapReduce分散コンピューティングフレームワークに従って、コンピュートノードのクラスタとして、前記2つ以上のインスタンスグループそれぞれに前記1つまたは複数のコンピューティングリソースインスタンスを含むコンピューティングリソースインスタンスの集合を構成することを含む、条項7〜16のうちのいずれかに記載の方法。
【0170】
18.コンピューティングリソースインスタンスの前記クラスタは、1つまたは複数の仮想化コンピューティングリソースインスタンスもしくは仮想化格納リソースインスタンスを備える、条項7〜17のうちのいずれかに記載の方法。
【0171】
19.プログラム命令を記憶する非一時的コンピュータアクセス可能記憶媒体であって、前記プログラム命令は、1つまたは複数のコンピュータ上で実行されると、前記1つまたは複数のコンピュータに分散コンピューティングサービスを実施させ、
前記分散コンピューティングサービスは、
分散アプリケーションを実行するように構成される仮想化コンピューティングリソースインスタンスのクラスタと、
1つまたは複数のクライアントが前記サービスと対話する手段であるインタフェースと、
自動スケーリング規則エンジンと
を備え、
前記分散コンピューティングサービスは、
前記インタフェースを通して前記分散コンピューティングサービスのクライアントから、真と評価されると自動スケーリング動作を実行するトリガ条件を表す式を定義する情報、前記式が真と評価されたことに応じて行われるべきスケーリング行動を指定する情報を含む自動スケーリングポリシーを定義する入力、並びに前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの部分集合を特定する入力を受信する
ように構成され、
前記自動スケーリング規則エンジンは、
前記分散アプリケーションの実行中に、前記実行中に生成された1つまたは複数のメトリクスに依拠して、前記式が真と評価されることを特定し、
前記特定に応じて、前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの前記部分集合に1つまたは複数のインスタンスを追加する動作、または前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの前記部分集合から1つまたは複数のインスタンスを削除する動作を含む前記自動スケーリング動作の実行を開始する
ように構成される、
前記非一時的コンピュータアクセス可能記憶媒体。
【0172】
20.前記式は、前記分散アプリケーションの前記実行中に生成された前記1つまたは複数のメトリクスのうちの1つの値、前記分散アプリケーションの前記実行中に生成された前記メトリクスのうちの1つに指定された最小または最大閾値、前記分散アプリケーションの前記実行中に生成された前記メトリクスのうちの1つの最小または最大閾値が破られた時間の長さ、曜日、日付、時刻、経過時間、推定時間、リソース使用メトリク、費用メトリク、前記分散アプリケーションのためのタスクを実行完了するための推定時間、または前記分散アプリケーションのために実行されるべき保留タスクの数、以上のうちの1つまたは複数に依拠する、条項19に記載の非一時的コンピュータアクセス可能記憶媒体。
【0173】
21.前記式は、
前記アプリケーションが、前記クラスタが、または前記仮想化コンピューティングリソースインスタンスのうちの1つまたは複数が、前記分散コンピューティングシステムにおいて作動している間にデフォルトで発するメトリク、
または前記分散コンピューティングサービスの前記クライアントにより定義され、かつ前記分散アプリケーションの実行中に前記分散アプリケーションが発するアプリケーション特有メトリク、
以上のうちの1つまたは複数に依拠する、
条項19または20に記載の非一時的コンピュータアクセス可能記憶媒体。
【0174】
22.前記自動スケーリングポリシーを定義する前記入力は、前記自動スケーリング規則エンジンに入力を提供するように定義されるアプリケーションプログラミングインタフェース(API)に準拠する、条項19〜21のうちのいずれかに記載の非一時的コンピュータアクセス可能記憶媒体。
【0175】
本明細書において図示及び説明される様々な方法は、方法の代表的実施形態を表す。方法は、ソフトウェア、ハードウェア、またはこれらの組み合せで実施され得る。方法の順序は変更され、様々な要素が追加、並替、結合、省略、修正等され得る。
【0176】
本開示の恩恵を受ける当業者には明らかであるように、様々な修正及び変更を行うことが可能である。本明細書には全てのこのような修正及び変更を包含する意図があり、従って前述の説明は、制限的な意味ではなく例示的な意味で考慮されるものとする。