(57)【特許請求の範囲】
【請求項１】
１つまたは複数のコンピュータにより、
１つまたは複数のコンピューティングリソースインスタンスをそれぞれが含む２つ以上のインスタンスグループを備えるコンピューティングリソースインスタンスのクラスタを作成することであって、前記クラスタは、部分的にステートレスであり、かつ部分的にステートフルである、前記作成することと、
前記２つ以上のインスタンスグループのうちの１つにおけるコンピューティングリソースインスタンスの数を変更する前記２つ以上のインスタンスグループのうちの前記１つに対する自動スケーリング動作の実行をトリガするためのトリガ条件であって、当該トリガ条件が満たされた場合に自動スケーリング動作の実行がトリガされるものである、前記トリガ条件を定義する自動スケーリングポリシーを、前記２つ以上のインスタンスグループのうちの前記１つに対応付ける入力を受信することと、
前記クラスタ上で分散アプリケーションの実行中に、前記トリガ条件が満たされたことを検出することと、
前記検出に応じて、前記２つ以上のインスタンスグループのうちの前記１つに対し前記自動スケーリング動作の実行を開始することであって、前記自動スケーリング動作は、前記２つ以上のインスタンスグループのうちの前記１つから容量を削除する動作を含む、前記開始することと、
前記２つ以上のインスタンスグループのうちの前記１つから、前記コンピューティングリソースインスタンスのうちのどの１つまたは複数を削除するかを特定することと、
前記２つ以上のインスタンスグループのうちの前記１つから、前記コンピューティングリソースインスタンスのうちの前記特定した１つまたは複数を削除することと
を実行することを含み、
前記特定は、前記２つ以上のインスタンスグループのうちの前記１つにおける前記コンピューティングリソースインスタンスのうちの１つが、前記コンピューティングリソースインスタンスが削除された場合に喪失するデータを格納していることを特定すること、前記２つ以上のインスタンスグループのうちの前記１つにおける前記コンピューティングリソースインスタンスのうちの１つの削除により、複製要件またはクォーラム要件は満たされなくなることを特定すること、または、前記２つ以上のインスタンスグループのうちの前記１つにおける前記コンピューティングリソースインスタンスのうちの１つにおいて現在実行されているタスクの進捗を特定すること、以上のうちの１つまたは複数に依拠する、
方法。
【請求項２】
前記トリガ条件は、真と評価されると前記２つ以上のインスタンスグループのうちの前記１つに対し前記自動スケーリング動作の前記実行を引き起こす式を含み、前記式は、前記クラスタ上で前記分散アプリケーションの実行中に生成される１つまたは複数のメトリクスに依拠する、
請求項１に記載の方法。
【請求項３】
前記トリガ条件は、真と評価されると前記２つ以上のインスタンスグループのうちの前記１つに対し前記自動スケーリング動作の前記実行を引き起こす式を含み、前記式は、曜日、日付、時刻、経過時間、または推定時間に依拠する、
請求項の１または２に記載の方法。
【請求項４】
前記２つ以上のインスタンスグループのうちの別の１つにおけるコンピューティングリソースインスタンスの数を変更する前記２つ以上のインスタンスグループのうちの前記別の１つに対する第２自動スケーリング動作の実行をトリガするための第２トリガ条件であって、当該第２トリガ条件が満たされた場合に第２自動スケーリング動作の実行がトリガされるものである、前記第２トリガ条件を定義する別の自動スケーリングポリシーを、前記２つ以上のインスタンスグループのうちの前記別の１つに対応付ける入力を受信することと、
前記クラスタ上で前記分散アプリケーションの実行中に、前記第２トリガ条件が満たされたことを検出することと、
前記第２トリガ条件が満たされたことの検出に応じて、前記２つ以上のインスタンスグループのうちの前記別の１つに対し前記第２自動スケーリング動作の実行を開始することと
をさらに含む、請求項１から３のいずれかに記載の方法。
【請求項５】
前記自動スケーリング動作は、前記２つ以上のインスタンスグループのうちの前記１つに容量を追加する動作を含む、
請求項１から４のいずれかに記載の方法。
【請求項６】
前記自動スケーリングポリシーはさらに、前記自動スケーリング動作による前記２つ以上のインスタンスグループのうちの前記１つの容量の変化量、または前記自動スケーリング動作による前記２つ以上のインスタンスグループのうちの前記１つの前記容量の変化率を定義する、
請求項１から５のいずれかに記載の方法。
【請求項７】
前記２つ以上のインスタンスグループの各グループは、各自異なる種類のコンピューティングリソースインスタンス、または前記クラスタ上での前記分散アプリケーションの前記実行において各自異なる役割を有するコンピューティングリソースインスタンスを備える、
請求項１から６のいずれかに記載の方法。
【請求項８】
前記検出は、コンピューティングリソースインスタンスの前記クラスタの外部のコンピューティングリソース上で実施される外部サービスにより実行され、
前記開始は、前記トリガ条件が満たされたという開示を前記外部サービスから受信することに応じて行われる、
請求項１から７のいずれかに記載の方法。
【請求項９】
前記クラスタの前記作成は、ＭａｐＲｅｄｕｃｅ分散コンピューティングフレームワークに従って、コンピュートノードのクラスタとして、前記２つ以上のインスタンスグループそれぞれに前記１つまたは複数のコンピューティングリソースインスタンスを含むコンピューティングリソースインスタンスの集合を構成することを含む、請求項１から８のいずれかに記載の方法。
【請求項１０】
コンピューティングリソースインスタンスの前記クラスタは、１つまたは複数の仮想化コンピューティングリソースインスタンスもしくは仮想化格納リソースインスタンスを備える、請求項１から９のうちのいずれかに記載の方法。
【請求項１１】
プログラム命令を記憶する非一時的コンピュータアクセス可能記憶媒体であって、前記プログラム命令は、１つまたは複数のコンピュータ上で実行されると、前記１つまたは複数のコンピュータに分散コンピューティングサービスを実施させ、
前記分散コンピューティングサービスは、
分散アプリケーションを実行するように構成される仮想化コンピューティングリソースインスタンスのクラスタであって、前記クラスタは、部分的にステートレスであり、かつ部分的にステートフルである、前記クラスタと、
１つまたは複数のクライアントが前記分散コンピューティングサービスと対話する手段であるインタフェースと、
自動スケーリング規則エンジンと
を備え、
前記分散コンピューティングサービスは、
前記インタフェースを通して前記分散コンピューティングサービスのクライアントから、真と評価されると自動スケーリング動作を実行するトリガ条件を表す式を定義する情報、前記式が真と評価されたことに応じて行われるべきスケーリング行動を指定する情報を含む自動スケーリングポリシーを定義する入力、並びに前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの部分集合を特定する入力を受信する
ように構成され、
前記自動スケーリング規則エンジンは、
前記分散アプリケーションの実行中に、前記実行中に生成された１つまたは複数のメトリクスに依拠して、前記式が真と評価されることを特定し、
前記特定に応じて、前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの前記部分集合に１つまたは複数のインスタンスを追加する動作、または前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの前記部分集合から１つまたは複数のインスタンスを削除する動作を含む前記自動スケーリング動作の実行を開始する
ように構成され、
前記削除する動作は、前記部分集合から、前記インスタンスのうちのどの１つまたは複数を削除するかを特定することと、
前記部分集合から、前記インスタンスのうちの前記特定した１つまたは複数を削除することと
を実行することを含み、
前記特定は、前記部分集合における前記インスタンスのうちの１つが、前記インスタンスが削除された場合に喪失するデータを格納していることを特定すること、前記部分集合における前記インスタンスのうちの１つの削除により、複製要件またはクォーラム要件は満たされなくなることを特定すること、または、前記部分集合における前記インスタンスのうちの１つにおいて現在実行されているタスクの進捗を特定すること、以上のうちの１つまたは複数に依拠する、
非一時的コンピュータアクセス可能記憶媒体。
【請求項１２】
前記式は、前記分散アプリケーションの前記実行中に生成された前記１つまたは複数のメトリクスのうちの１つの値、前記分散アプリケーションの前記実行中に生成された前記メトリクスのうちの１つに指定された最小または最大閾値、前記分散アプリケーションの前記実行中に生成された前記メトリクスのうちの１つの最小または最大閾値が破られた時間の長さ、曜日、日付、時刻、経過時間、推定時間、リソース使用メトリク、費用メトリク、前記分散アプリケーションのためのタスクを実行完了するための推定時間、または前記分散アプリケーションのために実行されるべき保留タスクの数、以上のうちの１つまたは複数に依拠する、請求項１１に記載の非一時的コンピュータアクセス可能記憶媒体。
【請求項１３】
分散アプリケーションを実行するように構成される仮想化コンピューティングリソースインスタンスのクラスタであって、前記クラスタは、部分的にステートレスであり、かつ部分的にステートフルである、前記クラスタと、
１つまたは複数のクライアントが分散コンピューティングサービスと対話する手段であるインタフェースと、
自動スケーリング規則エンジンと
を備える分散コンピューティングサービスであって、
前記分散コンピューティングサービスは、
前記インタフェースを通して前記分散コンピューティングサービスのクライアントから、真と評価されると自動スケーリング動作を実行するトリガ条件を表す式を定義する情報、前記式が真と評価されたことに応じて行われるべきスケーリング行動を指定する情報を含む自動スケーリングポリシーを定義する入力、並びに前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの部分集合を特定する入力を受信する
ように構成され、
前記自動スケーリング規則エンジンは、
前記分散アプリケーションの実行中に、前記実行中に生成された１つまたは複数のメトリクスに依拠して、前記式が真と評価されることを特定し、
前記特定に応じて、前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの前記部分集合に１つまたは複数のインスタンスを追加する動作、または前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの前記部分集合から１つまたは複数のインスタンスを削除する動作を含む前記自動スケーリング動作の実行を開始する
ように構成され、
前記削除する動作は、前記部分集合から、前記インスタンスのうちのどの１つまたは複数を削除するかを特定することと、
前記部分集合から、前記インスタンスのうちの前記特定した１つまたは複数を削除することと
を実行することを含み、
前記特定は、前記部分集合における前記インスタンスのうちの１つが、前記インスタンスが削除された場合に喪失するデータを格納していることを特定すること、前記部分集合における前記インスタンスのうちの１つの削除により、複製要件またはクォーラム要件は満たされなくなることを特定すること、または、前記部分集合における前記インスタンスのうちの１つにおいて現在実行されているタスクの進捗を特定すること、以上のうちの１つまたは複数に依拠する、
分散コンピューティングサービス。
【発明の詳細な説明】
【背景技術】
【０００１】
多数の企業及び他の組織が、例えば同じ場所に配置された（例えばローカルネットワークの一部として）、あるいは地理的に多数の別個の場所に配置された（例えば１つまたは複数のプライベートもしくはパブリック中間ネットワークを介して接続された）コンピューティングシステム等により、自身の業務を支援するために、多数のコンピューティングシステムを相互接続するコンピュータネットワークを運用している。例えば、単一の組織により及び単一の組織のために運用される私設データセンタ、並びに顧客すなわちクライアントにコンピューティングリソースを提供する事業体により運用される公衆データセンタ等、著しい数の相互接続されたコンピューティングシステムを収容するデータセンタは、今ではもう珍しくない。一部の公衆データセンタ運営者は、様々なクライアントが所有するハードウェアに対しネットワークアクセス、電力、安全な設置施設を提供し、一方他の公衆データセンタ運営者は、自身のクライアントにより利用可能なハードウェアリソースも含む「完全なサービス」施設を提供する。このような大規模システムの実施例には、オンライン商人、インターネットサービスプロバイダ、写真処理サービス等のオンラインビジネス、企業ネットワーク、クラウドコンピューティングサービス（大量及び／または複雑な計算を実行する高性能コンピューティングサービスを含む）、ウェブベースホスティングサービス等が含まれる。これらのエンティティは、地理的に別々の場所に収容され、かつ毎日または毎時でも大量（例えば数百万）のトランザクションを処理するように構成される多数のコンピューティングデバイス（例えば数千のホスト）の形態で、コンピューティングリソースを保持し得る。
【０００２】
汎用ハードウェアの仮想化技術の出現により、大規模なコンピューティングリソースの管理に関連した恩恵が多様なサービス要望を持つ多数の顧客に与えられ、様々なコンピューティングリソース及びサービスが多数の顧客により効率的かつ安全に共有可能となった。例えば、仮想化技術は、単一の物理コンピューティングマシンがホスティングする１つまたは複数の仮想マシンを各ユーザに提供することにより、単一の物理コンピューティングマシンを多数のユーザ間で共有することを可能にし得る。明確な論理コンピューティングシステムとして機能するソフトウェアシミュレーションであるこのような仮想マシンは各自、ユーザに、自分が所定のハードウェアコンピューティングリソースの唯一の操作者及び管理者であると錯覚させ、また同時に様々な仮想マシン間におけるアプリケーション分離と安全性を提供する。さらに、いくつかの仮想化技術は、多数の別個の物理コンピューティングシステムにわたる、多数の仮想プロセッサを有する単一の仮想マシン等、２つ以上の物理リソースにわたる仮想リソースを提供可能である。別の実施例として、仮想化技術は、多数のデータ格納デバイスにわたり分散され得る仮想化データストアを各ユーザに提供することにより、データ格納ハードウェアを多数のユーザ間で共有することを可能にし得る。明確な論理データストアとして機能するこのような仮想化データストアは各自、ユーザに、自分がデータ格納リソースの唯一の操作者及び管理者であると錯覚させる。
【０００３】
これらのリソースを利用してデータを処理する１つの従来の手法は、分散、並列コンピューティングを行うＭａｐＲｅｄｕｃｅモデルである。ＭａｐＲｅｄｕｃｅシステムにおいて、大きなデータ集合は、より小さいチャンクに分割され、より小さいチャンクは、処理の初期「マップ」段階のクラスタ内の多数のコンピューティングノードに分散され得る。多数のノードはまた、マップ段階の結果に基づいて、処理の第２「リデュース」段階を実行し得る。ＭａｐＲｅｄｕｃｅクラスタを実施するものをいくつか含む様々なクラスタベース分散コンピューティングシステムにおいて、クラスタ内のコンピュートノードによりアクセスされるデータは、クラスタの仮想化リソースインスタンス内に、及び／またはクラスタの仮想化リソースインスタンスとは別のデータ格納システムに、記憶され得る。ＭａｐＲｅｄｕｃｅクラスタを実施する既存のシステムにおいて、容量は、通常コマンドラインインタフェースを通してシステムのＡＰＩを呼び出すことにより、通常手動でのみ追加または削除され得る（例えば個別独立動作として）。従って、ＭａｐＲｅｄｕｃｅクラスタは、たびたび過小または過大プロビジョニングされ、遅延（過小プロビジョニングによる）または浪費（過大プロビジョニングによる）をもたらす。
【図面の簡単な説明】
【０００４】
【図１】ＭａｐＲｅｄｕｃｅクラスタの自動スケーリングを実施するサービスプロバイダシステムの一実施形態を例示するブロック図である。
【図２】ノードのクラスタの自動スケーリングを実行する方法の一実施形態を例示するフロー図である。
【図３】一実施形態による、ＭａｐＲｅｄｕｃｅジョブを実行する例示的システム環境を示す。
【図４】分散コンピューティングシステムにおいてＭａｐＲｅｄｕｃｅ型データ処理アプリケーションを実行する方法の一実施形態を例示するフロー図である。
【図５】一実施形態による、ＭａｐＲｅｄｕｃｅジョブを実行するように構成されるワーカノードを例示する。
【図６】仮想化コンピューティングリソースインスタンスのクラスタに対する自動スケーリングポリシーを定義する方法の一実施形態を例示するフロー図である。
【図７】ＭａｐＲｅｄｕｃｅクラスタの自動スケーリングを実行する方法の一実施形態を例示するフロー図である。
【図８】ＭａｐＲｅｄｕｃｅクラスタにおいてインテリジェント縮小動作を実行する方法の一実施形態を例示するフロー図である。
【図９】コンピューティングリソースインスタンスのクラスタの自動スケーリングを実施する際、監視サービスを採用する方法の一実施形態を例示するフロー図である。
【図１０】仮想化格納リソースをサービスとしてクライアントに提供するオブジェクト格納モデルの例示的実施形態を示す。
【図１１】分散コンピューティングシステムにおいてデータ格納を提供する方法及び装置の実施形態が実施され得る例示的サービスプロバイダネットワーク環境を示す。
【図１２】いくつかの実施形態による、ブロックベース格納サービスを含む多数のネットワークベースサービスを実施するプロバイダネットワークを例示するブロック図である。
【図１３】少なくともいくつかの実施形態による、例示的プロバイダネットワーク環境を示す。
【図１４】いくつかの実施形態による、ＩＰトンネリング技術を使用してネットワーク基板上でオーバーレイネットワークを実施する例示的データセンタを示す。
【図１５】少なくともいくつかの実施形態による、格納仮想化サービス及びハードウェア仮想化サービスをクライアントに提供する例示的プロバイダネットワークのブロック図である。
【図１６】少なくともいくつかの実施形態による、仮想化プライベートネットワークを少なくともいくつかのクライアントに提供する例示的プロバイダネットワークを示すブロック図である。
【図１７】少なくともいくつかの実施形態による、本明細書において説明される技術を実施するように構成される例示的コンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【０００５】
本明細書において、実施形態は、いくつかの実施形態及び例示的図面の実施例を通して説明されるが、説明される実施形態または図面に実施形態は限定されないことを、当業者は認識するであろう。図面とその詳細説明には、実施形態を開示される特定の形態に限定する意図はなく、それとは反対に、添付の請求項により定義される趣旨及び範囲に入る全ての変更、均等物、及び代替案を包含する意図があることを理解されたい。本明細書において使用される見出しは、構成目的でのみ用いられ、説明または請求項を限定するために用いられることを意図しない。本出願を通して使用される英単語「ｍａｙ(
してもよい）」は、義務的な意味（すなわち「〜しなければならない」という意味）ではなく、許容的な意味（すなわち「〜する可能性がある」という意味）で使用される。同様に、英単語「ｉｎｃｌｕｄｅ（含む）」、「ｉｎｃｌｕｄｉｎｇ（含んでいる）」、及び「ｉｎｃｌｕｄｅｓ（含む）」は「含むが、その対象に限定されない」ことを意味する。
【０００６】
クラスタベースの分散コンピューティングシステム（例えばＡｐａｃｈｅ（商標）Ｈａｄｏｏｐ（登録商標）フレームワーク）におけるコンピューティングリソースインスタンスの自動スケーリングを実施する方法及び装置の様々な実施形態が、本明細書において説明される。いくつかの実施形態において、これらの技術は、クライアント（例えばサービスの顧客であるエンドユーザ、サービス加入者、または第三者サービスがサービスと対話する際用いるクライアントアプリケーション）からのクラスタ自動スケーリングを有効化する要求に応じて、分散コンピューティングサービスにより自動で（例えばプログラムにより）適用され得る。本明細書においてより詳しく説明されるように、クライアントは、クラスタに対するアプリケーションの実行中に監視対象となるメトリクスを定義し、自動スケーリングトリガ条件（例えば監視されるメトリクスに依拠する条件）を含む自動スケーリングポリシーを定義または選択し得る。いくつかの実施形態において、ポリシーは、条件が満たされた場合に行われるべきスケーリング行動を定義し、クラスタ（またはクラスタの部分集合）内の容量で増加または減少されるべき量を指定し、ポリシーが適用されるクラスタの部分を特定し得る。
【０００７】
Ｈａｄｏｏｐフレームワークにおける作業負荷は、本来非常に急上昇し急降下する傾向にあり、多くの場合バッチ指向であり、ある時間内に多くのリソースを消費し、その後自身のリソース要求を縮小させ得る。さらに、分散コンピューティングシステム（例えばクラウドベースシステム）内のリソースは、必要な時にプロセスがリソースを取得し、その後これらを手放すという点において、多少代替可能である。本明細書において説明されるシステム及び方法は、これらのモデルの両方を採用するシステム内のコンピューティングリソースインスタンスを管理するために使用され得る。例えば、これらは、作業負荷に基づいて、プログラムによりクラスタを拡張または縮小するために使用され得る。いくつかの実施形態において、どの程度の容量を必要とするかわからないサービスプロバイダの顧客は、小さいクラスタ（例えば１つまたは２つのノードを有する１つのクラスタ）を作成し、本明細書において説明される自動スケーリングを有効化することにより、システムが実際の需要に基づいて拡張する時と拡張するかどうかを決定することを許可し得る（やみくもな推定に基づいて作成時にクラスタを正しいサイズに形成しようとするのではなく）。
【０００８】
既存の自動スケーリング解決策は通常、均一のノード（例えば全てが同一のソフトウェアを実行しているノード）を有するシステムにおけるステートレス作業負荷のために設計される。例えば、これらは、データ損失が問題ではないウェブフロントエンドをスケーリングするのに使用され得る。しかしながら、ＭａｐＲｅｄｕｃｅクラスタは、データを含むノードのいくつかのグループと、データを含まないノードの他のグループとを有し、部分的にステートレスであり、かつ部分的にステートフルであり得る。従って、既存の自動スケーリング手法は、データ（ステート）を損失することの影響が大きくあり得る当状況において好適ではあり得ない。いくつかの実施形態において、本明細書において説明される自動スケーリング技術は、スケーリングを行う時（例えばクラスタ容量を削減する時）にデータ損失及び／またはジョブ障害の可能性を考慮するように構成され得る。これらの技術は、ジョブの再スケジューリングを最小化し、データ損失の確率を低減させるために、使用され得る。いくつかの実施形態において、異なる種類のコンピュートエンジンが、コンピューティングリソースインスタンスのクラスタ上のコンテナサービス内で実行され、それぞれが、クラスタスケーリング中に考慮されるべき独自のビヘイビア及び特性を有する。例えば、一部のクラスタは、一種のエンジンであるＭａｐＲｅｄｕｃｅまたはＨａｄｏｏｐフレームワークを実施し得る。他のクラスタは、ＡｐａｃｈｅからのＳｐａｒｋ（商標）フレームワークに基づくエンジン、またはＦａｃｅｂｏｏｋ社からのＰｒｅｓｔｏＳＱＬクエリエンジンを実行し得る。これらの例示的エンジンは、ＭａｐＲｅｄｕｃｅ手法を使用しないため、ＭａｐＲｅｄｕｃｅクラスタと比較すると、異なるクラスタ内ステート取扱概念、異なるステートフルまたはステートレス定義方法、並びに異なるステート喪失ペナルティを有する。従って、これらの異なるエンジンの自動スケーリングポリシーは、ＭａｐＲｅｄｕｃｅクラスタにおいて使用されるものと比較すると、異なるステート情報管理方法、異なるスケーリング開示、異なるジョブ進捗開示、及び／または基礎クラスタをスケーリングする時及びスケーリングするかどうかを決定するための異なる主要指標を有し得る。
【０００９】
本明細書において説明されるシステムのいくつかの実施形態において、異なる自動スケーリングポリシーが、異なるクラスタに対し、及び／またはクラスタ内の異なるノードに対し（もしくはクラスタ内の異なるノードグループに対し）適用され、システムは、ノードが重要なステート情報を記憶する場合（例えばノードがデータを記憶しているため問題なく廃止することは不可能である場合）、あるいはクラスタに対し実行されている分散アプリケーションまたはエンジンのビヘイビアと一貫性がなくなる場合、動作中にノードを削除して容量を削減することを回避し得る。言い換えると、既存の自動スケーリング解決策とは異なり、本明細書において説明されるシステムは、スケーリング目的でクラスタ内の全てのノードを同じように処理するのではなく、ノードのうちの少なくとも一部の独特のビヘイビアに起因して、スケーリング動作にインテリジェンスを適用し得る。
【００１０】
スケーリング判定を行う時に、既存の解決策の場合のように、マシン内の性能の標準指標を主に頼りにする（例えばＣＰＵとメモリとＩ／Ｏの性能指標を頼りに、これらの急上昇のうちの１つの時に拡張する）のではなく、本明細書において説明されるシステムは、スケーリング判定を行う時に、アプリケーションプロバイダにより選ばれ、及び／またはアプリケーションの特定の活動をより深く調べるヒューリスティックを採用し得る（例えば保留のコンテナの数、完了したジョブのパーセント数、現クラスタを拡張せずに現クラスタ内でジョブは終了可能か否か等）。いくつかの実施形態において、本明細書において説明されるシステムは、より設定可能な（及び／または顧客主導の）自動スケーリングポリシーを採用し、また顧客により定義される非生産的な自動スケーリングポリシーを実行することを回避するいくつかの組込安全機能を実施し得る。
【００１１】
前述のように、ＭａｐＲｅｄｕｃｅフレームワーク内で実施される分散アプリケーションは、他の分散アプリケーションとは異なる自動スケーリング手法を求め得る。例えば、これらのアプリケーションの大半には、マスタノードの概念が存在し、クラスタ内にワーカノードのグループが存在する。マスタノードは、ワーカノード（例えばデータノード）とは非常に異なった働きをする。このようなアプリケーションでは、クラスタの自動スケーリングポリシーは、例えばマスタノードを削除することを抑制しなければならない。
【００１２】
いくつかの実施形態において、ＭａｐＲｅｄｕｃｅクラスタ（例えばＨａｄｏｏｐクラスタ）は、分散ファイルシステム（例えばＨａｄｏｏｐ分散ファイルシステム、すなわちＨＤＦＳ）を含み得る。クラスタのオペレータは、ファイルシステムの使用率が所定の閾値を超える場合に、クラスタに対し格納容量を追加することを所望し得る。本明細書において説明されるシステムにより、オペレータは、使用率が８０％を超えた場合にシステムが自動で（例えばプログラムにより）オペレータの代わりに容量を追加するような自動スケーリングポリシーを、作成することが可能となり得る。反対に、頻繁にクラスタを立ち上げる顧客には、クラスタ（またはクラスタの特定ノード）が何もしておらず、その存在自体が忘れられているという問題がある。本明細書において説明されるシステムにより、顧客は、ある規則に基づいて容量を削減する（またはクラスタ全体を閉じる）自動スケーリングポリシーを定義することが可能となり得る。例えば、ある時間にわたってＣＰＵ使用率が全くなかったこと、またはある時間にわたってジョブの数がゼロであったことを監視プロセスが観察した場合、システムは、クラスタの容量を削減するスケーリング動作を引き起こす、またはクラスタを縮小させるもしくは終了させることを記憶すべきクラスタ動作なしにクラスタを閉じるように構成され得る（顧客定義の自動スケーリングポリシーを通して）。言い換えると、いくつかの実施形態において、自動スケーリング規則は、時間以外のデフォルトまたはカスタムのクラスタレベル、ノードレベル、またはアプリケーションレベルのメトリクスに加えて（またはその代わりに）、時間構成要素を含み得る。例えば、２時間を超える時間ＨＤＦＳ使用率が９０％を超える場合にクラスタは拡張しなければならないこと、並びに１時間を超える時間クラスタが遊休状態である場合には縮小しなければならないことを、顧客は指定可能であり得る。いくつかの実施形態において、自動クラスタスケーリングは、サービスプロバイダの顧客が自身の費用を削減することを可能にし（例えば余剰容量を取り除くことにより）、顧客が自身の性能目標またはサービスレベル合意に合うように手伝う（例えば著しい需要がある場合には自動で容量を追加することにより）。いくつかの実施形態において、所定の時間にわたってデフォルトまたはカスタムのメトリクの特定閾値を超えた場合、全ての保留ジョブを完了するための推定時間が指定サービスレベル合意を超える場合、または他の自動スケーリング規則に従って、ある曜日（または日付）に、及び／またはある時刻に、クラスタが自動で拡張または縮小しなくてはならないことを指定する自動スケーリングポリシーを、顧客は定義可能であり得る。
【００１３】
いくつかの実施形態において、顧客が自身の規則を指定し得るのではなく、システムが分散コンピューティングシステムまたはサービスプロバイダにより設定されたデフォルトの規則を適用し得る。例えば、いくつかのシステムは、デフォルトの時間数を超える時間ＨＤＦＳ使用率がデフォルト最大使用率閾値を超える場合に、システムが自動でクラスタに対しＨＤＦＳ容量を追加することを指定するデフォルトの自動スケーリング規則を含み得る。いくつかの実施形態において、本明細書において説明される自動スケーリング技術は、顧客が常に自身のクラスタ内に適切な容量を確保できるように支援し得る。いくつかの実施形態において、自動スケーリング規則は、費用メトリクを含み得る。例えば、顧客が容量を拡張させたい期間、並びに増加容量に対し顧客が支払う意志のある最大費用を指定する自動スケーリングポリシーを顧客は定義し、そしてシステムは、指定最大費用を超えずにクラスタの容量を増加可能な場合にのみ、当期間中にクラスタの容量を増加させるように構成され得る（例えば所定の費用閾値未満である、追加リソースインスタンスのオンデマンドまたはスポット市場価格設定を活用することで）。別の実施例において、容量は特定使用率レベルに維持されるべきであること、または毎時費用を所定の最大費用未満に維持している間は可能な限り容量を増加させるべきであることを指定する自動スケーリングポリシーを、顧客は定義し得る。いくつかのこのような実施形態において、インスタンス価格設定は毎時１回評価され、各評価後に容量は追加または削除され得る。評価において、価格変化は、費用閾値を超えずに取得可能な容量に影響を及ぼす。いくつかの実施形態において、自動スケーリングポリシーは、他の種類の目標ベースまたは対象ベース規則を含み得る。いくつかの実施形態において、クラスタの障害に応じて、その後任となる新たなクラスタが起動され、新たなクラスタは、増える作業負荷に対応するために経時的に自動で拡張され得る。
【００１４】
後により詳しく説明されるように、本明細書において説明されるシステムは、分散コンピューティングクラスタ（ＭａｐＲｅｄｕｃｅクラスタ等）内の特定インスタンスグループを対象とする顧客定義の自動スケーリングポリシーの使用を支援し、これらポリシーは、ある種のトリガ（例えば時間、曜日、日付、または費用トリガ）と共に、自動スケーリング規則エンジンに対し発せられる、または自動スケーリング規則エンジンにより利用可能となったデフォルト及び／もしくはカスタム（ユーザ定義）のメトリクスの任意の組み合わせに依拠する自動スケーリング規則を含み得る。例えば、Ｈａｄｏｏｐフレームワークにより、Ｈａｄｏｏｐ  Ｙａｒｎ（ジョブごとの保留仕事量またはコンテナごとの保留ジョブ数への洞察を与えるメトリクスを発するＨａｄｏｏｐフレームワークのジョブスケジューリング兼クラスタリソース管理コンポーネント）により、またはＨＤＦＳ（利用可能容量及び残存容量等のメトリクスを発する）により発せられるデフォルトのメトリクスのうちのいずれかが、自動スケーリングトリガ条件を定義する自動スケーリングポリシー内の式において使用され得る（追加カスタムメトリクスの有無にかかわらず）。下記により詳しく説明されるように、いくつかの実施形態において、自動スケーリング技術は、クラスタ内の容量を削減する時に、どのノードが削除にふさわしいかを、ノードの種類、ロール、ビヘイビア、及び／またはノードが対応するように構成される作業負荷に基づいて、決定し得る。例えば、いくつかの実施形態において、１つまたは複数のインスタンスグループは、コアノード（例えば格納を有し、ジョブを実行するように設計されたノード）を含み、１つまたは複数の他のインスタンスグループは、タスクノード（例えばジョブを管理するためだけに設計されたノード）を含み得る。いくつかの実施形態において、ＭａｐＲｅｄｕｃｅクラスタ内の様々なノードは、異なるデーモン集合を作動させ、各ノード上で作動するデーモン集合は、ノードが所属するインスタンスグループに基づいて決定され得る。いくつかの実施形態において、システムは、縮小を行う時にノードを終了させる順序を、異なる実施形態により、ノードがデータを格納しているか否かに基づいて、分散アプリケーションのためにノードが現在タスクを実行しているか否かに基づいて、または分散アプリケーションのために様々なノード上で実行されているタスクの相対的進捗に基づいて、決定し得る。
【００１５】
前述のように、本明細書において説明される技術は、自動スケーリングを、ユーザの特有アプリケーション及びクラスタアーキテクチャと合わせてユーザがカスタマイズ可能なように提供し得る。例えば、Ｈａｄｏｏｐクラスタにおいて自動スケーリング判定を行うのに（例えば本明細書において時にコアノードと称される格納ノードを追加または削除する動作を引き起こすために）、ＨＤＦＳ使用率（格納使用メトリク）は役立つメトリクであり、これらＨａｄｏｏｐクラスタには、ログのバッチ処理を行うように構成されるＨａｄｏｏｐクラスタが含まれる（顧客が容量不足を望まない場合）。しかしながら、分析（主にメモリ限界）のためにＰｒｅｓｔｏＳＱＬアプリケーションを採用するシステムにおいて、自動スケーリング判定を行うのに（すなわちクラスタ範囲メモリ容量を管理するために）使用されるより興味深いメトリクは、メモリ使用率であり得る（例えば「全メモリ利用可能」）。このようなシステムにおいて、ユーザは、クラスタのサイズ変更を引き起こす規則をきめ細かく制御することを所望し得る。
【００１６】
図１は、本明細書において説明される、ＭａｐＲｅｄｕｃｅクラスタの自動スケーリングを実施するサービスプロバイダシステムの一実施形態を例示するブロック図である。当実施例において、プロバイダネットワーク１００は、可用性ゾーン１４０において（例えば特定領域または施設において）、ＭａｐＲｅｄｕｃｅクラスタ１２０と、リソースプール１３０内の追加リソースとを含む。別の実施形態において、サービスプロバイダネットワーク（及びいくつかの事例ではサービスプロバイダネットワーク内で実施されるＭａｐＲｅｄｕｃｅクラスタ）は、多数のこのような可用性ゾーンにわたって分散され得る（図示せず）。当実施例において、ＭａｐＲｅｄｕｃｅクラスタ１２０は、インスタンスグループ１２１Ａ（少なくともインスタンス１２５Ａ及び１２５Ｃを包含）、インスタンスグループ１２１Ｂ（少なくともインスタンス１２５Ｄ及び１２５Ｆを包含）、及びインスタンスグループ１２１Ｃ（少なくともインスタンス１２５Ｇ及び１２５Ｉを包含）を含む仮想化リソースインスタンスの多数のグループを備える。ＭａｐＲｅｄｕｃｅクラスタ１２０はまた、１つまたは複数の監視コンポーネント１２４と、自動スケーリングポリシー情報１２６とを含む。当実施例において、リソースプール１３０は、予約インスタンスプール１３１Ａ（少なくともインスタンス１３５Ａ及び１３５Ｂを含む）と、オンデマンドインスタンスプール１３１Ｂ（少なくともインスタンス１３５Ｄ及び１３５Ｅを含む）と、スポットインスタンスプール１３１Ｃ（少なくともインスタンス１３５Ｇ及び１３５Ｈを含む）とを備える。いくつかの実施形態において、ＭａｐＲｅｄｕｃｅクラスタ（ＭａｐＲｅｄｕｃｅクラスタ１２０等）内のインスタンスグループのうちの１つの容量を増加させる場合、様々なリソースプール（リソースプール１３０等）から１つまたは複数の利用可能なインスタンスが、当インスタンスグループへ追加され得る。反対に、ＭａｐＲｅｄｕｃｅクラスタ（ＭａｐＲｅｄｕｃｅクラスタ１２０等）内のインスタンスグループのうちの１つの容量を減少させる場合、適用リソース管理ポリシー及び／またはサービス合意に従って、ＭａｐＲｅｄｕｃｅクラスタ内の１つまたは複数のインスタンスが様々なリソースプール（リソースプール１３０等）へ返却され得る。
【００１７】
図１に例示され、本明細書においてより詳しく説明されるように、いくつかの実施形態において、プロバイダネットワーク１００は、監視サービス兼メトリクスアグリゲータ１６０（監視コンポーネント１２４からメトリクス情報を収集または受信し、その後これらのメトリクスのうちの少なくともいくつかを集約し得る）と、自動スケーリング規則エンジン１６５（収集された、受信された、及び／または集約されたメトリクスに依拠し、かつ自動スケーリングトリガ条件を示す式を、評価し得る）と、リソースマネジャ１５０と、リソース管理データベース１７０とを備え得る。いくつかの実施形態において、自動スケーリングトリガ条件が真と評価されたとの判断に応じて、自動スケーリング規則エンジン１６５は、自動スケーリングが行われるべきであることを示す通知をリソースマネジャ１５０へ送信し、これに応じてリソースマネジャ１５０は、作用対象インスタンスグループ（複数可）に対するリソース容量の追加または削除を開始し得る。
【００１８】
いくつかの実施形態において、リソースマネジャ１５０はクライアントインタフェースを含み、これを通して１つまたは複数のクライアント１１０は、プロバイダネットワーク１００と対話して、分散コンピューティングサービス（自動スケーリングサービスを含み得る）を受け得る。例えば、いくつかの実施形態において、クライアント１１０は（クライアントインタフェース１５５を通して）、ＭａｐＲｅｄｕｃｅクラスタ１２０内のインスタンスグループのうちの１つまたは複数の特定インスタンスグループに対し適用される自動スケーリングポリシーを定義し得る。各ポリシーは、ＭａｐＲｅｄｕｃｅクラスタ１２０に対し分散アプリケーションを実行する時に評価される式（例えば自動スケーリングトリガ条件）を定義し、式が真と評価された時に取るスケーリング行動を指定し（例えば容量の追加または削除）、容量を増加もしくは減少させる量または率を指定し、並びに／またはポリシーが適用されるクラスタ（及び／またはクラスタのインスタンスグループ（複数可））を特定し得る。いくつかの実施形態において、ユーザ定義ポリシー（及び／またはサービスにより対応される任意のデフォルトの自動スケーリングポリシー）を示す情報、並びにポリシーとＭａｐＲｅｄｕｃｅクラスタ１２０（または当クラスタの特定インスタンスグループ）との対応付けは、リソース管理データベース１７０に格納され得る。
【００１９】
いくつかの実施形態において、リソース管理データベース１７０はまた、他の種類のリソース管理情報も格納し得る。例えば、リソース管理データベース１７０は、クライアント１１０の過去のタスク実行履歴、リソース使用率履歴、課金履歴、及びクライアントのタスクに使用可能であり得るリソースインスタンスの所定集合に関する全体リソース利用傾向を含み得るリソース利用状況データを格納し得る。いくつかの事例において、リソースマネジャ１５０は、リソースインスタンスの所定集合の過去のリソース利用状況データ及び傾向を使用して、将来のリソース利用状況の予測を展開し、そして実行計画を展開する際、または様々な自動スケーリング行動（例えばクライアント１１０により、またはクライアント１１０のために選択及び／または定義された自動スケーリングポリシーに基づいて自動スケーリング規則エンジン１６５により引き起こされている行動）を実行する方法及び／または時を特定する際に、これらの予測を使用し得る。
【００２０】
ノードのクラスタの自動スケーリングを実行する方法の一実施形態が、図２におけるフロー図により例示される。２１０に示されるように、当実施例において、方法は、サービスプロバイダまたはサービスが、１つまたは複数の自動スケーリングポリシーとノードのクラスタとを対応付ける入力を、クライアントから受信することを含み得る。当実施例において示されるように、それぞれのポリシーは、１つまたは複数のトリガ条件に依拠し、トリガ条件が満たされた場合／時に行われるべき特定の自動スケーリング行動を指定し得る（例えばクラスタ内、またはクラスタの中のインスタンスグループ内のノードの数を増やすまたは減らす）。本明細書においてより詳しく説明されるように、ノードのクラスタは２つ以上の種類のノードをそれぞれのインスタンスグループに含み、異なるインスタンスグループ内のノードに対し異なる自動スケーリングポリシーが適用され得ることに留意されたい。様々な実施形態において、自動スケーリングポリシーのうちの少なくともいくつかは、アプリケーション特有であり、及び／または特定種類の作業負荷への適用に特に好適であり得る。
【００２１】
当実施例において示されるように、方法はまた、２２０のように、ノードのクラスタに対し分散アプリケーションの実行を開始することを含み得る。図２に示されるように、方法は、２３０のように、アプリケーションの実行中に、トリガ条件（複数可）に関するメトリクスを収集及び／または集約することを含み得る。このようなメトリクス（そのうちのいくつかはアプリケーション特有、作業負荷特有、及び／または特定インスタンスグループ特有であり得る）の実施例が、本明細書において説明される。
【００２２】
当実施例において示されるように、取得された及び／または集約されたメトリクスに基づいて自動スケーリングトリガ条件が検出される（または分散アプリケーションの実行が完了する）まで、またはそうでない限り、方法は、クラスタ内のノード数を全く変えることなく、ノードのクラスタに対し分散アプリケーションの実行を続けることを含み得る。これは図２において、２４０からの否定的矢印、及び２６０から２３０への肯定的矢印のフィードバックにより、示される。しかしながら、２４０からの肯定的矢印で示されるように、取得された及び／または集約されたメトリクスに基づいて自動スケーリングトリガ条件が検出された場合に及びその際に、方法は、２５０のように、対応自動スケーリング行動を取ることを開始することを含み得る。例えば、クラスタ内（またはクラスタのインスタンスグループ内）のノードの数は、異なる実施形態において、対応自動スケーリングトリガ条件が満たされたことに応じて、増加または減少され得る。
【００２３】
当実施例において示されるように、方法は、分散アプリケーションの実行が完了する（２６０の否定的矢印及び要素２７０で示される）まで、要素２３０〜２５０において示される動作のうちのいずれか、または全てを適宜繰り返すことを含み得る。
【００２４】
一般に、本明細書において説明される分散コンピューティングシステムにおいて、１つまたは複数のコンピュートノードは、データ格納からデータ集合の部分へアクセスし、データを処理し、処理したデータをデータ格納へ出力し得る（必ずしもではないが、データ集合がアクセスされたのと同一のデータ格納であり得る）。分散コンピューティングシステムは、分散コンピューティングフレームワークに従って、実施され得る。このような分散コンピューティングシステムを実施するフレームワークの非限定的実施例として、Ａｐａｃｈｅ（商標）Ｈａｄｏｏｐ（登録商標）オープンソースソフトウェアライブラリは、単純なプログラミングモデルを使用してコンピュートノードのクラスタにわたる大きなデータ集合の分散処理を可能にするフレームワークを提供する。当ライブラリは、ＭａｐＲｅｄｕｃｅと呼ばれる分散処理アーキテクチャの実装を提供し、これはクラスタ上で並列分散アルゴリズムにより大きなデータ集合を処理するプログラミングモデルを含む。
【００２５】
様々な実施形態において、ＭａｐＲｅｄｕｃｅプログラムは、フィルタリング及び並べ替えを行うＭａｐ（）プロシージャ（本明細書において時に「マッパプロセス」または「マッパ」と称される）と、要約動作を行うＲｅｄｕｃｅ（）プロシージャ（本明細書において時に「リデューサプロセス」または「リデューサ」と称される）とを含み得る。例えば、当手法の下、並列アプリケーション（またはアプリケーションの並列計算またはタスク）は、処理用のコンピューティングノード（例えばホストまたはサーバ）の集合にマッピングされ得る。これらのコンピューティングノードにより行われる計算の結果は、その後、単一の出力データ集合にリデュースされ得る。マスタノードとして設計される１つのノードは、他のコンピューティングノード（例えば「ワーカノード」とも称され得るスレーブノード）によるタスクの分散を制御し得る。いくつかの実施形態において、サービスプロバイダは、仮想化リソースインスタンスの集りをＭａｐＲｅｄｕｃｅクラスタ内のコンピューティングノードとしてプロビジョニングし、ＭａｐＲｅｄｕｃｅクラスタのコンピューティングノードは、オブジェクト格納サービスを介して仮想化格納リソースからデータを取得し、及び／または仮想化格納リソースへデータを書き込み得る。ＭａｐＲｅｄｕｃｅクラスタは任意の数のコンピューティングノードで作成されるが、ＭａｐＲｅｄｕｃｅクラスタのコンピューティングノードの全てがマッパまたはリデューサとして割り当てられる（または構成される）必要はないことに留意されたい。また、マッパプロセス（またはリデューサプロセス）とコンピューティングノードとの間に１対１のマッピングは（必ずしも）存在し得ないことに留意されたい。例えば、多数のマッパプロセスが、単一のコンピューティングノード上で実行され得る。
【００２６】
ＭａｐＲｅｄｕｃｅは、分散コンピューティング環境において、高性能コンピューティング（ＨＰＣ）アプリケーションまたはその大量及び／または複雑な計算（例えば航空宇宙もしくは機械工学のための計算流体力学シミュレーション、または分子流体力学シミュレーション）を実行するために採用され得る並列プログラミング技術である。いくつかの実施形態において、本明細書において説明されるシステムは、クライアント（例えばクライアントアプリケーション、エンドユーザ、サービス加入者、またはサービスの顧客である第三者サービス）のためにＭａｐＲｅｄｕｃｅクラスタ上でプログラムが実行され得るフレームワークを提供し得る。
【００２７】
分散システムにおけるクラスタ（例えばＭａｐＲｅｄｕｃｅクラスタ）の自動スケーリングを実施する方法及びシステムの様々な実施形態が、本明細書において説明される。図３は、様々な実施形態による、本明細書に説明される自動スケーリング技術が実施され得る例示的システム環境を示す。例示的システム環境は、分散計算システム３００を実施し得る。分散計算システム３００は、１つまたは複数のマスタノード３１０と、ワーカノード３２０Ａ〜３２０Ｎ等の複数のワーカノード３２０とを含み得る。マスタノード３１０（複数可）は、ワーカノード３２０により実行される計算を調整する１つまたは複数のコーディネータプロセスを表し得る。ワーカノードはまた、本明細書において「ワーカホスト」「ワーカ」、または「ホスト」と称され得る。分散計算システム３００は、１つまたは複数のネットワークまたは相互接続を使用して、様々なコンポーネントを接続し得る。分散計算システム３００の構成要素は、同じコンピューティングハードウェア上にホスティングされる仮想コンピュートインスタンスから、同じデータセンタ内にホスティングされる異なる物理コンピュートインスタンスまでが、地理的に遠隔となるように、相互に任意の好適な場所に配置され得る。いくつかの実施形態において、マスタノード３１０（複数可）及びワーカノード３２０は、ワーカノードがマスタノード（複数可）の指示の下で同時に類似タスクを実行するＭａｐＲｅｄｕｃｅアーキテクチャを実施し得る。しかしながら、分散計算システム３００は、ＭａｐＲｅｄｕｃｅの代わりに、またはＭａｐＲｅｄｕｃｅに加えて、他の種類の分散計算アーキテクチャを実施し得ると考えられる。
【００２８】
分散計算システム３００を使用して、入力データ３６０の集合はワーカノード３２０により処理され、出力データ３７０の集合が生成され得る。入力データ３６０は、入力パーティション３６０Ａ、３６０Ｂ〜３６０Ｎ等、複数のパーティションに分割され得る。入力データ３６０のパーティションのうちの１つまたは複数は、それぞれのワーカノード３２０に割り当てられ得る。入力データ３６０は、任意の好適な基準に基づいてパーティションに分割され得る。例えば、パーティションの境界は、個々のレコード、個々のデータライン等の間の境界に基づき得る。個別パーティションは、単一のワーカノードにより一緒に処理されるように意図される関連アイテムまたはアイテムのファミリ等、入力データの要素を含み得る。３つのパーティション３６０Ａ、３６０Ｂ、及び３６０Ｎは例示目的で示されるが、入力データの任意の好適な数のパーティションが分散計算システム３００を使用して処理され得ると考えられる。図３に示される個別パーティションの個別ワーカノードへの割り当ては、実施例及び例示の目的で示され、個別パーティションの個別ワーカノードへの任意の好適な割り当てが、分散計算システム３００と共に使用され得ると考えられる。
【００２９】
いくつかの実施形態において、マスタノード３１０（複数可）は、例えば入力データのパーティショニングの態様、及び／または個別パーティションの個別ワーカノードへの割り当ての態様を行うことにより、入力データ３６０の個別パーティション（複数可）を個別ワーカノードへ提供し得る。一実施形態において、マスタノード３１０（複数可）は、パーティション割り当てを示すデータを個別ワーカノードへ送り、各ワーカノードは、任意の好適な技術を使用して、入力データの自分の１つまたは複数のパーティションを取得し得る。例を挙げると、ワーカノードは、例えばネットワークを介して、ワーカノードによりアクセス可能な１つまたは複数の格納デバイス内の１つまたは複数のファイルまたは格納場所から、入力データの一部を読み出し得る。あるいは、マスタノード３１０（複数可）は、ネットワークを使用して、関連パーティション（複数可）を個別ワーカノードへ直接送り得る。様々な実施形態において、特定のワーカノードを使用して処理予定の入力データのパーティション（複数可）は、パーティション（複数可）の処理が開始される前に、部分的または全体的に特定のワーカノードにおけるメモリにロードされ得る。
【００３０】
それぞれのワーカノード３２０は、入力データ３６０の１つまたは複数のパーティションに基づいて、出力データ３７０の１つまたは複数のパーティションを生成する任意の好適な処理タスクを実行し得る。一実施形態において、ワーカノード３２０を使用して実施される処理タスクは、例えばプログラムコードをワーカノードに送ることにより、または１つまたは複数の格納場所からプログラムコードをロードするようにワーカノードに指示することにより、マスタノード３１０（複数可）により提供され得る。ワーカノード３２０により実行される処理タスクの少なくとも一部は、同時に、すなわちお互いに並列して行われ得る。いくつかの実施形態において、それぞれのワーカノード３２０は、入力データの自分のパーティション（複数可）を処理するために、類似タスクを実行し、及び／または類似アルゴリズムを実施し得る。入力データ３６０の処理の結果として、それぞれのワーカノード３２０は、出力データ３７０の１つまたは複数のパーティションを生成し得る。２つの出力パーティション３７０Ａ及び３７０Ｎは例示目的で示されるが、任意の好適な数の出力パーティションが分散計算システム３００を使用して生成され得ると考えられる。それらがワーカノード３２０により生成されると、出力パーティション３７０Ａ〜３７０Ｎは、ワーカノードによりアクセス可能な１つまたは複数の格納デバイス上の１つまたは複数の格納場所に格納され得る。出力パーティション３７０Ａ〜３７０Ｎは、最終出力データとも称され得る。一実施形態において、出力パーティション３７０Ａ〜３７０Ｎはさらに、マスタノード（複数可）により、例えば個別パーティションを単一出力ファイルに集約または連結することで、処理され得る。
【００３１】
それぞれのワーカノード３２０により実行される計算は、第１段階及び第２段階等の多数の計算段階を含み得る。第１段階は、ワーカノード３２０Ａにより行われるマップ段階３３０Ａ、及びワーカノード３２０Ｎにより行われるマップ段階３３０Ｎ等のマップ段階（マッパプロセスが行われる）であり得る。第２段階は、ワーカノード３２０Ａにより行われるリデュース段階３４０Ａ、及びワーカノード３２０Ｎにより行われるリデュース段階３４０Ｎ等のリデュース段階（リデューサプロセスが行われる）であり得る。一実施形態において、マップ段階は、入力データ３６０に基づいて中間出力を生成する任意の計算（複数可）を含み得る。一実施形態において、中間出力は、パーティション化され得るが並び替えられる必要はない。本明細書において使用されるように、用語「ｐａｒｔｉｔｉｏｎｅｄ（パーティション化）」は、データの関連要素がパーティションに一緒にグループ化されることを示す。通常、特定パーティション内のデータの要素は、同じホストを使用して処理されるように意図される。一実施形態において、リデュース段階は、中間出力に基づいて最終出力３７０を生成する任意の計算（複数可）を含み得る。例えば、リデュース段階は、マップ段階により生成されるデータの要素を集約し得る。
【００３２】
図３に例示されるように、いくつかの実施形態において、分散計算システム３００は、ノードのクラスタの（例えばＭａｐＲｅｄｕｃｅクラスタの）自動スケーリングを実施する際採用される監視サービスを含み得る。例えば、様々な実施形態において、それぞれのマスタノード３１０及び／またはワーカノード３２０は、監視コンポーネントを含み得る、または同じシステム内の別個の監視コンポーネント（監視コンポーネント３５０等）と対話し得る。別の実施形態において、監視コンポーネントは、サービスプロバイダネットワーク上の別のシステムにおいて実施され（例えば分散計算システム３００のコンピュートノード及び／または格納ノードのビヘイビアを特徴付ける関連メトリクスを収集及び／または分析するサービスにおいて）、そして容量の追加もしくは削減を行う場合と時を決定するように構成され得る。いくつかの実施形態において、監視コンポーネント３５０は、このようなメトリクスを収及び分析し得る、またはメトリクスを収集して、それらを分析のために別個の自動スケーリング規則エンジンへ渡し、その後、自動スケーリング規則エンジンが、自動スケーリング行動を実行する必要があるか否か、及び必要がある時を決定し得る（図示せず）。いくつかの実施形態において、自動スケーリング規則エンジンは、分散計算システム３００の制御プレーンにおいて、または別のサービス（例えばシステム内の格納サービス及び／またはハードウェア仮想化サービス）の制御プレーンにおいて実施され得る。さらに別の実施形態において、自動スケーリング規則エンジンは、サービスプロバイダによる別個の自動スケーリングサービス内で実施され、本明細書において説明される格納サービス及び／またはハードウェア仮想化サービスは、自動スケーリングサービスのクライアントであり得る。
【００３３】
分散計算システム３００は、図示されない追加コンポーネント、図示よりも少ないコンポーネント、または図示されるコンポーネントの異なる組み合わせ、構成、もしくは数量を含み得ると考えられる。２つのワーカノード３２０Ａ及び３２０Ｎは例示目的で示されるが、任意の好適な数のワーカノードが分散計算システム３００と合わせて使用され得ると考えられる。１つのマスタノード３１０は例示目的で示されるが、任意の好適な数のマスタノード３１０が分散計算システム３００と合わせて使用され得ると考えられる。様々な実施形態において、ワーカノード３２０のうちのいずれか、及び／またはマスタノード３１０（複数可）は、仮想コンピュートインスタンスとして、または物理コンピュートインスタンスとして実施され得る。分散計算システム３００は、１つまたは複数のコンピューティングデバイスを含み、そのうちのいずれかは、図１７に示される例示的コンピュータシステムと同様のコンピューティングデバイスにより実施され得る。様々な実施形態において、分散計算システム３００の異なるコンポーネントの機能は、同じコンピューティングデバイスにより、または異なるコンピューティングデバイスにより提供され得る。様々なコンポーネントのうちのいずれかが異なるコンピューティングデバイスを使用して実施される場合には、それぞれのコンピューティングデバイスは、例えば１つまたは複数のネットワークを介して、通信可能に接続され得る。分散計算システム３００の各コンポーネントは、後述されるそれぞれの機能を実行するのに使用可能なソフトウェア及びハードウェアの任意の組み合わせを表し得る。
【００３４】
いくつかの実施形態において、分散計算システム３００は、ネットワークアクセス可能リソースの配分を管理し得る。インターネット及び／または他のネットワークを介してアクセス可能な１つまたは複数のサービス（様々な種類のクラウドベースコンピューティングまたは格納等）を分散されたクライアント集合に提供するために、企業または公的機関等の事業体により構築されたネットワークは、プロバイダネットワークと称され得る。プロバイダネットワークは、プロバイダにより提供されるインフラストラクチャ及びサービスを実施及び配給するのに使用される物理及び／または仮想化コンピュータサーバ、格納デバイス、ネットワーク機器等の集りといった様々なリソースプールをホスティングする多数のデータセンタを含み得る。リソースは、いくつかの実施形態において、仮想または物理コンピュートインスタンスもしくは格納インスタンス等、「インスタンス」と呼ばれる単位で、クライアントに提供され得る。仮想コンピュートインスタンスは、例えば、指定計算能力（ＣＰＵの種類と数、メインメモリサイズ等を指示することで指定され得る）を有する１つまたは複数のサーバと、指定ソフトウェアスタック（例えばハイパーバイザの上部で同様に作動し得る特定バージョンのオペレーティングシステム）とを備え得る。異なる実施形態において、プロバイダネットワークのリソースを実施するために、汎用または専用コンピュータサーバ、格納デバイス、ネットワークデバイス等を含む多数の異なる種類のコンピューティングデバイスが、単一で、または組み合わせて使用され得る。
【００３５】
いくつかの実施形態において、プロバイダネットワークのオペレータは、自身のクライアントために、リソース予約、制御、及びアクセスインタフェースの順応性のある集合を実施し得る。例えば、プロバイダネットワークは、クライアントがリソースインスタンスを知り、選択し、購入し、アクセスし、及び／または予約することを可能にするプログラムリソース予約インタフェース（例えばウェブサイトまたはウェブページの集合を介する）を実施し得る。一実施形態において、分散計算システム３００を実施するクライアントアクセス可能サービスを使用して、クライアントのためにリソースが予約され得る。このような一実施形態によれば、このような環境における分散計算システム３００は、入力データの集合、またはタスク（複数可）により使用予定の入力データのソースの指示と共に、クライアントのために実行予定の１つまたは複数のタスクの指定を受信し得る。これに応じて、分散計算システム３００は、プロバイダネットワークの選択リソースプールのうちの１つまたは複数のリソースを使用してタスク（複数可）を実施する実行プランを決定し得る。一実施形態において、リソースプールは、様々なタスクの予想計算需要に基づいて、自動的に選択され得る。一実施形態において、リソースプールは、クライアントにより提出される具体的リソース要求または予約に基づいて、選択され得る。分散計算システム３００は、選択リソースを使用したタスク（複数可）の実行をスケジュールし得る。
【００３６】
いくつかの実施形態において、クライアントは、１つまたは複数の好適なインタフェース（１つまたは複数のウェブページ、アプリケーションプログラミングインタフェース（ＡＰＩ）、またはコマンドラインインタフェース等）を使用して、実施予定のタスク（複数可）、入力データ集合、使用予定のコンピューティングリソース、及び／またはタスク（複数可）が開始されるべき時間を指定し得る。一実施形態において、クライアントは、インタフェース（複数可）を使用してタスク（複数可）の現行実行状況を見ることが可能であり得る。一実施形態において、プログラム出力、エラーログ、例外ログ等、実行されたタスクに関する追加情報が、インタフェース（複数可）を介して入手可能であり得る。
【００３７】
分散コンピューティングシステムにおいて（ＭａｐＲｅｄｕｃｅクラスタ上で）ＭａｐＲｅｄｕｃｅ型データ処理アプリケーションを実行する方法の一実施形態が、図４においてフロー図で示される。いくつかの実施形態において、本明細書において説明される自動スケーリング技術は、ＭａｐＲｅｄｕｃｅ型データ処理アプリケーションの実行中に適用され得ること（図示せず）に留意されたい。４００に示されるように、当実施例において、方法は、クライアントがＭａｐＲｅｄｕｃｅ型データ処理アプリケーションを展開することを含み得る。異なる実施形態において、このようなアプリケーションは、様々なプログラミング言語のうちのいずれかを使用して展開され得ることに留意されたい。方法は、４１０のように、クライアントが、ＭａｐＲｅｄｕｃｅ型アプリケーション及びアプリケーションの対象データを、サービスプロバイダにおけるオブジェクト格納システムへアップロードすることを含み得る。例えば、異なる実施形態において、サービスプロバイダへの専用ネットワーク接続を確立することにより、または既に実行されているクラスタに直接データを書き込むことにより、サービスのインポート機能または他の入力インタフェースを使用して、サービスプロバイダの１つまたは複数の物理格納デバイスへ、データはアップロードされ得る。
【００３８】
当実施例において示されるように、方法は、４２０のように、クライアントが、分散コンピューティングサービスを介して、ＭａｐＲｅｄｕｃｅクラスタ等の分散コンピューティングシステム（ＤＣＳ）を構成する（またはその構成を要求する）ことを含み得る。例えば、クライアントは、サービスクライアントのためにＭａｐＲｅｄｕｃｅ型アプリケーションを集合的に実行するように、コンピューティングノード（ホスト）のクラスタを構成し得る（またはその構成を要求し得る）。当ノード（ホスト）はそれぞれ、１つまたは複数のＣＰＵコアを含む。いくつかの実施形態において、クライアントは、ＧＵＩ、コマンドラインインタフェース、スクリプト、ＡＰＩ、または別のインタフェース機構を通して、クラスタ及び／またはクラスタ上で実行予定のジョブの様々なパラメータを指定可能であり得る（例えばクラスタ内でプロビジョニングする仮想化リソースインスタンスの数、使用するインスタンスの種類、インストールするアプリケーション、及び／またはアプリケーション及びその対象データの場所）。
【００３９】
図４における４３０にて示されるように、方法は、クライアントが、追加ソフトウェアをインストールするために、及び／またはＤＣＳ（例えばＭａｐＲｅｄｕｃｅクラスタ）の１つまたは複数のデフォルト構成設定を変更するために、１つまたは複数のブートストラップ行動を採用することを含み得る。ブートストラップ行動は、クラスタが立ち上げられた時に（例えばＭａｐＲｅｄｕｃｅアプリケーションが開始する前、並びにノードがデータを処理し始める前）、それぞれのクラスタノード上で実行されるスクリプトである。様々な実施形態において、クライアントは、カスタムブートストラップ行動を呼び出し得る、またはサービスプロバイダにより提供される事前定義のブートストラップ行動を呼び出し得る。方法はまた、４４０のように、クライアントが、ＤＣＳ（例えばＭａｐＲｅｄｕｃｅクラスタ）を立ち上げてＭａｐＲｅｄｕｃｅアプリケーションの実行を開始することと、そして（アプリケーションが実行されると、またはアプリケーションの実行が一旦終了すると）、４５０のように、クライアントが、オブジェクト格納システムからＭａｐＲｅｄｕｃｅアプリケーションの出力を読み出すこととを含み得る。
【００４０】
いくつかの実施形態において、ＭａｐＲｅｄｕｃｅアプリケーションの処理が完了すると（図示せず）、サービスプロバイダは、ＤＣＳ（例えばＭａｐＲｅｄｕｃｅクラスタ）を自動で終了させ得ることに留意されたい。別の実施形態において、ＤＣＳ（例えばＭａｐＲｅｄｕｃｅクラスタ）は、ＭａｐＲｅｄｕｃｅアプリケーションの処理が完了した後も作動し続け、クライアントはＤＣＳ／クラスタにさらに多くの仕事を投入可能であり得る。いくつかの実施形態において、クライアントは、サービスプロバイダにより（例えばＧＵＩ、コマンドラインインタフェース、スクリプト、ＡＰＩ、または別のインタフェース機構を通して）公開されるＤＣＳ（例えばＭａｐＲｅｄｕｃｅクラスタ）の正常性、及び／またはＭａｐＲｅｄｕｃｅアプリケーションの様々な監視ツールもしくはユーティリティの進捗を、監視可能であり得ることにも留意されたい。いくつかの実施形態において、クライアントは、より多くの、またはより少ないデータを処理するために、いつでもＤＣＳ／クラスタに容量を追加する、またはＤＣＳ／クラスタから容量を取り除くことが可能であり得る。サービスプロバイダはまた、いくつかの実施形態において、１つまたは複数のデバッグユーティリティも公開し得る（例えばＧＵＩ、コマンドラインインタフェース、スクリプト、ＡＰＩ、または別のインタフェース機構を通して）。
【００４１】
ＭａｐＲｅｄｕｃｅジョブを実行するように構成されるワーカノードの一実施形態が、図５におけるブロック図により例示される。いくつかの実施形態において、本明細書において説明される自動スケーリング技術は、多数のワーカノードによるＭａｐＲｅｄｕｃｅ型データ処理アプリケーションの実行中に適用され得ること（図示せず）に再び留意されたい。当実施例において示されるように、ワーカノード（ワーカノード５２０等）は、１つまたは複数の入力パーティション５６０を、入力として使用して、出力パーティション（すなわち最終出力データ）５７０を生成し得る。ワーカノード５２０は、図３に例示されるワーカノード３２０Ａ〜３２０Ｎに関して前述されたのと同じように実施され得る。入力パーティション５６０（複数可）の処理は、ワーカノード５２０を使用して実行されるマップ段階５３０及びリデュース段階５４０を含み得る。
【００４２】
当実施例において示されるように、マップ段階５３０は、マップ計算５３１を含み得る。マップ計算５３１は、入力パーティション５６０（複数可）の要素を入力として使用するプログラム命令の実行を含み得る。マップ計算５３１内で使用されるプログラムコードは、マスタノード（図１に例示されるマスタノード１１０のうちの１つ等）により指定され得る。マップ計算５３１は、中間出力データ５３２を生成し得る。中間出力データ５３２は、データの関連要素が同じワーカノード５２０上で一緒にグループ化されるように、パーティション化され得る。中間出力データ５３２のパーティション化は、中間出力データ５３２がデータの関連要素（例えばアイテム及び／またはアイテムのファミリのデータ）を含むことを示し得る。中間出力データ５３２のパーティション化は、中間出力データ５３２内のデータの要素がリデュース段階５４０において一緒に処理され得る、すなわち単一のワーカノードを使用して、多数のワーカノードへの再パーティション化及び分散なしに、リデュース段階において処理され得ることを示し得る。
【００４３】
いくつかの実施形態において、並び替え動作５３５が、マップ段階５３０とリデュース段階５４０との間に行われ得る。並び替え動作５３５は、中間出力データ５３２内のデータの要素を並び替えて、並び替え済み中間出力データ５３６を生成し得る。中間出力データ５３２は、リデュース段階５４０で求められるデータのキー（複数可）またはフィールド（複数可）等、任意の好適なデータのキー（複数可）またはフィールド（複数可）に基づいて、並び替えられ得る。
【００４４】
当実施例において示されるように、リデュース段階５４０は、リデュース計算５４１を含み得る。リデュース計算５４１は、中間出力データ５３２または並び替え済み中間出力データ５３６の要素を入力として使用するプログラム命令の実行を含み得る。リデュース計算５４１内で使用されるプログラムコードは、マスタノード（図３に例示されるマスタノード３１０のうちの１つ等）により指定され得る。リデュース計算５４１は、最終出力データ５７０を生成し得る。いくつかの実施形態において、リデュース計算５４１は、中間出力データ５３２または並び替え済み中間出力データ５３６の集約を実行し得る。別の実施形態において、並び替え動作は、リデュース段階５４０の一部として、ワーカノード５２０により実行され得ることに留意されたい。いくつかの実施形態において、マップ段階５３０とリデュース段階５４０は、同じワーカノード５２０上で実行される計算を用いて行われ、中間データ５３２または５３６は、別のワーカノードに提供され得ない。
【００４５】
本明細書においてより詳しく説明されるように、サービス顧客または加入者は、様々なトリガソースからの様々なトリガの種類（メトリクス）に基づく式に依拠する自動スケーリングポリシーを定義することが可能であり得る。例えば、自動スケーリングポリシーの一部として評価される（例えば自動スケーリング規則エンジンにより評価される）式において使用されるいくつかのメトリクスは、サービスプロバイダネットワーク上の別個の監視サービスにより収集され得る（例えばクラスタ、リソースインスタンス、またはアプリケーションから発せられる内部アクセス対象メトリクスを収集する監視サービス）。他のトリガソースは、カスタムアプリケーション（例えば１つまたは複数のカスタムメトリクスを発するように装備されたカスタムアプリケーション）、またはサービスプロバイダネットワーク内の別のサービスを含み得る。本明細書において説明されるように、トリガデータは、性能またはビヘイビアメトリクス、格納メトリクス（例えば格納消費量、残存容量）、クロン式（例えば時間情報、時計／カレンダー型のトリガ情報）、保留中または現在実行中のジョブのステートまたは数を示すメトリクス、価格設定情報、費用情報、もしくはＭａｐＲｅｄｕｃｅクラスタに特有であり得るまたはあり得ない他のメトリクスを含み得る。
【００４６】
いくつかの実施形態において、デフォルトのメトリクス集合は、デフォルトで利用可能とされ、顧客は、１つまたは複数の他のメトリクスを定義することにより、自動スケーリング判定を行う際使用可能なメトリクス集合を、増加可能である（または増加不可能である）。いくつかの実施形態において、サービスプロバイダは、顧客が関心を持ちそうな種類のメトリクスを特定したことに応じて、及び／またはある種類の自動スケーリング判定とよく相関する他のメトリクスを特定したことに応じて、デフォルトのメトリクス集合を増加させ得る。例えば、デフォルト及び／またはカスタムメトリクスのいくつかの組み合わせは、これらのデフォルトまたはカスタムメトリクス単独よりも、より良い自動スケーリング判定トリガを作り得ることが特定され得る。いくつかの実施形態において、本明細書において説明されるシステムは、顧客アプリケーションが自分自身のメトリクスを定義し、報告し、かつ自分自身の自動スケーリングポリシーを定義し、適用することを可能にするフレームワークを提供し得る。自動スケーリング判定を行う際使用する顧客により定義（または選択）され得るいくつかの例示的メトリクスには、クラスタ内で利用可能な全体メモリ（例えばメモリ高集中型アプリケーションを作動している場合）、またはローカルＨＤＦＳディスク容量（例えば長時間作動しており、自身のディスクが一杯になると障害を起こしやすいクラスタにおける当容量）が含まれ得る。一般に、顧客は、自身のアプリケーション及び／または作業負荷により頻繁に使用されるリソースの使用率及び／またはビヘイビアへの洞察を与えるメトリクスを、自動スケーリング判定を行う際使用するために、定義または選択し得る。いくつかの実施形態において、顧客は（自身のアプリケーション内で）自分自身のカウンタ（例えばアプリケーション特有メトリクスを反映する）を設定可能であり、自動スケーリング判定を行う際、これらのカウンタの値を使用可能であり得る。
【００４７】
いくつかの実施形態において、本明細書において説明されるシステムは、クラスタ自動スケーリングポリシーを作成し施行する際、既存の監視サービスを採用し得る。例えば、分散コンピューティングシステム（例えばＨａｄｏｏｐフレームワークまたはＭａｐＲｅｄｕｃｅクラスタを実施するもの）は、このような既存のシステムと統合され、これによりメトリクス情報を収集するその既存プロセス及び／またはそのクライアントインタフェースを活用する（これらは、本明細書に説明されるように、自動スケーリング規則及び／またはポリシーを定義する際使用するために修正され得る）。いくつかのこのような実施形態において、分散コンピューティング環境において作成されたクラスタは、デフォルトで既存の監視サービスに対しメトリクスを発し、サービスプロバイダは、どのメトリクスが監視システムへ発せられるかを制御し得る。例えば、一実施形態において、ＭａｐＲｅｄｕｃｅクラスタを実施する分散コンピューティングシステムは、既存の監視サービスに対し２３個のクラスタレベルメトリクスと、よく使われるいくつかのアプリケーションまたはエンジンごとに別の３０〜４０個のアプリケーション特有メトリクスとを提供し得る（デフォルトで）。一実施例において、ＰｒｅｓｔｏＳＱＬアプリケーションを実施するシステムにおいて自動スケーリングを処理するために、メモリ使用率に関連する１つまたは複数のメトリクスが、監視システムへ発せられ得る。顧客は、様々な実施形態において、監視システムにより収集されるあらゆる全てのメトリクス及び／もしくはカスタムメトリクスを使用するポリシー、または他のトリガソースから取得されるポリシーを定義することが可能であり得る。一般に、本明細書において説明されるシステム及び技術は、ユーザに自身のクラスタの自動スケーリングをカスタマイズする能力を与え、多数の異なるアプリケーションのクラスタ自動スケーリングを容易にし得る。
【００４８】
本明細書において説明されるように、ＭａｐＲｅｄｕｃｅクラスタは、様々な実施形態において、以下のうちの１つまたは複数によりトリガされた時に、自動で拡張または縮小するように構成され得る。
‐  指定時間にわたって指定閾値を上回る／下回る、監視サービスにより取り込まれるメトリク。例えば、少なくとも６０分間、クラスタ内のマッパの数が２個未満である場合に、自動スケーリング行動（例えば容量を削減する行動）が引き起こされ得る。
‐  指定時間にわたって指定閾値を上回る／下回るクラスタメトリク（例えばクラスタにより発行されるが、監視サービスにおいて利用可能ではないクラスタメトリク）。例えば、少なくとも１２０分間、格納対仮想化コンピューティングサービスのスループットが１００以上である場合に、自動スケーリング行動（例えば容量を追加する行動）が引き起こされ得る。
‐  クラスタ上の全ての進行中及び保留中のジョブを完了するための推定時間。例えば、全てのジョブの推定完了時間が１２０分以上である場合に、自動スケーリング行動（例えば容量を追加する行動）が引き起こされ得る。
‐  曜日（もしくは日付）及び／または時間。例えば、毎土曜日の１７時に、自動スケーリング行動（例えば容量を追加もしくは削減する行動）が引き起こされ得る。
【００４９】
本明細書において説明されるように、自動クラスタスケーリングは、１つまたは複数の自動スケーリングポリシーにより統制され得る。いくつかの実施形態において、本明細書において説明される自動スケーリング技術を活用するために、顧客は、デフォルトの自動スケーリングポリシー（本明細書において説明されるもののうちのいずれか等）を頼りにし得る、または自分自身の自動スケーリングポリシーを書き、それらをサービスプロバイダネットワークへ（例えばその格納サービスへ）アップロードし得る。いくつかの実施形態において、自動スケーリングポリシーは１つまたは複数の規則を含み、各規則は以下の要素の一部または全てを含み得る。
‐  評価される１つまたは複数の式。顧客は、自動スケーリングトリガ条件を表す１つの式を定義し得る、または２つ以上の式を組み合わせて、論理演算子ＡＮＤもしくはＯＲを使用する自動スケーリングトリガ条件を作成し得る。例えば、以下が自動スケーリングポリシーにおいて定義された有効な式であり得る。
・“ｎｕｍｂｅｒＯｆＭａｐｐｅｒｓ  ＜  ２  ｆｏｒ  ａｔ  ｌｅａｓｔ  ６０  ｍｉｎｕｔｅｓ”（“マッパの数  ＜  少なくとも６０分間２個”）
・ＯＲ（“ｎｕｍｂｅｒＯｆＭａｐｐｅｒｓ  ＜  ２  ｆｏｒ  ａｔ  ｌｅａｓｔ  ６０  ｍｉｎｕｔｅｓ”、“ｎｕｍｂｅｒＯｆＭａｐｐｅｒｓ  ＜  ５  ｆｏｒ  ａｔ  ｌｅａｓｔ  １２０  ｍｉｎｕｔｅｓ”）（ＯＲ（“マッパの数  ＜  少なくとも６０分間２個”、“マッパの数  ＜  少なくとも１２０分間５個”））
‐  式が真の場合に取る行動。例えば、行動は以下のうちの１つであり得る。
・“ａｄｄ”（“追加”）（すなわちクラスタに、またはクラスタの特定のインスタンスグループに、容量を追加する）。
・“ｒｅｍｏｖｅ”（“削除”）（すなわちクラスタから、またはクラスタの特定のインスタンスグループから、容量を削除する）。
・“ｔｅｒｍｉｎａｔｅ‐ｃｌｕｓｔｅｒ”（“クラスタを終了”）（すなわちクラスタ全体を終了する）。クラスタを終了する行動の場合、下記に挙げられる残りのパラメータのうちのいずれも指定する必要はあり得ないことに留意されたい。
‐  クラスタ（またはクラスタの特定インスタンスグループ）に対し追加する、またはクラスタ（またはクラスタの特定インスタンスグループ）から削除する容量の量または率（例えばリソースインスタンスの数または率）。例えば、ポリシーは、リソース容量における変化を、以下のうちの１つで指定し得る。
・“５”（例えば５個のリソースインスタンスが追加または削除されなければならない）。
・“２０％”（例えば変更は現在のリソースインスタンスの２０％を示さなければならない）。
‐  行動が実行されるべきインスタンスグループ（複数可）。様々な実施形態において、ポリシーは、１つの指定インスタンスグループに関してのみ、多数の指定インスタンスグループにおいて、または特定種類の全てのインスタンスグループ（例えば全てのコアインスタンスグループもしくは全てのタスクインスタンスグループ）において、行動が取られるべきであることを示し得る。例えば、ポリシーは、インスタンスグループを以下のうちの１つで指定し得る。
・“ａｂｃ‐１２３”（すなわち１つのインスタンスグループの識別子）。
・“ａｂｃ‐１２３”、“ｘｙｚ‐９７８”（すなわち２つのインスタンスグループの識別子）。
・“ｃｏｒｅ”（“コア”）（例えば格納ノードを含む全てのインスタンスグループを示す）。
・“ｔａｓｋ”（“タスク”）（例えばコンピュートノードを含む全てのインスタンスグループを示す）。
【００５０】
いくつかの実施形態において、分散コンピューティングシステムにより提供されるデフォルトのポリシーのうちの少なくともいくつかは、所定の使用事例に特有であり得る。例えば、メトリクス及び規則は１つの使用事例から別の使用事例において大きく異なり得ることから、抽出、変換、及びロード（ＥＴＬ）に関する１つのデフォルト自動スケーリングポリシー（またはデフォルト自動スケーリングポリシー集合）と、短待ち時間問い合わせにより好適な別のデフォルト自動スケーリングポリシー（またはデフォルト自動スケーリングポリシー集合）とが存在し得る。
【００５１】
いくつかの実施形態において、いくつかの（全てでなければ）自動スケーリングポリシーは、前述の要素に加えて、クラスタレベル制限集合を含み得る。これらのクラスタレベル制限は、様々な実施形態において、他のクラスタレベル制限と同様に、以下のうちのいずれかまたは全てを含み得る。
‐  自動スケーリング動作によりいくつのインスタンスが削除可能かを制約するクラスタの任意最小インスタンス数。例えば、容量を削除する自動スケーリング動作を受けて、作用対象であるクラスタまたはクラスタのインスタンスグループにおいて５個を下回るインスタンスが残ることがないよう動作を制約するために、ポリシーは当制限を“５”という値に設定し得る。
‐  自動スケーリング動作によりいくつのインスタンスが追加可能かを制約する任意最大インスタンス数。例えば、容量を追加する自動スケーリング動作を受けて、作用対象であるクラスタまたはインスタンスグループにおいて２５個を超えるインスタンスが含まれることがないよう動作を制約するために、ポリシーは当制限を“２５”という値に設定し得る。
‐  次に可能な自動スケーリングイベントまで待機する時間（例えば分）。例えば、クラスタまたはクラスタのインスタンスグループに適用された自動スケーリング動作の完了後少なくとも３０分まで、クラスタまたはクラスタのインスタンスグループに対し別の自動スケーリング動作が適用されることを防ぐために、ポリシーは当制限を“３０”という値に設定し得る。
【００５２】
いくつかの実施形態において、顧客は、サービスプロバイダにより事前に定義された式を書くためのドキュメント構造及び構文を使用して、自動スケーリングポリシードキュメント（例えばＪａｖａＳｃｒｉｐｔ（登録商標）  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎを使用して書かれるドキュメント、すなわちＪＳＯＮドキュメント）を作成することにより、自分自身のポリシーを書く能力を有し得る。いくつかの実施形態において、顧客は、もたらされた自動スケーリングポリシードキュメントを、サービスプロバイダネットワーク上の格納サービスにアップロードし、その後、自動スケーリングを有効化する時に、ドキュメントへのパスを提供し得る。別の実施形態において、自動スケーリングポリシードキュメントは、分散コンピューティングシステムまたはクラスタの制御プレーンに格納され、自動スケーリング判定を行う時に自動スケーリング規則エンジンによりアクセスされ得る。
【００５３】
本明細書においてより詳しく説明されるように、いくつかの実施形態において、ユーザ（例えばサービス顧客または加入者）は、自動スケーリングポリシーを組み合わせ得る（例えばユーザは、多数の自動スケーリング規則を１つのポリシー内に含め得る、または多数の自動スケーリングポリシー（それぞれが１つまたは複数の自動スケーリング規則を定義する）を同じクラスタまたはクラスタのインスタンスグループと対応付け得る）。いくつかの実施形態において、自動スケーリング規則間または自動スケーリングポリシー間の競合を、プログラム的に検証することは不可能であり得る（例えば顧客はカスタムアプリケーション特有メトリクスを定義し、これらをカスタム自動スケーリングポリシーにおける式内で使用することが可能であるため）。従って、いくつかの実施形態において、任意の潜在的競合は、以下のような順序付けに基づく競合解消機構を使用して解消され得る。すなわち各規則またはポリシーの優先度は、ポリシーごとの規則またはインスタンスグループごとのポリシーのリストにおける規則またはポリシーの位置により与えられ得る。いくつかの実施形態において、全てのポリシーは評価され得るが、自動スケーリング行動を引き起こす第１ポリシー（またはポリシー内の規則）のみが、行われる行動をもたらす。別の規則またはポリシーが競合する行動を引き起こす場合、その行動は行われない。いくつかの実施形態において、顧客は、優先順位または評価順序を、各自動スケーリングポリシーまたはその規則と、明確に対応付けることが可能であり得る。
【００５４】
自動スケーリングポリシーを作成する際に既存の監視サービスが採用されるいくつかの実施形態において、監視サービスは、顧客が自身のカスタムメトリクスを定義し、監視サービスへ直接押し出すことを可能にする手段である公衆対向ＡＰＩを提供し得る。別の実施形態において、カスタムメトリクスの作成は、既存の監視サービスから切り離され得る。しかしながら、いくつかのこのような実施形態において、メトリクが監視サービスにより収集されようが、別のトリガソースを介して取得されようが、システムは、メトリクごとに一意的識別子または名前が存在することを確保する必要があり得る。いくつかの実施形態において、顧客はそれから、これらの一意的識別子または名前を、トリガソースにかかわらず、自身のカスタムポリシーに使用し得る。
【００５５】
自動スケーリングポリシーを作成する際に既存の監視サービスが採用される一例示的実施形態において、監視サービスのＡＰＩは、監視サービスにより監視及び／または収集されるメトリクスのうちの１つまたは複数に依拠する自動スケーリングトリガ条件を表す式を書く時に、使用され得る。例えば、このような一実施形態において、監視サービスにより収集されたメトリクを用いる適正形成式には、以下のように、引用符内に含まれ、スペースで区切られた４つの要素が含まれ得る。
構文：“［メトリク名］［＞、＞＝、＜、＜＝、＝＝］［閾値］［時間量（分）］”
【００５６】
当構文を使用して作られたいくつかの例示式が、以下に示される。第１式において、メトリク“ＭａｐｐｅｒｓＲｅｍａｉｎｉｎｇ”（“残りのマッパ”）は閾値２と比較され、当メトリクの値が少なくとも６０分にわたって２未満である場合に、式は真と評価される。第２式において、メトリク“ＭａｓｔｅｒＣＰＵ”（“マスタＣＰＵ”）は閾値０．０１と比較され、当メトリクの値が少なくとも６０分にわたって０．０１未満である場合に、式は真と評価される。
“ＭａｐｐｅｒｓＲｅｍａｉｎｉｎｇ  ＜  ２  ６０”（“残りのマッパ  ＜  ２  ６０”）
“ＭａｓｔｅｒＣＰＵ  ＜  ．０１  ６０”（“マスタＣＰＵ  ＜  ．０１  ６０”）
【００５７】
自動スケーリングポリシーを作成する際に既存の監視サービスが採用されるいくつかの実施形態において、全ての進行中及び保留中ジョブを完了するための推定時間を用いる適正形成式には、以下のように、引用符内に含まれ、スペースで区切られた３つの要素が含まれ得る。
構文：“［推定時間］［＞、＞＝、＜、＜＝、＝＝］［時間量（分）］”
【００５８】
当構文を使用して作られた例示式は、“ｅｓｔｉｍａｔｅｄＴｉｍｅ  ＞＝  １２０”（“推定時間  ＞＝  １２０”）である。全てのジョブの推定完了時間が１２０分以上である場合に、当式は真と評価される。
【００５９】
自動スケーリングポリシーを作成する際に既存の監視サービスが採用されるいくつかの実施形態において、日付／時間を用いる適正形成式は、以下のように、引用符内に含まれたソフトウェアユーティリティ「クロン」と呼ばれる日付／時間式を使用し得る。
構文：“［クロン日付／時間式］”
【００６０】
当構文を使用して作られた例示式は、“０００？*ＳＡＴ*”である。当式は、毎土曜の午前零時に真と評価される自動スケーリングトリガ条件を表し得る。例えば、当式は、自動スケーリング行動（例えばクラスタに２０ノードを追加すること）が毎土曜の夜の午前零時に行われなければならないことを指定する自動スケーリングポリシーに含まれ得る。当実施例において、補足自動スケーリングポリシーは、クラスタが毎月曜の朝４時に削減されなければならないことを指定し得る。
【００６１】
いくつかの実施形態において、自動スケーリングポリシーは、多数の自動スケーリング規則を含み得る。このような実施形態において、自動スケーリングポリシー内で定義される規則は、順番に、お互いに独立して評価され得る。いくつかの実施形態において、真と評価された第１規則は、対応自動スケーリング行動を引き起こし、一旦規則のうちのただ１つが真に評価されると、他の規則は評価されなくなる。従って、単一の自動スケーリングポリシー内の多数の規則を順序付ける時には、注意しなければならない。具体的な一実施例において、単一の自動スケーリングポリシーは、２時間を超える時間ＨＤＦＳ使用率が９０％を超える場合にクラスタ（またはクラスタのインスタンスグループ）を拡張させる第１規則と、クラスタが１時間を超える時間遊休状態である場合にクラスタ（またはクラスタのインスタンスグループ）を縮小させる第２規則とを含み得る。規則評価器（例えば自動スケーリング規則エンジン）が現行のメトリクス集合に対して自動スケーリングポリシーを評価するように呼び出された時に、第１規則が真と評価された場合、クラスタは拡張され、第２規則は全く評価され得ない。
【００６２】
いくつかの実施形態において、クラスタ自動スケーリングは任意であり、クラスタ作成の際に有効化され得る。当有効化は、例えばコマンドラインインタフェース内にスイッチを含ませて、自動スケーリングポリシーを指定することにより、またはデフォルトのポリシーが適用されるべきであると指定することにより、行われ得る。例えば、一実施形態において、クラスタ自動スケーリングは、以下のコマンドのうちの１つを使用して有効化され得る。
＄ｃｒｅａｔｅ‐ｃｌｕｓｔｅｒ  ―ｅｎａｂｌｅ‐ａｕｔｏ‐ｓｃａｌｅ  “ｄｅｆａｕｌｔ‐ｐｏｌｉｃｙ”（＄クラスタ作成  ―自動スケーリング“デフォルトポリシー”有効化）
＄ｃｒｅａｔｅ‐ｃｌｕｓｔｅｒ  ―ｅｎａｂｌｅ‐ａｕｔｏ‐ｓｃａｌｅ  “ｓｔｏｒａｇｅ‐ｓｙｓｔｅｍ／ｐａｔｈ／ｔｏ／ｍｙ／ｐｏｌｉｃｙ”（＄クラスタ作成  ―自動スケーリング“格納システム／ｐａｔｈ／ｔｏ／ｍｙ／ｐｏｌｉｃｙ”有効化）
【００６３】
同様に、いくつかの実施形態において、クラスタ自動スケーリングは、作動中クラスタに対し有効化され得る（例えばクラスタ自動スケーリングなしのクラスタ作成の後で）。例えば、一実施形態において、クラスタ自動スケーリングは、以下のコマンドのうちの１つを使用して、作動中クラスタ上で有効化され得る。
＄ｃｌｕｓｔｅｒ‐ｉｄ  ｊ‐１２３４５６７８  ―ｅｎａｂｌｅ‐ａｕｔｏ‐ｓｃａｌｅ  “ｄｅｆａｕｌｔ‐ｐｏｌｉｃｙ”（＄クラスタ‐ｉｄ  ｊ‐１２３４５６７８  ―自動スケーリング“デフォルトポリシー”有効化）
＄ｃｌｕｓｔｅｒ‐ｉｄ  ｊ‐９８６４２  ―ｅｎａｂｌｅ‐ａｕｔｏ‐ｓｃａｌｅ  “ｓｔｏｒａｇｅ‐ｓｙｓｔｅｍ／ｐａｔｈ／ｔｏ／ｍｙ／ｐｏｌｉｃｙ”（＄クラスタ‐ｉｄ  ｊ‐９８６４２  ―自動スケーリング“格納システム／ｐａｔｈ／ｔｏ／ｍｙ／ｐｏｌｉｃｙ”有効化）
【００６４】
自動スケーリングポリシーを作成する際に既存の監視サービスが採用される別の実施形態において（及び既存の監視サービスを採用しない少なくともいくつかの実施形態において）、クラスタ自動スケーリングは、クラスタ作成の際に、またはクラスタの作動中に、分散コンピューティングシステムのグラフィカルユーザインタフェース（ＧＵＩ）（もしくは当システムの任意のコンポーネント）を通して、またはポリシー／規則構築アプリケーションを実施するユーザインタフェース「ウィザード」を通して、有効化され得ることに留意されたい。
【００６５】
仮想化コンピューティングリソースインスタンスのクラスタに対する自動スケーリングポリシーを定義する方法の一実施形態が、図６におけるフロー図により例示される。６１０に例示されるように、当実施例において、方法は、サービス顧客または加入者のために所定のアプリケーション（またはその計算）を実行する対象となる仮想化コンピューティングリソースインスタンスのクラスタを作成する要求を、サービスが受信することを含み得る。方法は、６２０のように、サービスがクラスタを作成することを含み、これは、１つまたは複数のインスタンスグループにプロビジョニングリソースインスタンスを含ませることを含み得る。いくつかの実施形態において、リソースインスタンスは種類によってグループ化され、例えば１つのインスタンスグループは多数の格納ノードを含み、一方別のインスタンスグループはコンピュートノードを含み得る。別の実施形態において、リソースインスタンスは、所定のアプリケーションまたは計算を実行する際のそれらのロールに従ってグループ化され得る（例えばマッピング段階に関わるノードは、リデュース段階に関わるノードとは異なるインスタンスグループに属し得る）。
【００６６】
図６に例示されるように、方法は、６３０のように、サービスが、自動スケーリングポリシーの一部として評価される式を定義する入力を受信することを含み、当式は、サービスプロバイダシステムにより、クラスタにより、または所定のアプリケーションにより発せられる１つまたは複数のデフォルトのメトリクス、並びに／あるいは、アプリケーションにより発せられる、またはデフォルトもしくはカスタムメトリクスのうちの他のものを集約して作成される、１つまたは複数のカスタムメトリクスを含み得る。方法はまた、６４０のように、サービスが（例えば自動スケーリングポリシーのために）、式が真となった場合に取られるべき行動（例えば容量を追加する、または削減すること）、追加または削減するリソースインスタンスの量または率、及び／またはポリシーが適用されるインスタンスグループ（複数可）を定義する入力を受信することを含み得る。例えば、異なるインスタンスグループにおけるリソースインスタンスに適用される自動スケーリングポリシーのうちの少なくともいくつかは、異なり得る。当実施例において示されるように、方法はまた、６５０のように、サービスが（任意で）、追加／削除可能なインスタンス数に関するクラスタレベル制限、及び／または連続自動スケーリングイベント間の最小時間を指定する入力を受信することを含み得る。
【００６７】
当実施例において示されるように、６６０からの肯定的矢印が示す通りに当クラスタに対応付けるポリシーがもっとある場合、方法は、追加ポリシーを作成してそれらをクラスタに対応付けるために、６３０〜６５０に示される動作を適宜繰り返すことを含み得る。６６０からの否定的矢印が示す通りに当クラスタに対応付ける追加ポリシーがない場合（または一旦なくなると）、方法は、６７０のように、サービスが、対象データを所定のアプリケーションに配給し、クラスタ上でその実行を開始することを含み得る。当実施例において示されるように、所定のアプリケーションを実行することは、必要に応じて、定義された自動スケーリングポリシーを適用することを含み得る。いくつかの実施形態において、クラスタに（またはクラスタの１つまたは複数のインスタンスグループに）対応付けられた自動スケーリングポリシーのうちの１つまたは複数は、所定のアプリケーションの実行中に修正され得ることに留意されたい（例えばクライアントからサービスにより受信される入力に応じて）。いくつかの実施形態において、１つまたは複数の追加自動スケーリングポリシーは、所定のアプリケーションの実行中に、定義され、及び／またはクラスタ（もしくはクラスタの１つもしくは複数のインスタンスグループ）に対応付けられ得る、あるいは自動スケーリングポリシーとクラスタ（またはクラスタの１つまたは複数のインスタンスグループ）との対応付けは、所定のアプリケーションの実行中に取り消され得る。このような修正、追加、及び取り消しは、図６に図示されない。いくつかの実施形態において、自動スケーリングポリシーは、クラスタの容量を増加させるために、サービスが、クラスタに１つまたは複数のインスタンスグループを追加するように（クラスタ内の任意の既存のインスタンスグループに容量を追加するのではなく）構成され得ることを指定し得ることにも留意されたい。同様に、自動スケーリングポリシーは、クラスタの容量を減少させるために、サービスが、クラスタから１つまたは複数のインスタンスグループを削除するように（クラスタ内の任意の既存のインスタンスグループから容量を削除するのではなく）構成され得ることを指定し得る。
【００６８】
様々な実施形態において、サービスプロバイダネットワークのインフラストラクチャ内で、本明細書において説明されるクラスタ自動スケーリング技術を支援する様々な方法が存在し得る。例えば、図１は、ＭａｐＲｅｄｕｃｅクラスタの自動スケーリングを実施するサービスプロバイダシステムの一実施形態を例示する。当実施例において、プロバイダネットワークは、ＭａｐＲｅｄｕｃｅクラスタ内の監視コンポーネント（例えばメトリクスコレクタまたはメトリクス収集エージェント）と、集中監視サービス兼メトリクスアグリゲータと、自動スケーリングトリガ条件を評価する集中自動スケーリング規則エンジンと、これら評価に起因する任意の自動スケーリング行動を遂行する集中リソースマネジャとを含む。いくつかの実施形態において、クライアント（例えばサービスプロバイダの顧客または加入者）が、興味のあるメトリクスと、クラスタ内の様々なインスタンスグループに適用したい自動スケーリングポリシーとを定義した後、これらの定義は、例えば自動スケーリングポリシー情報１２６として、リソース管理データベース（図１におけるリソース管理データベース１７０等）にロードされ得る、またはクラスタ（またはクラスタのインスタンスグループのうちの１つまたは複数）の論理データモデル内に格納され得る。続いて監視サービスが、例えば所定の周期で、ポリシーと、ポリシーが依拠するメトリクスとを取得し、それらを自動スケーリング規則エンジンに対し利用可能にし、その後、規則エンジンが、ポリシーにより定義された自動スケーリングトリガ条件を評価し、ポリシーにより呼び出される任意の行動を開始し得る。いくつかの実施形態において、規則エンジンは、サービスプロバイダシステムの制御プレーン（または当システムの分散コンピューティングサービスの制御プレーン）内で実施され、当規則エンジンは、顧客定義ポリシーを調べ、自動スケーリング判定を行うために、これを現在のメトリクス集合に適用し得る。
【００６９】
ＭａｐＲｅｄｕｃｅクラスタにおいて自動スケーリングを実行する方法の一実施形態が、図７におけるフロー図により例示される。７１０に例示されるように、当実施例において、方法は、仮想化リソースインスタンスを顧客に提供するサービスが、所定のＭａｐＲｅｄｕｃｅ型データ処理アプリケーションの実行のために、ＭａｐＲｅｄｕｃｅクラスタの仮想化コンピューティング及び／または格納リソースインスタンスをプロビジョニングすることを含み得る。方法は、７２０のように、１つまたは複数の自動スケーリングポリシーがＭａｐＲｅｄｕｃｅクラスタ及び／または所定のＭａｐＲｅｄｕｃｅ型データ処理アプリケーションに対応付けられていることを、サービスが特定することを含み得る。例えば、サービスは、１つまたは複数のデフォルトまたはクライアント指定のポリシーが、クラスタに（もしくはクラスタの１つもしくは複数のインスタンスグループに）またはアプリケーションに対応付けられていることを特定し得る（例えば格納されているポリシー情報に基づいて、あるいは１つまたは複数の自動スケーリングポリシーを定義または選択する入力の受信に応じて）。当ポリシーには、例えば、クラスタ（もしくはクラスタのリソースインスタンス）またはアプリケーションにより発せられるメトリクスに依拠する、あるいは他のメトリクス（例えばクラスタ、クラスタのインスタンス、またはアプリケーションにより発せられる、あるいは代替ソースから受信または取得されるメトリクス）を集約して作成される、１つまたは複数のシステム全体、クラスタ特有、アプリケーション特有、及び／またはインスタンスグループ特有のポリシーが含まれる。
【００７０】
当実施例において示されるように、方法は、７３０のように、サービスが、対応付けられた自動スケーリングポリシーを施行する際使用する１つまたは複数の監視コンポーネント（例えばメトリクス収集エージェント）、メトリクス集約コンポーネント、及び／または自動スケーリング規則エンジンを設定することを含み得る。様々な実施形態において、監視コンポーネント、メトリクス集約コンポーネント、及び／または自動スケーリング規則エンジンのうちのいずれかまたは全ては、クラスタ自身のコンポーネントであり得る（または特定のリソースインスタンスもしくはインスタンスグループのコンポーネントであり得る）、あるいはクラスタの外部にあり得ることに留意されたい。例えば、いくつかの実施形態において、メトリクス収集エージェントは、クラスタ（またはクラスタのリソースインスタンス）内で実施され、クラスタの外部にある１つまたは複数のメトリクス集約コンポーネント及び／または自動スケーリング規則エンジンに対しメトリクス情報を渡し得る。
【００７１】
図７に示されるように、方法は、７４０のように、サービスが、対象データを所定のＭａｐＲｅｄｕｃｅ型データ処理アプリケーションに配給し、ＭａｐＲｅｄｕｃｅクラスタ上でその実行を開始することを含み得る。加えて、サービスは、クラスタの自動スケーリングを実施するのに使用される監視、集約、及び評価プロセスを呼び出し得る。７５０からの否定的矢印で示されるように、所定のアプリケーションの実行中に自動スケーリングトリガ条件（例えば自動スケーリングポリシー内の式により定義される条件）が検出されない場合、７７０のように、実行中にＭａｐＲｅｄｕｃｅクラスタ内のインスタンス数に対し何の変化も加えられ得ない。しかしながら、７５０からの肯定的矢印で示されるように、実行中に１つまたは複数の自動スケーリングトリガ条件が検出された場合、方法は、７６０のように、サービスが、適用自動スケーリングポリシーに従って、１つまたは複数の作用対象インスタンスグループに対しインスタンスを追加または削除することを含み得る。いくつかの実施形態において、所定のアプリケーションの実行中に、多数の自動スケーリングトリガ条件が同時に及び／または異なる時点で検出され（例えば異なるインスタンスグループ内のノード上で検出され、及び／または異なるインスタンスグループに作用するトリガ条件）、事例ごとに異なるポリシーが適宜適用され得る。
【００７２】
前述のように、本明細書において説明されるシステムは、２つ以上のインスタンスグループを含むコンピューティングリソースインスタンスのクラスタを実施し、それぞれがインスタンス（例えば特定種類の作業負荷で使用するように設計され得るインスタンス）の部分集合（例えば重複または非重複部分集合）を含む。いくつかの実施形態において、いくつかのインスタンスグループは特定サービスを実行し、一方他のインスタンスグループは実行しない。例えば、１つのインスタンスグループは、スポットインスタンスを使用し、一方別のインスタンスグループは、オンデマンドインスタンスを使用し得る。本明細書において説明されるように、特定の自動スケーリングポリシー及び対応自動スケーリング行動は、クラスタ内のインスタンスグループのうちの特定のグループを対象とし得る。例えば、アプリケーションがＨＤＦＳ容量不足となり、さらに多くのＨＤＦＳ容量を追加する必要がある場合、対象自動スケーリングポリシーの使用により、ＨＤＦＳを実行しているインスタンスグループ（複数可）に対してのみノードが追加されることが可能となり得る。同様に、クラスタ内の１つのインスタンスグループがファイルシステムを実行していて、別のインスタンスグループが実行していない場合に（非常によくある状況であり得る）、クラスタが縮小される時（例えばＣＰＵが遊休状態であるため）、データが失われないように、ファイルシステムを実行していないインスタンスグループを対象とする縮小動作が、対象自動スケーリングポリシーの使用により可能となり得る。
【００７３】
いくつかの実施形態において、対象自動スケーリングポリシーにより、分散コンピューティングシステムは、容量削減動作にあるインテリジェンスを導入することが可能となり得る。例えば、クラスタにおいて容量が削減されるべきであるという判定に応じて、システムが、ステート（例えばデータ）を格納しない、またはノードが格納しているデータの所定の複製もしくはクォーラム要件を保持する必要のないノードを、削除対象として優先させ得る「スマート縮小」技術を、システムは実施し得る。別の実施例において、クラスタにおいて容量が削減されるべきであるという判定に応じて、システムは、いくつかの実施形態において、ノードが分散アプリケーションのためにタスクを現在実行中であるか否か、ノードが最近タスクを実行し始めたか（もしくは実行するところか）否か、ノードが現在タスクを実行中か否か、及び／またはノードが自身のタスクをもう少しで終了しそうか否かに依拠して、ノードを削除対象として優先させ得る。
【００７４】
一例示的実施形態において、クラスタを構成する２つのインスタンスグループのうち、１つはデータを格納するノードを含み、もう１つはデータを格納しないノードを含む。データを保持するノードを含むインスタンスグループは、ディスク使用量が７５％を超えた場合、容量が増加されなければならないことを指定するポリシーに対応付けられ、一方もう１つのインスタンスグループ（データを保持しないノードを含むインスタンスグループ）は、ＣＰＵが使用されていない場合、ノードが削除されなければならないことを指定するポリシーに対応付けられ得る。いくつかの実施形態において、データを格納するノードを削除する前に、データは別のノードに移動される必要があり得る、あるいはノードの削除により、データ損失、または複製要件もしくはクォーラムを達成するのに十分なデータのコピーを保持する要件の妨害を生じないことをシステムが判断する必要があり得ることに、留意されたい。いくつかの実施形態において、データを格納し、問題なく廃止不可能なノード（例えば他の要件のため）を削除するのではなく、代わりに別のノードが削除対象として選択され得る（例えばデータを格納するが問題なく廃止可能な別のノード、またはデータを格納していないノード）。いくつかの実施形態において、システムは、クラスタの容量を削減する時、もしあればどの格納ノードが削除にふさわしいかを特定するために、及び／または削除対象の格納ノードを準備するために、ＨＤＦＳ廃止（Ｈａｄｏｏｐに組み込まれている）に依存し得る。例えば、いくつかの実施形態において、クラスタを縮小させる時、システムは、データ損失を防ぐために（例えば複製を通して）、ＨＤＦＳに組み込まれた機構に依存し得る。いくつかのこのような実施形態において、ノードが強制的に終了される場合、当機構は、目標複製要素（所定のデータブロックがクラスタ中に複製されなければならない回数）に合わせて、ノード上に格納されたデータを再分散するように構成され得る。より具体的には、ＨＤＦＳ廃止に依存する実施形態において、当機構は初めに、利用可能な格納が複製要求を受け入れるのに十分であるか否かを評価し得る。十分である場合に、当機構は、各廃止ノードが終了される前に各廃止ノードからのデータの再調整が完了するまで待機して、ノードを廃止し始め得る。
【００７５】
いくつかの実施形態において、容量が削除されなければならないと自動スケーリングポリシーが示す場合、もしあればどのインスタンスが削除されるべきかを特定する時に、様々な要素が考慮され得る。例えば、いくつかの自動スケーリングポリシーは、各ノード上に値を設定し（例えば削除対象としてのノードの適格性または適合性に相対して）、ポリシーは、どのインスタンスを削除するかを決定する際、ノードの値に依存し得る（例えばデータを保持するノード上のデータ損失を回避する）。いくつかの実施形態において、無差別にではなく、異なるノードの相対値に依拠した縮小動作を適用する当能力は、自身のクラスタ容量を安全に（例えばデータ損失または著しい性能損失を心配することなく）調整したい顧客にとって、重要であり得る。
【００７６】
いくつかの実施形態において、本明細書において説明されるシステムはまた、コンピュートノード（例えば分散アプリケーションのためにタスクを実行しているノード）を削除する時に既存の自動スケーリング解決策を実施するシステムよりも、より高い識別力を有し得る。例えば、自動スケーリングポリシーは、現にジョブを実行しているノードを削除することを回避するように構成され得る（削除により、ジョブは別のノードによる実行に再スケジュールされる必要があるため、パフォーマンスに影響を与え得る）。このような実施形態において、システムは、削除対象として、仕事をしていない（もしくは他のノードより仕事の少ない）、またはジョブを実行し始めたばかりのノードを、現在実行しているジョブが完了に近づいているノード（例えば現在実行しているジョブが８０％完了しているノード）よりも、優先させるように構成され得る。例えば、いくつかの実施形態において、ノード削除、またはノード削除の適格性のために、優先順位は確立され、分散アプリケーションの実行が進むにつれて定期的に（または時々）更新され得る。これにより、いくつかの実施形態において、多数のノードが安全に削除されることが可能となり得る（例えばノードが削除に尚もふさわしいことを確認しながら、１つずつ優先順位に従って）。様々な実施形態において、特定のリソースインスタンスの実際の開始及び終了は、基礎仮想化サービスに組み込まれたＡＰＩ（例えば様々な種類の仮想化リソースインスタンスをプロビジョニング及び／またはでプロビジョニングするＡＰＩ）を使用して行われ得ることに留意されたい。いくつかの実施形態において、いつでも好適な終了対象を特定可能であり得るように、自動スケーリングプロセスのエージェントは、進行中の現在実行タスクを有するノードを記録するように構成され得る。これらのノードに作用する縮小の事例において、エージェントは、これらを次の終了として印付け始め、その後、対応タスクの実行が一旦完了すると、これらを終了し得る。
【００７７】
ＭａｐＲｅｄｕｃｅクラスタにおいてインテリジェント縮小動作（例えば「スマート縮小」）を実行する方法の一実施形態が、図８におけるフロー図により例示される。８１０に例示されるように、当実施例において、方法は、仮想化リソースインスタンスを顧客に提供するサービスが、１つまたは複数の自動スケーリングポリシーが対応付けられたＭａｐＲｅｄｕｃｅクラスタ上で、所定のＭａｐＲｅｄｕｃｅ型データ処理アプリケーションの実行を、好適な監視、集約、及び評価プロセスと共に開始することを含み得る。８２０からの否定的矢印で示されるように、クラスタの容量の削減を引き起こす自動スケーリングトリガ条件がアプリケーションの実行中に検出されない場合、８２５に示されるように、実行中にＭａｐＲｅｄｕｃｅクラスタ内のノード数の削減はあり得ない。
【００７８】
しかしながら、当実施例において示されるように、実行中に１つまたは複数の自動スケーリングトリガ条件が検出された場合（８２０からの肯定的矢印で示されるように）、かつポリシーがＭａｐＲｅｄｕｃｅクラスタ内の１つまたは複数のインスタンスグループにおける１つまたは複数の格納ノードの削除を指定する場合（８３０からの肯定的矢印で示されるように）、方法は、８６０のように、削除によりどのデータも損失されない方法で、削除可能な格納ノードが十分に存在するか否かを判定すること（適用自動スケーリングポリシーに従って）を含み得る。例えば、方法は、複製により、既に廃止された、あるいはクラスタから（またはクラスタの１つまたは複数の作用対象インスタンスグループから）削除するのにふさわしい格納ノードが十分に存在するか否かを判定することを含み得る。８６０からの肯定的矢印で示されるように、十分に存在する場合、方法は、８８０のように、サービスが、適用自動スケーリングポリシーにより定義される数の格納ノードを削除することを含み得る。しかしながら、クラスタまたはクラスタの適用インスタンスグループから削除するのにふさわしい格納ノードが十分に存在しない場合（適用自動スケーリングポリシーに従って）（８６０からの否定的矢印で示されるように）、方法は、８７０のように、サービスが、１つまたは複数の格納ノードが廃止されるもしくは削除適格となるのを待つこと、あるいは、サービスが、適用自動スケーリングポリシーにより定義される数より少ない格納ノードを削除することを含み得る。いくつかの実施形態において、クラスタまたはクラスタの適用インスタンスグループから削除するのにふさわしい格納ノードが十分に存在しない場合、サービスは、クラスタまたはインスタンスグループ（複数可）内の１つまたは複数の格納ノードの廃止を開始するように構成され、それからノード（複数可）が廃止されるのを待ち得る（図示せず）ことに留意されたい。
【００７９】
当実施例において示されるように、実行中に１つまたは複数の自動スケーリングトリガ条件が検出された場合（８２０からの肯定的矢印で示されるように）、かつポリシーがＭａｐＲｅｄｕｃｅクラスタ内の１つまたは複数の格納ノードの削除を指定しない場合（すなわち、８３０からの肯定的矢印で示されるように、ポリシーが、ＭａｐＲｅｄｕｃｅクラスタ内の１つまたは複数のインスタンスグループにおける１つまたは複数のコンピュートノードの削除を指定する場合）、方法は、サービスが、タスク進捗に基づいて、クラスタまたは作用対象インスタンスグループ（複数可）内のどのコンピュートノードが削除にふさわしいかを特定することを含み（８４０のように）、この後にサービスは、８５０のように、自動スケーリングポリシーにより定義される数の適格コンピュートノードを削除し得る。いくつかの実施形態において、例えば、現在タスクを実行していない、またはタスクを実行し始めたばかりのコンピュートノードは、現在タスクを実行している、及び／または自身のタスクをもう少しで終了しそうなコンピュートノードより、削除対象として優先され得る。
【００８０】
本明細書に含まれる実施例のうちの多数が、クラスタ自動スケーリング技術を、Ｈａｄｏｏｐ／ＭａｐＲｅｄｕｃｅクラスタに対するその適用の観点から説明しているが、別の実施形態において、これらの技術は、他の種類のクラスタ指向分散コンピューティングシステム内の自動スケーリングにより幅広く適用され得る。例えば、これらの技術は、Ｈａｄｏｏｐの外側に存在するが、顧客がある規則に基づいて自動的に拡張または縮小することを所望可能な分散アプリケーションであるＳｐａｒｋ及び／またはＰｒｅｓｔｏアプリケーションとの使用に適用可能であり得る。前述のように、これら（または他）のアプリケーションの実行時、自動スケーリング判定を行う際に顧客が関心のあるメトリクスは、Ｈａｄｏｏｐ／ＭａｐＲｅｄｕｃｅクラスタの自動スケーリング判定を行う際に顧客が関心のあるメトリクスとは異なり得る。従って、このような実施形態において、分散コンピューティングシステムは、異なるデフォルトメトリクス集合を発信及び／もしくは収集するように、並びに／またはＨａｄｏｏｐ／ＭａｐＲｅｄｕｃｅクラスタにおいて使用するために提供されるものとは異なるデフォルト自動スケーリングポリシーを提供するように構成され得る。いくつかの実施形態において、このようなシステムは、これらのアプリケーションに好適なメトリクスを選択、定義、及び／または収集するために、既存の監視サービスを採用し得る。これらのシステムはまた、顧客が異なるインスタンスグループに対し異なる自動スケーリングポリシーを適用することを可能にし、これは、自動スケーリング動作においてインスタンスまたはインスタンスグループを対象とする時に（例えばノードを削除する時に）非常に重要なノードまたはインスタンス類と、重要ではない他のものとを区別することを顧客が所望するこれらのアプリケーションに役立ち得る。
【００８１】
コンピューティングリソースインスタンスのクラスタに対し自動スケーリングを実施する際に監視サービスを採用する方法の一実施形態が、図９におけるフロー図により例示される。９１０に示されるように、当実施例において、方法は、コンピューティングリソースインスタンスの１つまたは複数のクラスタのビヘイビアを監視するように監視サービスを構成することを含み得る。方法は、９２０のように、監視サービスが、分散アプリケーションが実行中であるコンピューティングリソースインスタンスのクラスタからメトリクスを受信することを含み得る。例えば、監視サービスは、クラスタ内の１つまたは複数のコンピューティングリソースインスタンスから（このうちのいくつかは異なるインスタンスグループに属し得る）、メトリクスを受信し得る。方法はまた、９３０のように、監視サービスが、受信したメトリクスのうちの少なくともいくつかを集約し、それらを自動スケーリング規則エンジンにより利用可能にすること（例えばそれらを自動スケーリング規則エンジンに渡すことにより、またはそれらを自動スケーリング規則エンジンがアクセス可能なメモリに格納することにより）を含み得る。図９において９３０から９２０へのフィードバックにより例示されるように、監視サービスは、クラスタからメトリクスを受信し、それらを集約し、及び／またはそれらを自動スケーリング規則エンジンにより利用可能にすることを、そのように構成される限り継続し得る。
【００８２】
図９において例示されるように、方法は、９４０のように、自動スケーリング規則エンジンが、クラスタに、及び／またはクラスタ内の１つまたは複数のインスタンスグループに対応付けられた１つまたは複数の自動スケーリングポリシー内で定義される式（例えば受信及び／または集約されたメトリクスに基づき、自動スケーリングトリガ条件を表す式）を評価することを含み得る。９５０からの肯定的矢印で示されるように、式のうちの少なくとも１つが真と評価されると、方法は、９６０のように、自動スケーリング規則エンジンが、クラスタに対し、またはクラスタの１つまたは複数のインスタンスグループに対し特定の自動スケーリング行動が引き起こされたという開示を、クラスタのリソースマネジャに送信することを含み得る。方法はまた、９７０のように、クラスタのリソースマネジャが、対応自動スケーリングポリシー及びその他の適用リソース管理ポリシーに従って、自動スケーリング行動を開始することを含み得る。図９において、９６０から９４０へのフィードバック、及び９５０から９４０への否定的矢印のフィードバックにより例示されるように、自動スケーリング規則エンジンは、クラスタに対応付けられた自動スケーリングポリシー内の様々な式を評価することを、それらのうちのいずれかが真と評価されるかどうかに関わりなく、そのように構成される限り継続し、９６０及び９７０に例示される動作は、それらのうちのいずれかが真と評価された場合に繰り返され得る。
【００８３】
仮想化格納リソースをウェブサービス等のサービスとしてクライアントに提供する非構造化オブジェクト格納モデルの例示的一実施形態が、図１０におけるブロック図により示される。例示されたモデルにおいて、格納サービスインタフェース１０１０が、オブジェクト格納サービス１０００へのクライアント対向インタフェースとして提供される。格納サービスインタフェース１０１０は、例えば、アプリケーションプログラミングインタフェース（ＡＰＩ）として実施され得る、あるいはアプリケーションプログラミングインタフェース（ＡＰＩ）を含み得る。インタフェース１０１０によりクライアント１０４０に提示されるモデルに従って、格納サービスは、インタフェース１０１０を介してアクセス可能な任意の数のバケット１０２０ａ〜１０２０ｎとして組織され得る。一般に、バケットは、ユーザのために格納システムにおいてオブジェクトが格納され得る論理コンテナであり、オブジェクトは、格納システムに格納される基本エンティティである。いくつかの実施形態において、格納オブジェクトは、オブジェクトデータ及び／またはメタデータを含み得る。例えば、各オブジェクトは、データオブジェクト部分と、メタデータ部分を含み得る。いくつかの実施形態において、全てのオブジェクトはバケット内に含まれ、全てのオブジェクトは、バケットの識別子と、オブジェクト自体の１つまたは複数の識別子（例えばユーザキー、またはユーザキーとバージョン識別子との組み合わせ）との組み合わせを使用して、アドレス指定可能であり得る。
【００８４】
図１０において示される実施例において、各バケット１０２０は、任意の数のオブジェクト１０３０ａ〜１０３０ｎを格納するように構成され、それぞれのオブジェクトは、格納サービス１０００のクライアント１０４０により指定されたデータ（データ１０３３ａ〜１０３３ｎと表示）及び／またはメタデータ（１０３１ａ〜１０３１ｎと表示）を格納し得る。様々な実施形態において、メタデータ１０３１ａ〜１０３１ｎは、クライアント１０４０により指定され得る、またはオブジェクト格納サービス１０００により生成され得る。１つまたは複数のクライアント１０４０は、データオブジェクト１０３０を格納する、読み出す、及び下記により詳しく説明されるようにデータオブジェクト１０３０に対し１つまたは複数の動作を実行する要求を、格納サービスインタフェースに提出し得る。格納サービスインタフェースは、要求に対する応答１０４８を提供し、これには例えば、確認応答及び／または読み出しデータが含まれ得る。一般に、データオブジェクトの格納及び読み出しに加えて、格納サービス１０００が行い得る要求または命令には、格納サービス１０００内のデータを修正する命令が含まれ得る。このようにして、格納サービス１０００からデータを削除し、動作を実行し、それから修正したデータを格納サービスに返す処理を、クライアント１０４０が背負い込むことはない。当構成により、例えば、クライアント１０４０のネットワーク帯域幅及び処理リソースが節約され得る。
【００８５】
いくつかの実施形態において、格納サービスインタフェース１０１０は、ウェブサービスモデルに従って、格納サービス１０００とそのクライアント１０４０（複数可）との間の対話に対応するように構成され得る。例えば、一実施形態において、インタフェース１０１０は、サービスクライアントにより生成されるウェブサービス呼び出しが処理対象として指示され得るユニフォームリソースロケータ（ＵＲＬ）を有するウェブサービスエンドポイントとして、クライアントによりアクセス可能であり得る。一般的に、ウェブサービスは、あるバージョンのハイパーテキスト転送プロトコル（ＨＴＴＰ）または別の好適なプロトコル等、１つまたは複数のインターネットベースアプリケーション層データ転送プロトコルを含む要求インタフェースを介して、要求クライアントにより利用可能にされた任意の種類のコンピューティングサービスを指し得る。
【００８６】
少なくともいくつかの実施形態において、オブジェクト格納サービス１０００は、データ冗長性及び復元性目的で、データオブジェクトを内部で複製するように構成され得る。しかしながら、オブジェクト格納サービス１０００は、格納サービス１０００に格納されたデータオブジェクトへのアクセスが常に最新または最近のバージョンのデータオブジェクトを返すことを、保証しない。データオブジェクトは一般に全てのインスタンスにわたって最終的に整合性があるとだけ保証されるため、オブジェクト格納サービス１０００等の格納サービスの当特性は、本明細書において「結果整合性」と称され得る。別の実施形態において、オブジェクト格納サービス１０００は、格納サービスに格納されたデータオブジェクトへのアクセスが最新または最近のバージョンのデータオブジェクトを返すことを保証し得る強整合性モデルに対応し得る。
【００８７】
いくつかの実施形態において、オブジェクト格納サービス（オブジェクト格納サービス１０００等）は、分散コンピューティングシステム（ＭａｐＲｅｄｕｃｅクラスタ等）上で実行されているＭａｐＲｅｄｕｃｅアプリケーション（またはその計算）によりダウンロード及び処理される予定のデータ集合、及び／またはこのようなアプリケーションにより生成される出力データに対し、格納を提供し得る。いくつかの実施形態において、オブジェクト格納サービス（オブジェクト格納サービス１０００等）は、ＭａｐＲｅｄｕｃｅジョブのキーペア、ホストファイル、ランクファイル、または構成もしくは作動パラメータ、あるいはこのようなアプリケーションを実行する時に使用可能なその他の情報を、非限定的に含む他の種類のデータまたはメタデータに対し、格納を提供し得る。別の実施形態において、これらの要素のいずれかまたは全ては、図１０に例示されるものとは異なるモデル及び／または構成を有する１つまたは複数のオブジェクトデータストアに格納され得る。
【００８８】
いくつかの実施形態において、オブジェクト格納サービスは、本明細書において説明されるように、クラスタの自動スケーリングを実施する際採用される監視コンポーネントを含み得る、または監視コンポーネントと対話し得る。例えば、監視サービス１０５０は、自動スケーリングトリガ条件を表す式において使用されるメトリクスを収集及び分析するために、オブジェクト格納サービス１０００と対話し得る（例えば格納サービスインタフェース１０１０を介して）、またはこのようなメトリクスを収集して、それらを分析のために別個の自動スケーリング規則エンジンへ渡し、その後、自動スケーリング規則エンジンが、自動スケーリング行動を実行する必要があるか否か、及び必要がある時を決定し得る（図示せず）。いくつかの実施形態において、自動スケーリング規則エンジンは、サービスプロバイダによる別個の自動スケーリングサービス内で実施され、オブジェクト格納サービス１０００は、自動スケーリングサービスのクライアントであり得る。
【００８９】
いくつかの実施形態において、オブジェクトのデータオブジェクト部分は、格納システムにとって不明瞭なものであり、すなわち格納システムにより「ブラックボックス」エントリとして扱われ得ることに留意されたい。様々な実施形態において、オブジェクトのデフォルトのメタデータは、例えば名前値ペア、オブジェクトが最後に修正された日付、及び／またはコンテンツの種類の指標（すなわちオブジェクトのデータオブジェクト部分のコンテンツのデータ種類）を含み得る。いくつかの実施形態において、オブジェクトに対応付けられたメタデータは、ユーザ提供のキー値ペアと共に、システム挿入のキー値ペア（例えば作成日付及び／もしくは最終修正日付、または他のバージョン関連メタデータを含む）を含み得る。いくつかの実施形態において、オブジェクトに対応付けられた、及び／または格納されたメタデータは、アクセス制御リスト（ＡＣＬ）を含み得る。いくつかの実施形態において、開発者は、オブジェクトが格納される時点で、カスタムメタデータを指定することが可能であり得る。様々な実施形態において、所定のオブジェクトに対応付け可能なメタデータの量は、使用されるインタフェースの限度、及び／または要求もしくは応答メッセージに対しシステムが許容するもしくは対応するデータの量により、制限され得る。
【００９０】
様々な実施形態において、本明細書において説明される格納システムは、バケットの作成、バケット内のデータの格納及び読み出し（例えばデータの開発者またはバケットの所有者により割り当てられ得る一意的キーを使用）、データの削除、及び／または格納オブジェクトのリスト化、以上の格納関連タスクへの対応を含み得る。いくつかの実施形態において、ユーザは、格納システムにおいてある動作を実行可能なように、特別許可（例えば特定アクセスロール）を有する必要があり得る。例えば、バージョンステートを調べる、バージョンステートを修正する、オブジェクト及び／またはキーを削除する、論理的に削除されたデータを回復させる、バケットまたはバケットのオブジェクトに対し許可を設定する等のために、ユーザは、システムにおいて（及び／またはシステム内の特定バケットに関して）特権ユーザとして指名される必要があり得る。別の実施例において、格納オブジェクトのリスト化及び／または格納オブジェクトの読み出しのために、ユーザは、特定アクセスロールを有する必要があり得る。いくつかの実施形態において、このような許可は、バケット所有者に自動的に付与され、及び／またはバケット所有者により制御され得る。別の実施形態において、このような特権は、他の手段により、及び／またはバケット所有権以外の要素に基づいて、ユーザに指名及び／または付与され得る。様々な実施形態において、これらの許可のうちのいくつかまたは全ては、バケットベースで付与及び／または制御され得る。別の実施形態において、これらの許可のうちの１つまたは複数は、個別オブジェクトベースで、またはオブジェクトの種類もしくはコンテンツの種類に基づいて、付与及び／または制御され得る。
【００９１】
分散コンピューティングシステムの実施形態は一般に、サービスプロバイダのプロバイダネットワーク上で実施される仮想化リソース（例えば仮想化コンピューティング及び格納リソース）を、インターネット等の中間ネットワークを介して、クライアントに提供するサービスプロバイダとの関連において、本明細書において説明される。図１１は、分散コンピューティングシステムにおいてデータ格納を提供する方法及び装置の実施形態が実施され得る例示的サービスプロバイダネットワーク環境を示す。ＭａｐＲｅｄｕｃｅクラスタ上でＭａｐＲｅｄｕｃｅジョブを実行する分散コンピューティングシステムの実施形態が実施され得る別の例示的環境が、図面のうちの他のものにおいて示され、下記に説明される。これらの実施例に、限定する意図はない。
【００９２】
図１１において示される実施例において、サービスプロバイダは、クライアント（例えばクライアントネットワーク１１８０上のクライアント１１８２、または他のクライアント１１６２）に対し、クライアントがプロバイダネットワーク１１００上で少なくとも部分的に分散コンピューティングシステムのプロビジョニング、管理、及び操作を行い得る１つまたは複数のサービス（分散コンピューティングサービス１１０２（複数可）と称される）を、提供し得る。少なくともいくつかの実施形態において、分散コンピューティングサービス１１０２（複数可）を介して分散コンピューティングシステムをプロビジョニングすることは、１つまたは複数の仮想化コンピューティングリソース（クライアントリソースインスタンス１１１０として表示）を分散コンピューティングシステムのコンピュートノードとしてプロビジョニングすることと、仮想化格納（データストア１１２０として表示）を分散コンピューティングシステムにおいて使用されるデータ集合のデータ格納として、及び／または様々なクライアントのために行われる計算結果のデータ格納としてプロビジョニングすることとを含み得る。様々な実施形態において、クライアントリソースインスタンス１１１０及び／またはデータストア１１２０は、別の方法でプロビジョニングされ得ることに留意されたい。例えば、代案として、少なくともいくつかの実施形態において、クライアント（例えばクライアントネットワーク１１８０により表される）は、外部クライアントネットワーク上の１つまたは複数のクライアントデバイス１１８２を、分散コンピューティングサービスのコンピュートノードとしてプロビジョニングし、同時に、分散コンピューティングシステムにおいて使用予定のデータ集合の格納を、分散コンピューティングサービス１１０２（複数可）を介してデータストア１１２０上にプロビジョニングし得る。様々な実施形態において、データストア１１２０は、本明細書において説明されるように、オブジェクト格納、ブロックベース格納、及び／またはボリュームベース格納を実施し得ることに留意されたい。
【００９３】
少なくともいくつかの実施形態において、クライアント（複数可）は、１つまたは複数のアプリケーションプログラミングインタフェース（ＡＰＩ１１０４（複数可））を介して分散コンピューティングサービス１１０２（複数可）と対話して、特定の分散コンピューティングシステム（例えばＭａｐＲｅｄｕｃｅクラスタ）に対しプロバイダネットワーク１１００上の計算及び格納リソースのプロビジョニングを要求し、分散コンピューティングサービス１１０２（複数可）は次に、ＡＰＩ１１０８（複数可）を介して仮想化サービス１１０６（複数可）と対話して、プロバイダネットワーク１１００上の計算及び格納リソースを実際にプロビジョニングし得ることに留意されたい。しかしながら、いくつかの実施形態において、分散コンピューティングサービス１１０２（複数可）は、プロバイダネットワーク上の計算及び格納リソースと直接対話して、特定の分散コンピューティングシステムに対し、リソースをプロビジョニングあるいは構成し得る。
【００９４】
少なくともいくつかの実施形態において、サービスプロバイダは、例えばＡｐａｃｈｅ（商標）Ｈａｄｏｏｐ（登録商標）フレームワークのような分散コンピューティングフレームワークに従って、クライアントのためにこのような分散コンピューティングシステム（例えばＭａｐＲｅｄｕｃｅクラスタ）を実施し得る。しかしながら、いくつかの実施形態において、他のフレームワークが使用され得ることに留意されたい。
【００９５】
少なくともいくつかの実施形態において、プロバイダネットワーク１１００を介してサービスプロバイダのクライアントに提供されるリソースのうちの少なくともいくつかは、他のクライアント（複数可）と共有されるマルチテナントハードウェア上で、及び／または特定クライアント専用のハードウェア上で実施される仮想化コンピューティングリソースであり得る。各仮想化コンピューティングリソースは、リソースインスタンスと、またはクライアントリソースインスタンス（例えばクライアントリソースインスタンス１１１０）と称され得る。リソースインスタンス１１１０は、例えば、サービスプロバイダのクライアントにレンタルまたはリースされ得る。例えば、サービスプロバイダのクライアントは、ＡＰＩ１１０８（複数可）を介してプロバイダネットワークの１つまたは複数のサービス１１０６にアクセスし、サービス１１０６に、リソースインスタンス１１１０を取得及び構成させ、例えば図１６に示される仮想化プライベートネットワークのように、リソースインスタンス１１１０を含む仮想ネットワーク構成を確立及び管理させ得る。リソースインスタンス１１１０は、例えば、多数のオペレーティングシステムがホストコンピュータ上で同時に作動する、すなわちホスト上で仮想マシン（ＶＭ）として作動することを可能にするハードウェア仮想化技術に従って、実施され得る。ホスト上のハイパーバイザ、すなわち仮想マシンモニタ（ＶＭＭ）は、仮想プラットフォームによりホスト上のＶＭを提示し、ＶＭの実行を監視する。各ＶＭには、１つまたは複数のプライベートＩＰアドレスが提供され得る。ホスト上のＶＭＭは、ホスト上のＶＭのプライベートＩＰアドレスを認識し得る。ハードウェア仮想化技術の実施態様及び使用の実施例はさらに、図１３において示され、下記において説明される。
【００９６】
少なくともいくつかの実施形態において、プロバイダネットワーク１１００、仮想化サービス１１０６（複数可）、及びＡＰＩ１１０８（複数可）を介してサービスプロバイダのクライアントに提供されるリソースのうちの少なくともいくつかは、プロバイダネットワーク１１００上の格納ハードウェアで実施される仮想化格納リソースであり、他のクライアント（複数可）と共有され得る。様々な種類のデータ格納及び格納サービスをクライアントに提供するために、様々な実施形態において、仮想化データストア技術が使用され得る。例えば、オブジェクト格納サービスは、クライアントに、汎用かつ非構造化データオブジェクトベース格納を提供し（図１１においてデータストア１１２０により表され得る）、これを介してクライアントは、任意の種類のデータオブジェクト（その一部はデータファイルを含み得る）の格納及び読み出しを行い得る。図１１に例示されるように、オブジェクト格納サービスにより提供される非構造化オブジェクトストア（データストア１１２０として表示）は、例えば、分散コンピューティングサービス１１０２（複数可）を通してプロビジョニングされる分散コンピューティングシステムのデータ集合を格納するのに使用され得る。図１１に図示されないが、別の実施例として、データ格納サービス、例えばサービスプロバイダによりまたはある他のエンティティにより提供されるデータベースサービスは、クライアントに、構造化データを格納し読み出すための構造化データモデル（例えばデータベースモデル）を提供し得る。
【００９７】
図１１に例示されるように、いくつかの実施形態において、プロバイダネットワーク１１００は、監視サービス１１３０、及び／または自動スケーリングコンポーネント１１３５を含み得る。例えば、いくつかの実施形態において、監視サービス１１３０は、自動スケーリングトリガ条件を表す式において使用されるメトリクスを収集及び分析するように構成され得る、またはこのようなメトリクスを収集して、それらを分析のために別個の自動スケーリング規則エンジンへ渡し、その後、自動スケーリング規則エンジンが、自動スケーリング行動を実行する必要があるか否か、及び必要がある時を決定し得る（図示せず）。いくつかの実施形態において、分散コンピューティングサービス１１０２、及び／または仮想化サービス１１０６は、監視サービス１１３０のクライアントであり得る。いくつかの実施形態において、自動スケーリングコンポーネント１１３５は、本明細書において説明される自動スケーリング技術のうちのいずれかを使用して特定される任意の自動スケーリング行動を実行し得る。いくつかの実施形態において、自動スケーリング規則エンジンは、監視サービス１１３０内ではなく、自動スケーリングコンポーネント１１３５内で実施され得る。
【００９８】
図１１において示される例示的プロバイダネットワークにおいて、分散コンピューティングシステムは、１つまたは複数のコンピュートノードを含み得る。コンピュートノードは、図１１に示されるようにクライアントリソースインスタンス１１１０としてプロビジョニングされ得る、あるいは図１１に示されるようにクライアントネットワーク１１８０上のクライアントデバイス１１８２として、またはクライアント１１６２上にプロビジョニングされ得る。分散コンピューティングシステムのデータ集合は、データストア１１２０上でインスタンス化され得る。いくつかの実施形態において、データ集合からのデータを処理するために、コンピュートノードは、オブジェクト格納サービスを介して、データストア１１２０にアクセスし得る（図示せず）。少なくともいくつかの実施形態において、このようなオブジェクト格納サービスは、１つまたは複数のＡＰＩを提供し、これを介してコンピュートノードまたは他のエンティティは、データストア１１２０にアクセスし得る。いくつかの実施形態において、処理されたデータ（例えば出力データ）は、必ずしもではないが、データストア１１２０に書き戻され得る。いくつかの事例において、データストア１１２０に書き戻された処理済みデータのうちの少なくとも一部は、コンピュートノード（複数可）のうちの１つまたは複数によりアクセスされ得る。例を挙げると、ジョブ（例えばＭａｐＲｅｄｕｃｅジョブ）は、データストア１１２０からのデータを読み出し、データストア１１２０へ出力データを書き込み得る。後続ジョブ（例えば別のＭａｐＲｅｄｕｃｅジョブ）はそれから、データストア１１２０からの出力データのうちの少なくとも一部にアクセスを試み得る。
【００９９】
オブジェクト格納サービスを介して提供される非構造化オブジェクトストアは、非常に大きなデータ集合を格納できる能力、高処理能力、データ複製等の機能による信頼性及び高可用性、並びに柔軟性を非限定的に含む利点を有し得る。クライアントは、クライアントのネットワーク上に追加の格納デバイスをインストールし構成することなく、必要に応じて、容易にかつ比較的安価に追加格納をプロビジョニングするために、このようなオブジェクト格納サービスを活用し得る。オブジェクト格納サービスは、このようなデータ複製の機能のため、いくつかの実施形態において、結果整合性の特性を有し得る。別の実施形態において、これは、強整合性モデルを実施し得る。少なくともいくつかの実施形態において、クライアントリソース１１１０としてプロビジョニングされるそれぞれのコンピュートノードは、分散コンピューティングシステムの処理部分（例えばＭａｐＲｅｄｕｃｅプロシージャ）を実施し得る１つまたは複数のモジュールを含み得る。コンピュートノードはまた、メタデータを取得するように、またはオブジェクト格納サービスによりその処理モジュール（複数可）のためにデータストア１１２０に保持されるデータオブジェクト（もしくはデータファイル）にアクセスするように、データ格納サービスにアクセスする１つまたは複数のデータアクセスモジュールを含み得る。少なくともいくつかの実施形態において、オブジェクト格納サービスは、１つまたは複数のＡＰＩを提供し、これを介して、クライアントリソース１１１０としてプロビジョニングされる様々なコンピュートノード上のデータアクセスモジュール（複数可）は、それぞれのサービスにアクセスし得る。
【０１００】
図１２は、いくつかの実施形態による、ブロックベース格納サービスを含む多数のネットワークベースサービスを実施するプロバイダネットワークを例示するブロック図である。インターネット及び／または他のネットワークを介してクライアント１２１０がアクセス可能な１つまたは複数のサービス（様々な種類のクラウドベースコンピューティングまたは格納等）を提供するために、企業または公的機関等の事業体により、プロバイダネットワーク１２００が構築され得る。プロバイダネットワーク１２００は、プロバイダネットワーク１２００が提供するインフラストラクチャ及びサービスを実行及び配給するために必要な物理及び／または仮想化コンピュータサーバ、格納デバイス、ネットワーク機器等の集合（例えば図１７に関して後述されるコンピュータシステム１７００）といった様々なリソースプールをホスティングする多数のデータセンタを含み得る。いくつかの実施形態において、プロバイダネットワーク１２００は、仮想コンピュートサービス１２３０等のコンピューティングリソース、ブロックベース格納サービス１２２０及び別の格納サービス１２４０等の格納サービス（オブジェクト／キー値ベースデータストアまたは様々な種類のデータベースシステム等の様々な格納種類を含み得る）、及び／またはその他の種類のネットワークベースサービス１２５０を提供し得る。クライアント１２１０は、ネットワーク１２６０を介して、プロバイダネットワーク１２００が提供するこれらの様々なサービスにアクセスし得る。同様に、ネットワークベースサービス自体は、異なるサービスを提供するために、お互いに通信及び／または利用し合い得る。例えば、仮想もしくは物理コンピュートインスタンスまたは格納インスタンスといった「インスタンス」と呼ばれる単位でクライアント１２１０に提供されるコンピューティングリソースは、特定のデータボリューム１２２６を利用して、コンピュートインスタンスの仮想ブロック格納を提供し得る。
【０１０１】
前述のように、仮想コンピュートサービス１２３０は、クライアント１２１０に様々なコンピュートインスタンスを提供し得る。仮想コンピュートインスタンスは、例えば、指定計算能力（ＣＰＵの種類と数、メインメモリサイズ等を指示することにより指定され得る）を有する１つまたは複数のサーバと、指定ソフトウェアスタック（例えばハイパーバイザの上部で同様に作動し得る特定バージョンのオペレーティングシステム）とを備え得る。異なる実施形態において、仮想コンピュートサービス１２３０のコンピュートインスタンスを実行するために、多数の異なる種類のコンピューティングデバイスが単一で、または組み合わせて使用され、これには汎用または専用コンピュータサーバ、格納デバイス、ネットワークデバイス等が含まれる。いくつかの実施形態において、インスタンスクライアント１２１０またはその他のユーザは、コンピュートインスタンスへネットワークトラフィックを向けるように構成され得る（及び／または権限が与えられ得る）。様々な実施形態において、様々な動作の実行用の持続的ブロックベース格納を取得するために、コンピュートインスタンスは、ブロックベース格納サービス１２２０が提供する１つまたは複数のデータボリューム１２２６に、配属またはマッピングされ得る。
【０１０２】
コンピュートインスタンスは、アプリケーションサーバインスタンス、Ｊａｖａ（商標）仮想マシン（ＪＶＭ）、汎用または専用オペレーティングシステム、Ｒｕｂｙ、Ｐｅｒｌ、Ｐｙｔｈｏｎ、Ｃ、Ｃ＋＋等の様々なインタプリタ型またはコンパイラ型プログラミング言語に対応するプラットフォーム、または高性能コンピューティングプラットフォーム等、例えばインスタンスにアクセスするようクライアント１２１０に要求することなく、クライアントアプリケーションを実行するのに好適な様々な異なるプラットフォームを作動または実行し得る。コンピュートインスタンス構成はまた、コンピュート集中アプリケーションの計算作業負荷（例えば高トラフィックウェブアプリケーション、広告提供、バッチ処理、ビデオ符号化、分散解析論、高エネルギー物理学、ゲノム分析、及び計算流体力学）、グラフィック集中作業負荷（例えばゲームストリーミング、３Ｄアプリケーションストリーミング、サーバ側グラフィック作業負荷、レンダリング、財務モデリング、及び工学設計）、メモリ集中作業負荷（例えば高性能データベース、分散メモリキャッシュ、インメモリ分析論、ゲノムアセンブリ及び分析）、及び格納最適化作業負荷（例えばデータウェアハウジング及びクラスタファイルシステム）といった汎用及び専用目的のコンピュートインスタンスも含み得る。特定数の仮想ＣＰＵコア、メモリ、キャッシュ、格納等のコンピュートインスタンスのサイズ、並びにその他の性能特性は、変わり得る。コンピュートインスタンスの構成はまた、特定のデータセンタ、可用性区域、地理、場所等におけるそれらの位置と、予約期間（予約コンピュートインスタンスの場合）とを含み得る。
【０１０３】
様々な実施形態において、プロバイダネットワーク１２００は、格納動作を行うブロックベース格納サービス１２２０も実施し得る。当実施例において示されるように、ブロックベース格納サービス１２２０は、１つまたは複数のデータボリューム集合（複数可）１２２６ａ、１２２６ｂ、１２２６ｃ、〜、１２２６ｎを格納するブロックレベル格納を提供する多数の独立格納ノード１２２４ａ、１２２４ｂ、１２２４ｃ、〜、１２２４ｎのプールから成る格納システム（例えばサーバブロックデータ格納システム）であり得る。データボリューム１２２６は、特定のクライアントにマッピングされ、論理ブロックの連続集合として仮想ブロックベース格納（例えばハードディスク格納または他の持続的格納）を提供し得る。いくつかの実施形態において、スナップショット動作または複製動作等、他のブロック格納動作を実行するために、データボリューム１２２６は、多数のデータチャンク（１つまたは複数のデータブロックを含む）に分割され得る。データボリューム１２２６のボリュームスナップショットは、データボリューム１２２６のステートの特定時点固定表現であり得る。いくつかの実施形態において、ボリュームスナップショット１２４２は、別の格納サービス１２４０内等、データボリュームを保持する格納ノード６２４から遠隔な場所に格納され得る。スナップショット動作は、別の格納サービス１２４０における遠隔スナップショットデータストア等、別の格納場所における所定のデータボリュームのスナップショットを、送信、コピー、及び／または保存するために行われ得る。
【０１０４】
ブロックベース格納サービス１２２０は、ブロックベース格納サービス１２２０の動作を支援するブロックベース格納サービス制御プレーン１２２２を実行し得る。様々な実施形態において、ブロックベース格納サービス制御プレーン１２２２は、プロバイダネットワーク１２００内に配置された仮想コンピュートサービス１２３０及び／または別のネットワークベースサービスにより、並びに／あるいは任意で、１つまたは複数の他のデータセンタ内に配置されたコンピューティングシステム（図示せず）、またはネットワーク１２６０上で利用可能なプロバイダネットワーク１２００外の他のコンピューティングシステムにより、提供されるコンピュートインスタンス上で実行されるプログラム等、クライアントに対するブロックデータ格納の可用性の管理を支援する。データボリューム１２２６へのアクセスは、ブロックデータトランザクション命令に応じて、プロバイダネットワーク１２００内の内部ネットワークを介して、または外部的にネットワーク１２６０を介して、提供され得る。
【０１０５】
ブロックベース格納サービス制御プレーン１２２２は、ユーザアカウントの管理（例えば作成、削除、課金、支払い収集等）を含むブロックレベル格納機能の提供に関連する様々なサービスを提供し得る。ブロックベース格納サービス制御プレーン１２２２はさらに、構成要求に応じて、データボリューム１２２６の作成、使用、削除に関連するサービスを提供し得る。ブロックベース格納サービス制御プレーン１２２２はまた、別の格納サービス１２４０上のボリュームスナップショット１２４２の作成、使用、削除に関連するサービスを提供し得る。ブロックベース格納サービス制御プレーン１２２２はまた、データボリューム１２２６の使用及びこれらボリュームのスナップショット１２４２に関する性能及び監査データの収集及び処理に関連するサービスを提供し得る。
【０１０６】
プロバイダネットワーク１２００はまた、前述のように、別の格納サービス１２４０を実施し得る。別の格納サービス１２４０は、ブロックベース格納サービス１２２０により提供される格納と、同じまたは異なる種類の格納を提供し得る。例えば、いくつかの実施形態において、別の格納サービス１２４０は、データをデータオブジェクトとして格納及び管理し得るオブジェクトベース格納サービスを提供し得る。例えば、様々なデータボリューム１２２６のボリュームスナップショット１２４２は、特定のデータボリューム１２２６のスナップショットオブジェクトとして格納され得る。別の格納サービス１２４０に加えて、プロバイダネットワーク１２００は、別のネットワークベースサービス１２５０を実施し得る。これには、クライアント１２１０並びにプロバイダネットワーク１２００の他のサービス（例えばブロックベース格納サービス１２２０、仮想コンピュートサービス１２３０、及び／または別の格納サービス１２４０）が、様々なタスクを実行または要求することを可能にする様々な異なる種類の分析、計算、格納、または他のネットワークベースシステムが含まれ得る。
【０１０７】
クライアント１２１０は、ネットワークプロバイダ１２００に対し要求を提出するように構成可能な任意の種類のクライアントを含み得る。例えば、所定のクライアント１２１０は、好適バージョンのウェブブラウザを含み得る、またはウェブブラウザが提供する実行環境に対する拡張、もしくは実行環境内の拡張として実行されるように構成されるプラグインモジュールまたは他の種類のコードモジュールを含み得る。あるいは、クライアント１２１０は、データベースアプリケーション（またはそのユーザインタフェース）、メディアアプリケーション、オフィスアプリケーション、または様々な動作を実行するためにプロバイダネットワーク１２００内のコンピュートインスタンス、データボリューム１２２６、もしくは別のネットワークベースサービスを利用し得るその他のアプリケーションといったアプリケーションを含み得る。いくつかの実施形態において、このようなアプリケーションは、全種類のネットワークベースデータの完全なブラウザサポートを必ずしも実施することなく、ネットワークベースサービス要求を生成及び処理するのに十分なプロトコルサポート（例えば好適バージョンのハイパーテキスト転送プロトコル（ＨＴＴＰ）に対するプロトコルサポート）を含み得る。いくつかの実施形態において、クライアント１２１０は、レプレゼンテーショナルステートトランスファ（ＲＥＳＴ）式ネットワークベースサービスアーキテクチャ、ドキュメントもしくはメッセージベースのネットワークベースサービスアーキテクチャ、または別の好適なネットワークベースサービスアーキテクチャに従って、ネットワークベースサービス要求を生成するように構成され得る。いくつかの実施形態において、クライアント１２１０（例えば計算クライアント）は、コンピュートインスタンスが提供する計算リソースまたはデータボリューム１２２６が提供するブロック格納を使用するクライアント１２１０上で実施されるアプリケーションに明白な方法で、コンピュートインスタンスまたはデータボリューム１２２６へのアクセスを提供するように構成され得る。
【０１０８】
クライアント１２１０は、外部ネットワーク１２６０を介して、プロバイダネットワーク１２００にネットワークベースサービス要求を伝達し得る。様々な実施形態において、外部ネットワーク１２６０は、クライアント１２１０とプロバイダネットワーク１２００との間のネットワークベース通信を確立するために必要なネットワークハードウェア及びプロトコルの任意の好適な組み合わせを含み得る。例えば、ネットワーク１２６０は一般に、共同してインターネットを実施する様々な電気通信ネットワーク及びサービスプロバイダを含み得る。ネットワーク１２６０はまた、ローカルエリアネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）等のプライベートネットワーク、並びにパブリックまたはプライベート無線ネットワークを含み得る。例えば、自身の内部ネットワークを有する企業内に、所定のクライアント１２１０及びプロバイダネットワーク１２００の両者がそれぞれプロビジョニングされ得る。このような実施形態において、ネットワーク１２６０は、所定のクライアント１２１０とインターネットとの間、並びにインターネットとプロバイダネットワーク１２００との間のネットワークリンクを確立するために必要なハードウェア（例えばモデム、ルータ、スイッチ、ロードバランサ、プロキシサーバ等）及びソフトウェア（例えばプロトコルスタック、会計ソフトウェア、ファイアウォール／セキュリティソフトウェア等）を含み得る。いくつかの実施形態において、クライアント１２１０は、パブリックインターネットではなくプライベートネットワークを使用して、プロバイダネットワーク１２００と通信し得ることに留意されたい。
【０１０９】
いくつかの実施形態において、図１２において例示されるようなブロックベース格納サービス（及びその基礎ブロックベース格納システム）により、顧客は、格納ボリュームを作成し、それらを、分散コンピューティングシステム内のコンピュートノードクラスタのコンピュートノードを実施するインスタンスを含む仮想化コンピューティングリソースインスタンスに配属させることが、可能になり得る。一旦このような格納ボリュームが配属されると、顧客は、これらのボリュームの上部でファイルシステムを作成し得る、これらのボリュームにアプリケーションまたはデータをロードし得る、これらのボリュームに対しデータベースを実行し得る、あるいは一般に顧客がブロックデバイスを使用し得る任意の方法でこれらのボリュームを使用し得る。いくつかの実施形態において、格納ボリュームは、特定のデータセンタ、可用性ゾーン、または領域内に配置され、いずれか１つのコンポーネントの障害から顧客のデータを守るために、格納ボリュームは自動で複製され得る。
【０１１０】
当実施例において、ブロックベース格納サービス制御プレーン１２２２、または仮想コンピュートサービス１２３０、格納サービス１２４０（複数可）、もしくは別のサービス１２５０（複数可）の制御プレーンのうちの１つまたは複数は、クラスタ自動スケーリングを実施するために監視コンポーネント及び／または規則エンジンを含み得る、あるいはクラスタ自動スケーリング（本明細書において説明される）は、プロバイダネットワーク１２００上の別個のサービスとして実施され得る（図示せず）。いくつかの実施形態において、ブロックベース格納サービス１２２０、仮想コンピュートサービス１２３０、格納サービス１２４０（複数可）、及び／または別のサービス１２５０（複数可）は、このような外部自動スケーリングサービスのクライアントであり得る。
【０１１１】
いくつかの実施形態において、サービスプロバイダは、多数の種類の格納ボリュームを提供し、各種類は異なる機能及び／または性能特性を有する。いくつかの実施形態において、ブロックベース格納サービスにより、顧客は、特定時間スナップショットを作成し、それらを使用して新たなボリュームをインスタンス化することが可能となり得る。このようなスナップショットは、例えば、地理的拡張、データセンタ移行、及び／または障害復旧のために使用され得る。ブロックベース格納サービスはまた、格納ボリュームの性能メトリクス（帯域幅、処理能力、待ち時間、及び待ち行列の長さ等）へのアクセスを提供し得る。これら及び他のメトリクスは、監視ツールのＡＰＩを通して、あるいはＧＵＩ、コマンドライン、またはブロックベース格納サービスの他のインタフェースを通して、アクセス可能であり得る。
【０１１２】
本明細書において説明されるシステムのいくつかの実施形態において、顧客に格納及びコンピューティングサービスを提供する分散コンピューティングシステムは、顧客が、収集対象のカスタムメトリクスを定義し、これらのメトリクスに依拠するカスタム自動スケーリングポリシーを定義し、及び／またはこれらのポリシーが適用されるべきクラスタ内のインスタンスグループの特定部分集合を指示することを、明示的に可能にするＡＰＩを公開し得る。
【０１１３】
少なくともいくつかの実施形態において、本明細書において説明されるデータストアは、非構造化オブジェクト格納サービス上に構築されたＨａｄｏｏｐ（登録商標）ファイルシステムＡＰＩの実施態様であり得る。分散コンピューティングシステム内の自動スケーリングクラスタに関する技術の多数の実施形態が、Ａｐａｃｈｅ（商標）Ｈａｄｏｏｐ（登録商標）フレームワーク上に構築されたＭａｐＲｅｄｕｃｅシステム及びサービスの具体的な実施態様に関して説明されるが、別の実施形態において、これらの技術は、ＭａｐＲｅｄｕｃｅの他の実施態様上または他の種類のクラスタベース分散コンピューティングフレームワークにおいて、クラスタの自動スケーリングを実行するために適用され、他の種類のクラスタベース分散コンピューティングフレームワークのうちの一部（全てではない）は、マスタコンピュートノード及びワーカ（すなわちスレーブ）コンピュートノードを含み得ることにも留意されたい。
【０１１４】
いくつかの実施形態において、本明細書において説明されるメタデータ、データアイテム、及び／またはオブジェクトのうちの少なくともいくつかは、ソリッドステートドライブ（ＳＳＤ）上に格納され得る。いくつかの実施形態において、メタデータ、データアイテム、及び／またはオブジェクトのうちの少なくともいくつかは、高可用性及び永続性のために、例えば３つの場所にわたって、複製され得る。
【０１１５】
例示的プロバイダネットワーク環境
本節は、本明細書において説明される方法及び装置（例えばＭａｐＲｅｄｕｃｅクラスタ上でアプリケーションを実行する際採用される方法及び装置）の実施形態が実施され得る例示的プロバイダネットワーク環境を説明する。しかしながら、これらの例示的プロバイダネットワーク環境に、限定的意図はない。
【０１１６】
図１３は、少なくともいくつかの実施形態による、例示的プロバイダネットワーク環境を示す。プロバイダネットワーク１３００は、１つまたは複数の仮想化サービス１３１０を介して、クライアントにリソース仮想化を提供し得る。１つまたは複数の仮想化サービス１３１０により、クライアントは、１つまたは複数のデータセンタにおけるプロバイダネットワーク（複数可）内のデバイス上で実施される計算及び格納リソースを非限定的に含む仮想化リソースのインスタンス１３１２を、購入、レンタル、あるいは取得することが可能となる。プライベートＩＰアドレス１３１６は、リソースインスタンス１３１２に対応付けられ、プライベートＩＰアドレスは、プロバイダネットワーク１３００上のリソースインスタンス１３１２の内部ネットワークアドレスである。いくつかの実施形態において、プロバイダネットワーク１３００はまた、クライアントがプロバイダ１３００から取得し得るパブリックＩＰアドレス１３１４及び／またはパブリックＩＰアドレス範囲（例えばインターネットプロトコルバージョン４（ＩＰｖ４）もしくはインターネットプロトコルバージョン６（ＩＰｖ６）アドレス）を提供し得る。
【０１１７】
従来、プロバイダネットワーク１３００は、仮想化サービス１３１０を介して、サービスプロバイダのクライアント（例えばクライアントネットワーク１３５０Ａを操作するクライアント）が、クライアントに割り当てまたは配分された少なくともいくつかのパブリックＩＰアドレス１３１４を、クライアントに割り当てられた特定のリソースインスタンス１３１２に、動的に対応付けることを可能にし得る。プロバイダネットワーク１３００はまた、クライアントが、クライアントに配分された１つの仮想化コンピューティングリソースインスタンス１３１２に以前マッピングされていたパブリックＩＰアドレス１３１４を、クライアントに同様に配分された別の仮想化コンピューティングリソースインスタンス１３１２に再マッピングすることを可能にし得る。サービスプロバイダにより提供される仮想化コンピューティングリソースインスタンス１３１２及びＩＰアドレス１３１４を使用して、クライアントネットワーク１３５０Ａのオペレータ等のサービスプロバイダのクライアントは、例えば、クライアント特有アプリケーションを実行し、インターネット等の中間ネットワーク１３４０上でクライアントのアプリケーションを示し得る。中間ネットワーク１３４０上の別のネットワークエンティティ１３２０はそれから、クライアントネットワーク１３５０Ａにより発行された宛先パブリックＩＰアドレス１３１４へのトラフィックを生成し得る。トラフィックは、サービスプロバイダデータセンタへルーティングされ、データセンタにて、ネットワーク基板を介して、宛先パブリックＩＰアドレス１３１４へ現在マッピングされている仮想化コンピューティングリソースインスタンス１３１２のプライベートＩＰアドレス１３１６へルーティングされる。同様に、仮想化コンピューティングリソースインスタンス１３１２からの応答トラフィックは、ネットワーク基板を介して、中間ネットワーク１３４０上へ戻って発信元エンティティ１３２０へルーティングされ得る。
【０１１８】
図１３に監視コンポーネントまたは自動スケーリング規則エンジンは図示されないが、このようなコンポーネントは、いくつかの実施形態において、仮想化サービス１３１０の制御プレーン内で実施され得ることに留意されたい。別の実施形態において、このようなコンポーネントは、プロバイダネットワーク１３００上の別個の自動スケーリングサービスの一環として実施され、仮想化サービス１３１０は、このようなサービスのクライアントであり得る。
【０１１９】
本明細書において使用されるプライベートＩＰアドレスは、プロバイダネットワーク内のリソースインスタンスの内部ネットワークアドレスを指す。プライベートＩＰアドレスは、プロバイダネットワーク内のみルーティング可能である。プロバイダネットワークの外側から生じるネットワークトラフィックは、直接プライベートＩＰアドレスへルーティングされず、代わりに、トラフィックは、リソースインスタンスへマッピングされたパブリックＩＰアドレスを利用する。プロバイダネットワークは、パブリックＩＰアドレスからプライベートＩＰアドレスへのマッピング、及びその反対のマッピングを実行するために、ネットワークアドレス変換（ＮＡＴ）または同様の機能を提供するネットワークデバイスまたはアプライアンスを含み得る。
【０１２０】
本明細書において使用されるパブリックＩＰアドレスは、サービスプロバイダにより、またはクライアントにより、リソースインスタンスに割り当てられたインターネットルーティング可能ネットワークアドレスである。パブリックＩＰアドレスへルーティングされたトラフィックは、例えば１対１ネットワークアドレス変換（ＮＡＴ）を介して変換され、リソースインスタンス各自のプライベートＩＰアドレスへ転送される。
【０１２１】
いくつかのパブリックＩＰアドレスは、プロバイダネットワークインフラストラクチャにより、特定のリソースインスタンスに割り当てられ得る。これらのパブリックＩＰアドレスは、標準パブリックＩＰアドレス、または単純に標準ＩＰアドレスと称され得る。少なくともいくつかの実施形態において、標準ＩＰアドレスをリソースインスタンスのプライベートＩＰアドレスにマッピングすることは、全リソースインスタンス種類に対するデフォルトの起動構成である。
【０１２２】
少なくともいくつかのパブリックＩＰアドレスは、プロバイダネットワーク１３００のクライアント（例えばエンドユーザ、サービス加入者、またはサービスの顧客である第三者サービスが、サービスと対話する手段であるクライアントアプリケーション）に対し配分され得る、あるいはクライアントにより取得され得る。クライアントはそれから、自身の配分されたパブリックＩＰアドレスを、クライアントに配分された特定のリソースインスタンスに割り当て得る。これらのパブリックＩＰアドレスは、クライアントパブリックＩＰアドレス、または単純にクライアントＩＰアドレスと称され得る。標準ＩＰアドレスの事例のように、プロバイダネットワーク１３００によりリソースインスタンスに割り当てられる代わりに、クライアントＩＰアドレスは、例えばサービスプロバイダにより提供されるＡＰＩを介して、クライアントによりリソースインスタンスに割り当てられ得る。標準ＩＰアドレスと異なり、クライアントＩＰアドレスはクライアントアカウント（例えば顧客アカウント）に配分され、必要または所望に応じて、それぞれのクライアントにより他のリソースインスタンスに再マッピング可能である。クライアントＩＰアドレスは、特定のリソースインスタンスではなく、クライアントのアカウントに対応付けられ、クライアントがそのＩＰアドレスを解除することを選択するまで、クライアントはそのＩＰアドレスを制御する。従来の固定ＩＰアドレスと異なり、クライアントＩＰアドレスは、クライアントが、クライアントのパブリックＩＰアドレスを、クライアントのアカウントに対応付けられた任意のリソースインスタンスに再マッピングすることにより、リソースインスタンスまたは可用性ゾーンの障害をマスクすることを可能にする。クライアントＩＰアドレスは、例えば、クライアントが、クライアントＩＰアドレスを置換リソースインスタンスに再マッピングすることにより、クライアントのリソースインスタンスまたはソフトウェアに関する問題を処理することを可能にする。
【０１２３】
図１４は、少なくともいくつかの実施形態による、ＩＰトンネリング技術を使用してネットワーク基板上でオーバーレイネットワークを実施する例示的データセンタを示す。プロバイダデータセンタ１４００は、ルータ、スイッチ、ネットワークアドレス変換（ＮＡＴ）等のネットワークデバイス１４１２を含むネットワーク基板を含み得る。少なくともいくつかの実施形態は、オーバーレイネットワークを提供するインターネットプロトコル（ＩＰ）トンネリング技術を採用し、オーバーレイネットワークを介して、カプセル化パケットはトンネルを使用してネットワーク基板１４１０を通され得る。ＩＰトンネリング技術は、ネットワーク（例えば図１４のデータセンタ１４００におけるローカルネットワーク）上でオーバーレイネットワークを作成するマッピング及びカプセル化システムを提供し、オーバーレイ層（パブリックＩＰアドレス）及びネットワーク基板１４１０層（プライベートＩＰアドレス）に別個のネームスペースを提供し得る。オーバーレイ層におけるパケットは、それらのトンネル基板対象（プライベートＩＰアドレス）が何であるべきかを特定するために、マッピングディレクトリ（例えばマッピングサービス１４３０により提供）と照合され得る。ＩＰトンネリング技術は、仮想ネットワークトポロジー（オーバーレイネットワーク）を提供し、クライアントに提示されるインタフェース（例えばサービスＡＰＩ）は、オーバーレイネットワークに配属されているため、クライアントがパケットを送りたいＩＰアドレスを提供する時、ＩＰオーバーレイアドレスがどこかを知るマッピングサービス（例えばマッピングサービス１４３０）と通信することにより、ＩＰアドレスは仮想空間において実行される。
【０１２４】
少なくともいくつかの実施形態において、ＩＰトンネリング技術は、ＩＰオーバーレイアドレス（パブリックＩＰアドレス）を基板ＩＰアドレス（プライベートＩＰアドレス）にマッピングし、２つのネームスペース間のトンネルにおいてパケットをカプセル化し、カプセル化がパケットから取り除かれる正しいエンドポイントへトンネルを介してパケットを届け得る。図１４において、ホスト１４２０Ａ上の仮想マシン（ＶＭ）１４２４Ａから中間ネットワーク１４４０上のデバイスへの例示的オーバーレイネットワークトンネル１４３４Ａ（エッジルータ１４１４を通過）、並びにホスト１４２０Ｂ上のＶＭ１４２４Ｂとホスト１４２０Ｃ上のＶＭ１４２４Ｃとの間の例示的オーバーレイネットワークトンネル１４３４Ｂが、表示される。いくつかの実施形態において、パケットは、送信前にオーバーレイネットワークパケット形式にカプセル化され、オーバーレイネットワークパケットは、受信後に取り除かれ得る。別の実施形態において、オーバーレイネットワークパケットにパケットをカプセル化する代わりに、送信前にオーバーレイネットワークアドレス（パブリックＩＰアドレス）がパケットの基板アドレス（プライベートＩＰアドレス）に埋め込まれ、受信の際にパケットアドレスから取り除かれ得る。実施例として、オーバーレイネットワークは、パブリックＩＰアドレスとして３２ビットＩＰｖ４（インターネットプロトコルバージョン４）アドレスを使用して実施され、ＩＰｖ４アドレスは、プライベートＩＰアドレスとして基板ネットワーク上で使用される１２８ビットＩＰｖ６（インターネットプロトコルバージョン６）の一部として埋め込まれ得る。いくつかの実施形態において、図１４に例示されるようなＩＰトンネリング技術は、本明細書において説明されるクラスタ自動スケーリングを実施するアプリケーションをＭａｐＲｅｄｕｃｅクラスタ上で実行する時に、採用され得る。
【０１２５】
図１４を参照すると、実施形態が実行され得る少なくともいくつかのネットワークは、多数のオペレーティングシステムがホストコンピュータ（例えば図１４のホスト１４２０Ａ及び１４２０Ｂ）上で同時に実行される、すなわちホスト１４２０上の仮想マシン（ＶＭ）１４２４として実行されることを可能にするハードウェア仮想化技術を含み得る。ＶＭ１４２４は、例えば、ネットワークプロバイダのクライアントにレンタルまたはリースされ得る。ホスト１４２０上のハイパーバイザ、すなわち仮想マシンモニタ（ＶＭＭ）１４２２は、仮想プラットフォームによりホスト上のＶＭ１４２４を提示し、ＶＭ１４２４の実行を監視する。各ＶＭ１４２４には、１つまたは複数のプライベートＩＰアドレスが提供され得る。ホスト１４２０上のＶＭＭ１４２２は、ホスト上のＶＭ１４２４のプライベートＩＰアドレスを認識し得る。マッピングサービス１４３０は、全てのネットワークＩＰプレフィックス、並びにルータまたはローカルネットワーク上でＩＰアドレスを供給する他のデバイスのＩＰアドレスを、認識し得る。これには、多数のＶＭ１４２４を供給するＶＭＭ１４２２のＩＰアドレスが含まれる。マッピングサービス１４３０は、例えばサーバシステム上で集中化され得る、またはネットワーク上の２つ以上のサーバシステムもしくは他のデバイス間で分散され得る。ネットワークは、例えば、マッピングサービス技術及びＩＰトンネリング技術を使用して、例えばデータセンタ１４００のネットワーク内で異なるホスト１４２０上のＶＭ１４２４間でデータパケットをルーティングし得る。このようなローカルネットワーク内のルーティング情報を交換するために、内部ゲートウェイプロトコル（ＩＧＰ）が使用され得ることに留意されたい。
【０１２６】
加えて、プロバイダデータセンタ１４００のネットワーク等のネットワーク（時に自律システム（ＡＳ）と称される）は、マッピングサービス技術、ＩＰトンネリング技術、及びルーティングサービス技術を使用して、ＶＭ１４２４からインターネット発信先へ、及びインターネット発信元からＶＭ１４２４へ、パケットをルーティングし得る。外部ゲートウェイプロトコル（ＥＧＰ）または境界ゲートウェイプロトコル（ＢＧＰ）は通常、インターネット上の発信元と発信先との間のインターネットルーティングに使用されることに留意されたい。図１４は、少なくともいくつかの実施形態による、リソース仮想化技術を提供し、かつインターネットトランジットプロバイダに接続するエッジルータ１４１４（複数可）を介して完全なインターネットアクセスを提供するネットワークを実施する例示的プロバイダデータセンタ１４００を示す。プロバイダデータセンタ１４００は、例えばクライアントに、ハードウェア仮想化サービスを介して仮想コンピューティングシステム（ＶＭ１４２４）を実行する能力、並びに格納仮想化サービスを介して格納リソース１４１８上の仮想化データストア１４１６を実行する能力を、提供し得る。様々な実施形態において、仮想化データストア１４１６の格納１４１８は、本明細書において説明されるように、オブジェクト格納、ブロックベース格納、及び／またはボリュームベース格納を含み得ることに留意されたい。
【０１２７】
データセンタ１４００のネットワークは、ＩＰトンネリング技術、マッピングサービス技術、及びルーティングサービス技術を実施して、仮想化リソースへ及び仮想化リソースからのトラフィックをルーティングし得る、例えばデータセンタ１４００内のホスト１４２０上のＶＭ１４２４からインターネット発信先へ、及びインターネット発信元からＶＭ１４２４へ、パケットをルーティングし得る。インターネット発信元及び発信先は、例えば、中間ネットワーク１４４０に接続されたコンピューティングシステム１４７０と、中間ネットワーク１４４０に接続するローカルネットワーク１４５０に接続されたコンピューティングシステム１４５２（例えばネットワーク１４５０をインターネットトランジットプロバイダに接続するエッジルータ１４１４（複数可）を介して）とを含み得る。プロバイダデータセンタ１４００のネットワークはまた、データセンタ１４００内のリソース間、例えばデータセンタ１４００内のホスト１４２０上のＶＭ１４２４からデータセンタ１４００内の同じホスト上または他のホスト１４２０上の他のＶＭ１４２４へ、パケットをルーティングし得る。
【０１２８】
データセンタ１４００を提供するサービスプロバイダはまた、データセンタ１４００と同様のハードウェア仮想化技術を含み、かつ中間ネットワーク１４４０にやはり接続され得る追加データセンタ１４６０（複数可）を提供し得る。パケットは、データセンタ１４００から他のデータセンタ１４６０へ、例えばデータセンタ１４００内のホスト１４２０上のＶＭ１４２４から別の同様のデータセンタ１４６０内の別のホスト上の別のＶＭへ、及びその反対方向に、転送され得る。
【０１２９】
多数のオペレーティングシステムが、ネットワークプロバイダのクライアントにレンタルまたはリースされ得るホスト上の仮想マシン（ＶＭ）として、ホストコンピュータ上で同時に実行されることを可能にするハードウェア仮想化技術が前に説明されるが、ハードウェア仮想化技術はまた、他のコンピューティングリソース、例えば格納リソース１４１８を、ネットワークプロバイダのクライアントへ仮想化リソースとして同様に提供するために、使用され得る。
【０１３０】
図１４に例示されるように、いくつかの実施形態において、プロバイダデータセンタ１４００は、監視サービス１４８０、及び／またはクラスタ自動スケーリングエンジン１４８５を含み得る。例えば、いくつかの実施形態において、監視サービス１４８０は、自動スケーリングトリガ条件を表す式において使用されるメトリクスを収集及び分析するように構成され得る、またはこのようなメトリクスを収集して、それらを分析のために別個の自動スケーリング規則エンジンへ渡し、その後、自動スケーリング規則エンジンが、自動スケーリング行動を実行する必要があるか否か、及び必要がある時を決定し得る（図示せず）。いくつかの実施形態において、プロバイダデータセンタ１４００により提供される分散コンピューティングサービスは、監視サービス１４８０のクライアントであり得る。いくつかの実施形態において、クラスタ自動スケーリングエンジン１４８５は、本明細書において説明される自動スケーリング技術のうちのいずれかを使用して特定される任意の自動スケーリング行動を実行するように構成され得る。いくつかの実施形態において、自動スケーリング規則エンジンは、監視サービス１４８０内ではなく、クラスタ自動スケーリングエンジン１４８５内で実施され得る。
【０１３１】
図１５は、少なくともいくつかの実施形態による、格納仮想化サービス及びハードウェア仮想化サービスをクライアントに提供する例示的プロバイダネットワークのブロック図である。ハードウェア仮想化サービス１５２０は、多数の計算リソース１５２４（例えばＶＭ）をクライアントに提供する。計算リソース１５２４は、例えば、プロバイダネットワーク１５００のクライアントに（例えばクライアントネットワーク１５５０を実施するクライアントに）レンタルまたはリースされ得る。各計算リソース１５２４には、１つまたは複数のプライベートＩＰアドレスが提供され得る。プロバイダネットワーク１５００は、計算リソース１５２４のプライベートＩＰアドレスからパブリックインターネット発信先へ、及びパブリックインターネット発信元から計算リソース１５２４へ、パケットをルーティングするように構成され得る。
【０１３２】
プロバイダネットワーク１５００は、例えばローカルネットワーク１５５６を介して中間ネットワーク１５４０に接続されたクライアントネットワーク１５５０に、中間ネットワーク１５４０に、及びプロバイダネットワーク１５００に接続されたハードウェア仮想化サービス１５２０を介して、仮想コンピューティングシステム１５９２を実行する能力を提供し得る。いくつかの実施形態において、ハードウェア仮想化サービス１５２０は、１つまたは複数のＡＰＩ１５０２、例えばウェブサービスインタフェースを提供し、これを介して、クライアントネットワーク１５５０は、例えばコンソール１５９４を用いて、ハードウェア仮想化サービス１５２０により提供される機能にアクセスし得る。少なくともいくつかの実施形態において、クライアントネットワーク１５５０の各仮想コンピューティングシステム１５９２は、プロバイダネットワーク１５００にて、クライアントネットワーク１５５０にリース、レンタル、あるいは提供される計算リソース１５２４に対応し得る。
【０１３３】
仮想コンピューティングシステム１５９２及び／または別のクライアントデバイス１５９０またはコンソール１５９４のインスタンスから、クライアントは、例えば１つまたは複数のＡＰＩ１５０２を介して、格納仮想化サービス１５１０の機能にアクセスして、プロバイダネットワーク１５００により提供される仮想化データストア１５１６に対しデータアクセス及びデータ格納を行い得る。いくつかの実施形態において、仮想化データストアゲートウェイ（図示せず）は、クライアントネットワーク１５５０にて提供され、仮想化データストアゲートウェイは、少なくともあるデータ、例えば頻繁にアクセスされるまたは重要なデータを、ローカルにキャッシュし、かつデータの１次ストア（仮想化データストア１５１６）が維持されるようローカルキャッシュから新たなデータまたは修正データをアップロードするために、１つまたは複数の通信チャンネルを介して仮想化データストアサービス１５１０と通信し得る。少なくともいくつかの実施形態において、仮想コンピューティングシステム１５９２を介して及び／または別のクライアントデバイス１５９０上で、ユーザは、ローカル仮想化格納１５９８とユーザに映る仮想化データストア１５１６のボリュームを、搭載しアクセスし得る。様々な実施形態において、仮想化データストア１５１６の格納１５１８は、本明細書において説明されるように、オブジェクト格納、ブロックベース格納、及び／またはボリュームベース格納を含み得ることに留意されたい。
【０１３４】
図１５に図示されないが、仮想化サービス（複数可）はまた、ＡＰＩ１５０２（複数可）を介してプロバイダネットワーク１５００内のリソースインスタンスからもアクセスされ得る。例えば、クライアント、アプライアンスサービスプロバイダ、または他のエンティティは、ＡＰＩ１５０２を介してプロバイダネットワーク１５００上の各自のプライベートネットワーク内からの仮想化サービスにアクセスして、プライベートネットワーク内または別のプライベートネットワーク内の１つまたは複数のリソースインスタンスの配分を要求し得る。
【０１３５】
図１５に監視コンポーネントまたは自動スケーリング規則エンジンは図示されないが、このようなコンポーネントは、いくつかの実施形態において、格納仮想化サービス１５１０及び／またはハードウェア仮想化サービス１５２０の制御プレーン内で実施され得ることに留意されたい。別の実施形態において、このようなコンポーネントは、プロバイダネットワーク１５００上の別個の自動スケーリングサービスの一環として実施され、仮想化サービス１５１０及び／または１５２０は、このようなサービスのクライアントであり得る。
【０１３６】
図１６は、少なくともいくつかの実施形態による、プロバイダネットワーク上のプライベートネットワークを少なくともいくつかのクライアントに提供する例示的プロバイダネットワークを示す。プロバイダネットワーク１６００上のクライアントの仮想化プライベートネットワーク１６６０により、例えばクライアントは、クライアントネットワーク１６５０上の自身の既存のインフラストラクチャ（例えばデバイス１６５２）を、論理的に分離されたリソースインスタンスの集合（例えばＶＭ１６２４Ａ及び１６２４Ｂ並びに格納１６１８Ａ及び１６１８Ｂ）に接続すること、並びに自身のリソースインスタンスを含めるために、セキュリティサービス、ファイアウォール、及び侵入検出システム等の管理能力を拡張することが、可能になる。
【０１３７】
クライアントの仮想化プライベートネットワーク１６６０は、プライベート通信チャンネル１６４２を介して、クライアントネットワーク１６５０に接続され得る。プライベート通信チャンネル１６４２は、例えば、ネットワークトンネリング技術に従って実施されるトンネル、または中間ネットワーク１６４０によるその他のピアリング接続であり得る。中間ネットワークは、例えば、共有ネットワーク、またはインターネット等のパブリックネットワークであり得る。あるいは、プライベート通信チャンネル１６４２は、仮想化プライベートネットワーク１６６０とクライアントネットワーク１６５０との間の直接専用接続で実施され得る。
【０１３８】
パブリックネットワークは、複数のエンティティに対するオープンアクセス、及び複数のエンティティ間の相互接続を提供するネットワークとして広く定義され得る。インターネット、すなわちＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ（ＷＷＷ）は、パブリックネットワークの実施例である。共有ネットワークは、アクセスが一般に制限されないパブリックネットワークと対照的に、アクセスが２つ以上のエンティティに制限されるネットワークとして広く定義され得る。共有ネットワークは、例えば、１つまたは複数のローカルエリアネットワーク（ＬＡＮ）及び／またはデータセンタネットワーク、あるいは広域ネットワーク（ＷＡＮ）を形成するために相互接続された２つ以上のＬＡＮまたはデータセンタネットワークを含み得る。共有ネットワークの実施例には、企業ネットワーク及び他のエンタープライズネットワークが非限定的に含まれ得る。共有ネットワークは、ローカルエリアを対象とするネットワークからグローバルネットワークまでの範囲内のどこにでも存在し得る。共有ネットワークは、少なくともあるネットワークインフラストラクチャをパブリックネットワークと共有し、その上、共有ネットワークは、パブリックネットワークを含み得る１つまたは複数の他のネットワークに、他のネットワーク（複数可）と共有ネットワークとの間に制御アクセスを伴って、接続され得ることに留意されたい。共有ネットワークはまた、インターネット等のパブリックネットワークと対照的に、プライベートネットワークとして見られ得る。実施形態において、共有ネットワークまたはパブリックネットワークは、プロバイダネットワークとクライアントネットワークとの間の中間ネットワークとして機能し得る。
【０１３９】
プロバイダネットワーク１６００上のクライアントの仮想化プライベートネットワーク１６６０を確立するために、１つまたは複数のリソースインスタンス（例えばＶＭ１６２４Ａ及び１６２４Ｂ並びに格納１６１８Ａ及び１６１８Ｂ）が仮想化プライベートネットワーク１６６０に配分され得る。他のリソースインスタンス（例えば格納１６１８Ｃ及びＶＭ１６２４Ｃ）は、他のクライアントによる使用のために、プロバイダネットワーク１６００上で利用可能な状態で残り得ることに留意されたい。ある範囲のパブリックＩＰアドレスがまた、仮想化プライベートネットワーク１６６０に配分され得る。加えて、プロバイダネットワーク１６００の１つまたは複数のネットワークデバイス（ルータ、スイッチ等）が、仮想化プライベートネットワーク１６６０に配分され得る。プライベート通信チャンネル１６４２は、仮想化プライベートネットワーク１６６０におけるプライベートゲートウェイ１６６２と、クライアントネットワーク１６５０におけるゲートウェイ１６５６との間に確立され得る。
【０１４０】
少なくともいくつかの実施形態において、プライベートゲートウェイ１６６２に加えて、またはプライベートゲートウェイ１６６２の代わりに、仮想化プライベートネットワーク１６６０は、パブリックゲートウェイ１６６４を含み、パブリックゲートウェイ１６６４により、仮想化プライベートネットワーク１６６０内のリソースは、プライベート通信チャンネル１６４２を介する代わりに、またはプライベート通信チャンネル１６４２を介することに加えて、中間ネットワーク１６４０を介してエンティティ（例えばネットワークエンティティ１６４４）と直接通信すること、並びにその反対方向の直接通信が可能となる。
【０１４１】
仮想化プライベートネットワーク１６６０は、必ずしもではないが、２つ以上のサブネット１６７０に細分され得る。例えば、プライベートゲートウェイ１６６２及びパブリックゲートウェイ１６６４の両者を含む実施態様において、プライベートネットワークは、プライベートゲートウェイ１６６２を通して到達可能なリソース（当実施例においてはＶＭ１６２４Ａ及び格納１６１８Ａ）を含むサブネット１６７０Ａと、パブリックゲートウェイ１６６４を通して到達可能なリソース（当実施例においてはＶＭ１６２４Ｂ及び格納１６１８Ｂ）を含むサブネット１６７０Ｂとに、細分され得る。
【０１４２】
クライアントは、特定のクライアントパブリックＩＰアドレスを、仮想化プライベートネットワーク１６６０内の特定のリソースインスタンスに割り当て得る。中間ネットワーク１６４０上のネットワークエンティティ１６４４はそれから、クライアントにより発行されたパブリックＩＰアドレスへトラフィックを送信し得る。トラフィックは、プロバイダネットワーク１６００により、対応付けられたリソースインスタンスにルーティングされる。リソースインスタンスからの返答トラフィックは、プロバイダネットワーク１６００により、中間ネットワーク１６４０上のネットワークエンティティ１６４４へ戻るようルーティングされる。リソースインスタンスとネットワークエンティティ１６４４との間のトラフィックをルーティングすることは、リソースインスタンスのパブリックＩＰアドレスとプライベートＩＰアドレス間の変換を行うネットワークアドレス変換を必要とし得ることに留意されたい。
【０１４３】
少なくともいくつかの実施形態により、クライアントは、図１６に例示されるクライアントの仮想化プライベートネットワーク１６６０内のパブリックＩＰアドレスを、クライアントの外部ネットワーク１６５０上のデバイスに再マッピングすることが可能であり得る。パケットが受信されると（例えばネットワークエンティティ１６４４から）、ネットワーク１６００は、パケットにより示される宛先ＩＰアドレスが外部ネットワーク１６５０上のエンドポイントに再マッピングされたことを特定し、各エンドポイントへのパケットのルーティングを、プライベート通信チャンネル１６４２を介して、または中間ネットワーク１６４０を介して、処理し得る。応答トラフィックは、プロバイダネットワーク１６００を通して、エンドポイントからネットワークエンティティ１６４４へルーティングされ得る、またはクライアントネットワーク１６５０により、ネットワークエンティティ１６４４へ直接ルーティングされ得る。ネットワークエンティティ１６４４の観点からは、ネットワークエンティティ１６４４がプロバイダネットワーク１６００上のクライアントのパブリックＩＰアドレスと通信しているように映る。しかしながら、ネットワークエンティティ１６４４は実際には、クライアントネットワーク１６５０上のエンドポイントと通信したのである。
【０１４４】
図１６が中間ネットワーク１６４０上で、プロバイダネットワーク１６００の外部に存在するネットワークエンティティ１６４４を示すが、ネットワークエンティティは、プロバイダネットワーク１６００上のエンティティであり得る。例えば、プロバイダネットワーク１６００により提供されるリソースインスタンスのうちの１つは、クライアントにより発行されたパブリックＩＰアドレスにトラフィックを送るネットワークエンティティであり得る。
【０１４５】
図１６に監視コンポーネントまたは自動スケーリング規則エンジンは図示されないが、このようなコンポーネントは、いくつかの実施形態において、格納仮想化サービス１６３０及び／またはハードウェア仮想化サービス１６３５の制御プレーン内で実施され得ることに留意されたい。別の実施形態において、このようなコンポーネントは、プロバイダネットワーク１６００上の別個の自動スケーリングサービスの一環として実施され、仮想化サービス１６３０及び／または１６３５は、このようなサービスのクライアントであり得る。
【０１４６】
例示的コンピュータシステム
少なくともいくつかの実施形態において、本明細書において説明される方法及び装置の一部または全てを実施するコンピューティング環境は、１つまたは複数のコンピュータアクセス可能媒体を含む、またはそのような媒体にアクセスするように構成される汎用コンピュータシステム、例えば図１７において例示されるコンピュータシステム１７００等を含み得る。例えば、様々な実施形態において、コンピュータシステム１７００は、分散計算システム（例えばＭａｐＲｅｄｕｃｅクラスタ）のマスタノードまたはワーカノード、あるいはオブジェクト格納サービス、ブロックベース格納サービス、もしくはボリュームベース格納サービスのノード、あるいはクラスタ自動スケーリングを実施するサービスプロバイダシステム、クライアントコンピューティングシステム、もしくは本明細書において説明される方法及び装置を実施するために採用され得るその他の種類のコンピュータシステム上のコンピューティングノードを、表し得る。例示される実施形態において、コンピュータシステム１７００は、入出力（Ｉ／Ｏ）インタフェース１７３０を介してシステムメモリ１７２０に接続された１つまたは複数のプロセッサ１７１０を含む。コンピュータシステム１７００はさらに、Ｉ／Ｏインタフェース１７３０に接続されたネットワークインタフェース１７４０を含む。
【０１４７】
様々な実施形態において、コンピュータシステム１７００は、１つのプロセッサ１７１０を含むユニプロセッサシステム、またはいくつか（例えば２つ、４つ、８つ、もしくは別の好適な個数）のプロセッサ１７１０を含むマルチプロセッサシステムであり得る。プロセッサ１７１０は、命令を実行可能な任意の好適なプロセッサであり得る。例えば、様々な実施形態において、プロセッサ１７１０は、様々な命令集合アーキテクチャ（ＩＳＡ）、例えばｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、もしくはＭＩＰＳ  ＩＳＡ、またはその他の好適なＩＳＡ等のうちのいずれかを実行する汎用または組み込みプロセッサであり得る。マルチプロセッサシステムにおいて、それぞれのプロセッサ１７１０は通常、必ずしもではないが、同一のＩＳＡを実行し得る。
【０１４８】
システムメモリ１７２０は、プロセッサ１７１０（複数可）によりアクセス可能な命令及びデータを格納するように構成され得る。様々な実施形態において、システムメモリ１７２０は、静的ランダムアクセスメモリ（ＳＲＡＭ）、同期式動的ＲＡＭ（ＳＤＲＡＭ）、不揮発性／フラッシュ型メモリ、またはその他の種類のメモリ等、任意の好適なメモリ技術を使用して実行され得る。例示される実施形態において、本明細書において説明される方法及び装置に関して前述された方法、技術、及びデータ等、１つまたは複数の所望する機能を実行するプログラム命令及びデータは、システムメモリ１７２０内にコード１７２５及びデータ１７２６として格納されていることが示される。例えば、様々な時点で、システムメモリ１７２０におけるデータ１７２６には、ＨＰＣアプリケーションもしくは計算（例えばＭａｐＲｅｄｕｃｅアプリケーション）により処理予定のデータ集合（もしくはその部分）、このようなアプリケーションにより生成される出力データ、ＭａｐＲｅｄｕｃｅジョブのキーペア、ホストファイル、ランクファイル、または構成もしくは作動パラメータ、あるいはこのようなアプリケーションを実行する時に使用可能なその他の情報、以上のうちの１つまたは複数が含まれ得る。別の実施例において、様々な時点で、システムメモリ１７２０におけるコード１７２５には、ＭａｐＲｅｄｕｃｅアプリケーション（またはそのいずれか一部）を実施するように実行可能なプログラム命令、オペレーティングシステムもしくは仮想マシンモニタ、ライブラリもしくはユーティリティ機能、ＡＰＩもしくはサービスインタフェース、または本明細書において説明される方法を実行するように実行可能なその他のプログラム命令が、含まれ得る。
【０１４９】
一実施形態において、Ｉ／Ｏインタフェース１７３０は、プロセッサ１７１０と、システムメモリ１７２０と、ネットワークインタフェース１７４０または他の周辺インタフェースを含むデバイス内の任意の周辺デバイスとの間のＩ／Ｏトラフィックを調整するように構成され得る。いくつかの実施形態において、Ｉ／Ｏインタフェース１７３０は、１つのコンポーネント（例えばシステムメモリ１７２０）からのデータ信号を、別のコンポーネント（例えばプロセッサ１７１０）が使用する好適な形式に変換するために、任意の必要なプロトコル変換、タイミング変換、または他のデータ変換を実行し得る。いくつかの実施形態において、Ｉ／Ｏインタフェース１７３０は、例えば周辺構成要素相互接続（ＰＣＩ）バス規格または汎用シリアルバス（ＵＳＢ）規格の変形等、様々な種類の周辺バスを通して取り付けられるデバイスの対応を含み得る。いくつかの実施形態において、Ｉ／Ｏインタフェース１７３０の機能は、例えばノースブリッジとサウスブリッジといった２つ以上の別個のコンポーネントに分割され得る。また、いくつかの実施形態において、システムメモリ１７２０へのインタフェースといったＩ／Ｏインタフェース１７３０の機能の一部または全ては、プロセッサ１７１０に直接組み込まれ得る。
【０１５０】
ネットワークインタフェース１７４０は、コンピュータシステム１７００と、ネットワーク１７５０（複数可）に接続される他のデバイス１７６０との間で、データ交換を可能にするように構成され得る。他のデバイス１７６０には、例えば図１〜１６において例示及び説明される他のコンピュータシステム（例えばコンピュータシステム１７００と同様のコンピュータシステム、またはコンピューティングシステム１７００よりも多い、少ない、もしくは異なるコンポーネントを含むコンピュータシステム）またはデバイス等がある。例えば、いくつかの実施形態において、コンピュータシステム１７００は、本明細書において説明されるように、自動スケーリングを実施するクラスタベースＤＣＳ（例えばＭａｐＲｅｄｕｃｅクラスタ）のノードを表し、ネットワークインタフェース１７４０は、コンピュータシステム１７００と、オブジェクト格納サービス、ブロックベース格納サービス、またはボリュームベース格納サービスを実施するデバイスとの間で、データ交換を可能にするように構成され得る。様々な実施形態において、ネットワークインタフェース１７４０は、例えばイーサネット（登録商標）ネットワーク類等、任意の好適な有線または無線汎用データネットワークを介した通信に対応し得る。加えて、ネットワークインタフェース１７４０は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワーク等の電気通信／電話ネットワークを介した、またはファイバチャネルＳＡＮ等の格納エリアネットワークを介した、またはその他の好適な種類のネットワーク及び／もしくはプロトコルを介した通信に対応し得る。
【０１５１】
いくつかの実施形態において、システムメモリ１７２０は、本明細書において説明される方法及び装置の実施形態を実行するよう図１〜１６に関して前述されたプログラム命令及びデータを格納するように構成されるコンピュータアクセス可能媒体の一実施形態であり得る。しかしながら、別の実施形態において、プログラム命令及び／またはデータは、異なる種類のコンピュータアクセス可能媒体上で受信、送信、または格納され得る。一般に、コンピュータアクセス可能媒体には、例えばＩ／Ｏインタフェース１７３０を介してコンピュータシステム１７００に接続されるディスクまたはＤＶＤ／ＣＤといった磁気媒体または光学媒体等の非一時的記憶媒体またはメモリ媒体が含まれ得る。非一時的コンピュータアクセス可能記憶媒体には、ＲＡＭ（例えばＳＤＲＡＭ、ＤＤＲ、ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等、コンピュータシステム１７００のいくつかの実施形態にシステムメモリ１７２０または別の種類のメモリとして含まれ得る任意の揮発性または不揮発性媒体も含まれ得る。さらに、コンピュータアクセス可能媒体は、ネットワークインタフェース１７４０を介して実施され得るように、ネットワーク及び／または無線リンク等の通信媒体を介して伝達される伝送媒体すなわち電気、電磁、もしくはデジタル信号等の信号を含み得る。
【０１５２】
様々な実施形態はさらに、コンピュータアクセス可能媒体に関する前述の説明に従って実行される命令及び／またはデータの受信、送信、または格納処理を含み得る。一般に、コンピュータアクセス可能媒体には、例えばディスクまたはＤＶＤ／ＣＤ‐ＲＯＭ等の磁気媒体または光学媒体、及びＲＡＭ（例えばＳＤＲＡＭ、ＤＤＲ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等の揮発性または不揮発性媒体といった記憶媒体またはメモリ媒体、並びに、ネットワーク及び／または無線リンク等のコミュニケーション媒体を介して伝達される伝送媒体すなわち電気、電磁もしくはデジタル信号等の信号が、含まれ得る。
【０１５３】
本開示の実施形態は、以下の条項を考慮して説明され得る。
１．少なくとも１つのプロセッサ及びメモリをそれぞれが備える複数のコンピュートノードと、
インタフェースと
を備える分散コンピューティングシステムであって、
前記分散コンピューティングシステムは、分散コンピューティングサービスを実施し、
前記複数のコンピュートノードは、ＭａｐＲｅｄｕｃｅ分散コンピューティングフレームワークに従ってコンピュートノードのクラスタとして構成され、前記クラスタは分散アプリケーションを実行するように構成され、
前記分散コンピューティングサービスは、
前記インタフェースを通して前記分散コンピューティングサービスのクライアントから、真と評価されると前記クラスタに対し自動スケーリング動作を行うトリガ条件を表す式を定義する入力、及び前記式が真と評価されたことに応じて行われるべきスケーリング行動を指定する入力を受信し、前記式は前記分散アプリケーションの実行中に生成される１つまたは複数のメトリクスの値に依拠し、
前記分散アプリケーションの実行中に、前記１つまたは複数のメトリクスを収集し、
前記分散アプリケーションの実行中に、前記収集されたメトリクスに依拠して、前記式が真と評価されることを特定し、
前記特定に応じて、前記クラスタに対し前記自動スケーリング動作の実行を開始し、前記自動スケーリング動作は、前記クラスタに１つまたは複数のコンピュートノードを追加する動作、または前記クラスタから１つまたは複数のコンピュートノードを削除する動作を含む
ように構成される、前記分散コンピューティングシステム。
【０１５４】
２．前記複数のコンピュートノードは、前記複数のコンピュートノードの非重複部分集合をそれぞれが含む２つ以上のコンピュートノードグループを備え、
前記インタフェースを通して受信される前記入力は、自動スケーリングポリシーを定義し、
前記インタフェースを通して受信される前記入力はさらに、前記２つ以上のコンピュートノードグループのうちの１つまたは複数を、前記自動スケーリングポリシーが適用されるコンピュートノードグループとして特定する入力を含み、
前記クラスタに対し前記自動スケーリング動作の実行を開始するために、前記分散コンピューティングサービスは、前記特定されたコンピュートノードグループのうちの１つに１つまたは複数のコンピュートノードを追加する動作、または前記特定されたコンピュートノードグループのうちの１つから１つまたは複数のコンピュートノードを削除する動作の実行を開始するように構成される、
条項１に記載のシステム。
【０１５５】
３．前記複数のコンピュートノードは、前記複数のコンピュートノードの非重複部分集合をそれぞれが含む２つ以上のコンピュートノードグループを備え、
前記インタフェースを通して受信される前記入力は、自動スケーリングポリシーを定義し、
前記自動スケーリングポリシーは、前記式が真と評価されたことに応じて行われるべき前記スケーリング行動に、前記複数のコンピュートノードに新たなコンピュートノードグループを追加する動作、または前記複数のコンピュートノードから前記２つ以上のコンピュートノードグループのうちの１つを削除する動作が含まれることを、指定する、
いずれかの先行条項に記載のシステム。
【０１５６】
４．前記分散アプリケーションは、前記分散コンピューティングサービスの前記クライアントにより定義された１つまたは複数のアプリケーション特有メトリクスを発するように構成され、
前記式は、前記１つまたは複数のアプリケーション特有メトリクスのうちの少なくとも１つに依拠する、
いずれかの先行条項に記載のシステム。
【０１５７】
５．前記式は、前記クラスタが、または前記コンピュートノードのうちの１つまたは複数が、前記分散コンピューティングシステムにおいて作動している間にデフォルトで発する１つまたは複数のメトリクスに依拠する、
いずれかの先行条項に記載のシステム。
【０１５８】
６．前記分散アプリケーションの実行中に前記１つまたは複数のメトリクスを収集するために、前記分散コンピューティングサービスは、
前記複数のコンピュートノードのうちの２つ以上に各自備わる各監視コンポーネントから１つまたは複数のメトリクスを受信し、
前記それぞれの監視コンポーネントから受信した前記メトリクスを集約して、前記２つ以上のコンピュートノードの集約メトリクを生成する
ように構成され、
前記式は、前記集約メトリクに依拠する、
いずれかの先行条項に記載のシステム。
【０１５９】
７．１つまたは複数のコンピュータにより、
１つまたは複数のコンピューティングリソースインスタンスをそれぞれが含む２つ以上のインスタンスグループを備えるコンピューティングリソースインスタンスのクラスタを作成することと、
前記２つ以上のインスタンスグループのうちの１つにおけるコンピューティングリソースインスタンスの数を変更する前記２つ以上のインスタンスグループのうちの前記１つに対する自動スケーリング動作の実行を、満たされた場合に引き起こす条件を定義する自動スケーリングポリシーを、前記２つ以上のインスタンスグループのうちの前記１つに対応付ける入力を受信することと、
前記クラスタ上で分散アプリケーションの実行中に、前記トリガ条件が満たされたことを検出することと、
前記検出に応じて、前記２つ以上のインスタンスグループのうちの前記１つに対し前記自動スケーリング動作の実行を開始することと
を実行することを含む方法。
【０１６０】
８．前記トリガ条件は、真と評価されると前記２つ以上のインスタンスグループのうちの前記１つに対し前記自動スケーリング動作の前記実行を引き起こす式を含み、前記式は、前記クラスタ上で前記分散アプリケーションの実行中に生成される１つまたは複数のメトリクスに依拠する、
条項７に記載の方法。
【０１６１】
９．前記トリガ条件は、真と評価されると前記２つ以上のインスタンスグループのうちの前記１つに対し前記自動スケーリング動作の前記実行を引き起こす式を含み、前記式は、曜日、日付、時刻、経過時間、または推定時間に依拠する、
条項７または８に記載の方法。
【０１６２】
１０．前記２つ以上のインスタンスグループのうちの別の１つにおけるコンピューティングリソースインスタンスの数を変更する前記２つ以上のインスタンスグループのうちの前記別の１つに対する第２自動スケーリング動作の実行を、満たされた場合に引き起こす第２条件を定義する別の自動スケーリングポリシーを、前記２つ以上のインスタンスグループのうちの前記別の１つに対応付ける入力を受信することと、
前記クラスタ上で前記分散アプリケーションの実行中に、前記第２トリガ条件が満たされたことを検出することと、
前記第２トリガ条件が満たされたことの検出に応じて、前記２つ以上のインスタンスグループのうちの前記別の１つに対し前記第２自動スケーリング動作の実行を開始することと
をさらに含む、条項７〜９のうちのいずれかに記載の方法。
【０１６３】
１１．前記自動スケーリング動作は、前記２つ以上のインスタンスグループのうちの前記１つに容量を追加する動作を含む、
条項７〜１０のうちのいずれかに記載の方法。
【０１６４】
１２．前記自動スケーリング動作は、前記２つ以上のインスタンスグループのうちの前記１つから容量を削除する動作を含む、
条項７〜１１のうちのいずれかに記載の方法。
【０１６５】
１３．前記方法はさらに、
前記２つ以上のインスタンスグループのうちの前記１つから、前記コンピューティングリソースインスタンスのうちのどの１つまたは複数を削除するかを特定することと、
前記２つ以上のインスタンスグループのうちの前記１つから、前記コンピューティングリソースインスタンスのうちの前記特定した１つまたは複数を削除することと
を含み、
前記特定は、前記２つ以上のインスタンスグループのうちの前記１つにおける前記コンピューティングリソースインスタンスのうちの１つが、前記コンピューティングリソースが削除された場合に喪失するデータを格納していることを特定すること、前記２つ以上のインスタンスグループのうちの前記１つにおける前記コンピューティングリソースインスタンスのうちの１つの削除により、複製要件またはクォーラム要件は満たされなくなることを特定すること、前記２つ以上のインスタンスグループのうちの前記１つにおける前記コンピューティングリソースノードのうちの１つが廃止されたことを特定すること、前記２つ以上のインスタンスグループのうちの前記１つにおける前記コンピューティングリソースノードのうちの１つが、前記分散アプリケーションのためにタスクを現在実行していることを特定すること、または、前記２つ以上のインスタンスグループのうちの前記１つにおける前記コンピューティングリソースインスタンスのうちの１つにおいて現在実行されているタスクの進捗を特定すること、以上のうちの１つまたは複数に依拠する、
条項１２に記載の方法。
【０１６６】
１４．前記自動スケーリングポリシーはさらに、前記自動スケーリング動作による前記２つ以上のインスタンスグループのうちの前記１つの前記容量の変化量、または前記自動スケーリング動作による前記２つ以上のインスタンスグループのうちの前記１つの前記容量の変化率を定義する、
条項７〜１３のうちのいずれかに記載の方法。
【０１６７】
１５．前記２つ以上のインスタンスグループの各グループは、各自異なる種類のコンピューティングリソースインスタンス、または前記クラスタ上での前記分散アプリケーションの前記実行において各自異なる役割を有するコンピューティングリソースインスタンスを備える、
条項７〜１４のうちのいずれかに記載の方法。
【０１６８】
１６．前記検出は、コンピューティングリソースインスタンスの前記クラスタの外部のコンピューティングリソース上で実施される外部サービスにより実行され、
前記開始は、前記トリガ条件が満たされたという開示を前記外部サービスから受信することに応じて行われる、
条項７〜１５のうちのいずれかに記載の方法。
【０１６９】
１７．前記クラスタの前記作成は、ＭａｐＲｅｄｕｃｅ分散コンピューティングフレームワークに従って、コンピュートノードのクラスタとして、前記２つ以上のインスタンスグループそれぞれに前記１つまたは複数のコンピューティングリソースインスタンスを含むコンピューティングリソースインスタンスの集合を構成することを含む、条項７〜１６のうちのいずれかに記載の方法。
【０１７０】
１８．コンピューティングリソースインスタンスの前記クラスタは、１つまたは複数の仮想化コンピューティングリソースインスタンスもしくは仮想化格納リソースインスタンスを備える、条項７〜１７のうちのいずれかに記載の方法。
【０１７１】
１９．プログラム命令を記憶する非一時的コンピュータアクセス可能記憶媒体であって、前記プログラム命令は、１つまたは複数のコンピュータ上で実行されると、前記１つまたは複数のコンピュータに分散コンピューティングサービスを実施させ、
前記分散コンピューティングサービスは、
分散アプリケーションを実行するように構成される仮想化コンピューティングリソースインスタンスのクラスタと、
１つまたは複数のクライアントが前記サービスと対話する手段であるインタフェースと、
自動スケーリング規則エンジンと
を備え、
前記分散コンピューティングサービスは、
前記インタフェースを通して前記分散コンピューティングサービスのクライアントから、真と評価されると自動スケーリング動作を実行するトリガ条件を表す式を定義する情報、前記式が真と評価されたことに応じて行われるべきスケーリング行動を指定する情報を含む自動スケーリングポリシーを定義する入力、並びに前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの部分集合を特定する入力を受信する
ように構成され、
前記自動スケーリング規則エンジンは、
前記分散アプリケーションの実行中に、前記実行中に生成された１つまたは複数のメトリクスに依拠して、前記式が真と評価されることを特定し、
前記特定に応じて、前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの前記部分集合に１つまたは複数のインスタンスを追加する動作、または前記自動スケーリングポリシーが適用される前記クラスタの前記仮想化コンピューティングリソースインスタンスの前記部分集合から１つまたは複数のインスタンスを削除する動作を含む前記自動スケーリング動作の実行を開始する
ように構成される、
前記非一時的コンピュータアクセス可能記憶媒体。
【０１７２】
２０．前記式は、前記分散アプリケーションの前記実行中に生成された前記１つまたは複数のメトリクスのうちの１つの値、前記分散アプリケーションの前記実行中に生成された前記メトリクスのうちの１つに指定された最小または最大閾値、前記分散アプリケーションの前記実行中に生成された前記メトリクスのうちの１つの最小または最大閾値が破られた時間の長さ、曜日、日付、時刻、経過時間、推定時間、リソース使用メトリク、費用メトリク、前記分散アプリケーションのためのタスクを実行完了するための推定時間、または前記分散アプリケーションのために実行されるべき保留タスクの数、以上のうちの１つまたは複数に依拠する、条項１９に記載の非一時的コンピュータアクセス可能記憶媒体。
【０１７３】
２１．前記式は、
前記アプリケーションが、前記クラスタが、または前記仮想化コンピューティングリソースインスタンスのうちの１つまたは複数が、前記分散コンピューティングシステムにおいて作動している間にデフォルトで発するメトリク、
または前記分散コンピューティングサービスの前記クライアントにより定義され、かつ前記分散アプリケーションの実行中に前記分散アプリケーションが発するアプリケーション特有メトリク、
以上のうちの１つまたは複数に依拠する、
条項１９または２０に記載の非一時的コンピュータアクセス可能記憶媒体。
【０１７４】
２２．前記自動スケーリングポリシーを定義する前記入力は、前記自動スケーリング規則エンジンに入力を提供するように定義されるアプリケーションプログラミングインタフェース（ＡＰＩ）に準拠する、条項１９〜２１のうちのいずれかに記載の非一時的コンピュータアクセス可能記憶媒体。
【０１７５】
本明細書において図示及び説明される様々な方法は、方法の代表的実施形態を表す。方法は、ソフトウェア、ハードウェア、またはこれらの組み合せで実施され得る。方法の順序は変更され、様々な要素が追加、並替、結合、省略、修正等され得る。
【０１７６】
本開示の恩恵を受ける当業者には明らかであるように、様々な修正及び変更を行うことが可能である。本明細書には全てのこのような修正及び変更を包含する意図があり、従って前述の説明は、制限的な意味ではなく例示的な意味で考慮されるものとする。
【図１】
0006732798.tif 000002
【図２】
0006732798.tif 000003
【図３】
0006732798.tif 000004
【図４】
0006732798.tif 000005
【図５】
0006732798.tif 000006
【図６】
0006732798.tif 000007
【図７】
0006732798.tif 000008
【図８】
0006732798.tif 000009
【図９】
0006732798.tif 000010
【図１０】
0006732798.tif 000011
【図１１】
0006732798.tif 000012
【図１２】
0006732798.tif 000013
【図１３】
0006732798.tif 000014
【図１４】
0006732798.tif 000015
【図１５】
0006732798.tif 000016
【図１６】
0006732798.tif 000017
【図１７】
0006732798.tif 000018