クラウドでの分散プログラミング

完了

分散プログラムは、ネットワークに接続されたマシン上で実行されます。 マシンのネットワークはあらゆるところに存在します。 数あるなかでも、インターネット、ハイ パフォーマンス コンピューティング (HPC) クラスター、携帯電話、車載ネットワークが一般的な例となります。 マシンのネットワークの多くは、分散システムであると考えられます。 ここでは分散システムを、ネットワーク接続されたマシンがメッセージ パッシングや共有メモリを使用して通信を行い、アクションを調整して特定の問題を解決したり特定のサービスを提供したりするものとして定義します。 クラウドは、ネットワーク接続されたマシン (つまりデータセンター) の 1 つのクラスター (または複数のクラスター) を介して提供されるインターネットベースのソフトウェア、プラットフォーム、インフラストラクチャ サービスのセットとして定義されているため、クラウドは分散システムです。 定義のもう 1 つの結果として、クラウドでは分散プログラム (逐次または並列) が標準となります。 具体的には、このセクションでは分散プログラムを、さまざまなマシンの別々のプロセッサで実行される並列プログラムとして定義します。 したがって、分散プログラム内のタスクが分散システムを介して対話処理を行う方法としては、明示的にメッセージを送受信するか、または基になる分散システムでサポートされている共有分散メモリに対して読み取りと書き込みを行う (たとえば、分散共有メモリ [DSM] ハードウェア アーキテクチャを使用) ということのみとなります。1 次に、クラウド向けの分散プログラム ("クラウド プログラム") の構築に使用可能なさまざまなモデルを確認し、クラウド プログラムで対処する必要があるいくつかの課題について理解します。

クラウドのプログラミング

クラウド プログラムの有効性は、設計、実装、実行の方法によって決まります。 開発プロセスでは、いくつかの考慮事項に対処する必要があります。

  • 基になるプログラミング モデル、メッセージ パッシング、または共有メモリはどれが一番適切であるか。
  • アプリケーションは、同期または非同期の計算モデルのどちらにより適しているか。
  • データの並列化またはグラフの並列化の使用のどちらが、計算効率を高めるためにデータを構成するための最適な方法であるか。
  • プログラムの複雑度、効率性、スケーラビリティを最も向上させるアーキテクチャと管理構造は、マスター - 従属またはピアツーピアのどちらであるか。

特にクラウド プログラムの場合、設計、実装、チューニング、メンテナンスに関連するいくつかの問題は、特別な注意が必要です。

  • 大規模なシステム (クラウドなど) では、アルゴリズムを完全に並列化できない、負荷の不均衡が発生する可能性が高い、同期と通信のオーバーヘッドを避けられないなどのさまざまな理由により、コンピューティングのスケーラビリティを実現するのは困難です。
  • データの局所性を活用してネットワーク トラフィックを最小限に抑える通信は、ネットワーク トポロジが通常公開されていない (パブリック) クラウドでは特に、難しくなります。
  • 仮想環境とデータセンター コンポーネントの多様性という 2 つの一般的なクラウドの現実により、タスクのスケジュール設定が複雑になり、クラウド ノード間のハードウェアとソフトウェアの違いが隠されてしまいます。
  • デッドロックと推移閉包を回避し、相互排他的なアクセスを保証するために (これらは分散設定において非常に望ましい機能です)、効果的な同期メカニズムを基盤となるシステムが提供し、設計者は活用する必要があります。
  • クラウド規模で障害の可能性が高まるにつれて、システム設計では、タスクの回復性、分散チェックポイント処理、メッセージ ログなど、フォールト トレランス メカニズムを採用する必要があります。
  • 効果的かつ効率的な実行のために、タスクおよびジョブのスケジューラでは、タスクの局所性、並列処理、弾力性、およびサービスレベル目標 (SLO) の制御をサポートする必要があります。

これらの開発に関する考慮事項とクラウドの問題をすべて解決することは、プログラマにとって大きな負担になります。 これらの機能のすべて (または一部) を設計、開発、検証、およびデバッグすることは、本質的に困難な問題であり、かなりの時間とリソースを消費するだけでなく、正確性とパフォーマンスに関する重大な課題が生じる可能性があります。

最新の分散分析エンジンでは、開発者のこれらの責任が軽減されます。 このようなエンジンでは、アプリケーション プログラミング インターフェイス (API) が提供されているため、ユーザーはプログラムを単純な逐次関数として記述できます。 その後、エンジンによって、タスクとジョブが自動的に作成され、並列化され、同期され、スケジュール設定されます。 また、ユーザーの関与を必要とせずにエラーが処理されます。 このユニットの最後で、分散分析エンジンによってクラウド プログラムの開発の課題がどのように効果的に取り除かれ対処されるかについて、詳しく説明します。 ただし、次のセクションではまず、2 つの従来の分散プログラミング モデル (共有メモリとメッセージ パッシング) を紹介します。 2 番目に、クラウド プログラムが採用できる計算モデルについて説明します。 具体的には、同期および非同期の計算モデルについて説明します。 3 番目に、クラウド プログラムの 2 つの主要な並列処理カテゴリ (データの並列処理とグラフの並列処理) を紹介します。 最後に、クラウド プログラムで通常利用できるアーキテクチャ モデル (マスター - 従属およびピアツーピアのアーキテクチャ) について説明します。


関連項目

  1. A. S. Tanenbaum (1994 年 9 月 4 日)。 分散オペレーティングシステム Prentice Hall、第 1 版