分散コンピューティングの仕組み

計算問題が非常に複雑な場合、1 台のコンピューターで処理するのに長い時間がかかり、場合によっては数百万日かかることがあります。スーパーコンピューターにも処理限界があります。幸いなことに、分散コンピューティングシステムは、複雑な計算タスクを効率的に処理するために導入できます。

非常に重い車を押して丘を登るという任務を割り当てられたと想像してください。車の移動を手伝うために、他に何もしていない人を募集することは許可されています。選択肢は 2 つあります。1 人ですべてをこなせるほど大きくて強い人を 1 人探すか、平均的な人を数人集めて一緒に押してもらうかです。ほとんどの場合、平均的な体格の人々のグループを集める方が簡単です。奇妙に聞こえるかもしれませんが、分散コンピュータ システムも同じ原理を使用します。

ハイパフォーマンス コンピューティングに代わる手頃な価格の代替品です。ハイ パフォーマンス コンピューティングでは が使用されますが、分散コンピューティングではネットワークに接続された多数のコンピューターが活用されます。よりスケーラブルであり、リソース プーリングを利用します。

分散コンピューティング システムは、特定のタスクを達成するために連携して動作するコンピューターのネットワークです。各コンピューターは、目標の達成を支援するために、その処理能力の一部 (場合によっては他のリソース) を寄付します。数千台のコンピュータをネットワークで接続することにより、分散コンピューティング システムはスーパーコンピュータの処理能力と同等、あるいはそれを超えることができます。

ほとんどの場合、コンピューターはすべての計算リソースを使用しているわけではありません。コンピュータの電源は入っていても、実際には使用していない場合もあります。分散コンピューティング システムは、共有コンピューティング システムとも呼ばれ、使用されないままになるこれらのリソースを利用します。

共有コンピューティング システムは、特定の複雑な問題には最適ですが、他の問題には役に立ちません。設計と管理が複雑になる場合があります。数人のコンピュータ科学者が共有コンピューティング システムを標準化する方法に取り組んでいますが、既存のシステムの多くは独自のハードウェア、ソフトウェア、アーキテクチャに依存しています。

典型的な分散コンピューティング システムを構成する要素は何ですか?読み続けて調べてください。

分散システム

従来のハイ パフォーマンス コンピューティング システムでは、すべてのコンピュータが同じモデルであり、同じオペレーティング システム上で実行されます。多くの場合、システム上で実行されるすべてのアプリケーションには、独自の専用サーバーがあります。ネットワーク全体が有線接続に依存している場合があります。これは、システム内のすべての要素がさまざまなハブを介して相互に接続されていることを意味します。システム全体が効率的でエレガントです。

分散コンピューティング システムも同様に効率的ですが、必ずしも見た目が非常にエレガントであるとは限りません。分散システムは、コンピュータを相互に接続するために依存するソフトウェアによってのみ制限されます。適切なソフトウェアを使用すると、共有コンピューティング システムは、異なるオペレーティング システムで実行されているさまざまな種類のコンピュータ上で動作できます。ネットワーク接続は、有線ネットワーク、ローカル エリア ネットワーク ( LAN )、ワイヤレス エリア ネットワーク (WAN)、またはインターネット上に存在する場合があります。分散システムが従来の HPC システムに比べて持つ最大の利点は、共有コンピューティング システムにリソースを追加しやすいことです。システムのソフトウェアを実行できるコンピュータを持っている人なら誰でも参加できます。

システムのソフトウェアは、各コンピュータの未使用の処理能力にアクセスできるようにするものです。参加するには、システムに接続されているすべてのコンピューターにこのソフトウェアがインストールされている必要があります。決定的な共有コンピューティング ソフトウェア キットはありませんが、一般に、ソフトウェアは次のことを実行する必要があります。

  • システムの管理サーバーに連絡してデータのチャンクを取得します
  • ホストコンピュータのCPU使用率を監視し、利用可能な場合には処理能力を利用します。
  • 新しいデータと引き換えに、分析されたデータを管理サーバーに送り返す

分散コンピューティングの用途は比較的狭いです。これらは、科学者が小さなセクションに分割できる大きな計算問題を解決するのに最適です。問題を小さな塊に分割することが特に簡単な場合、それは恥ずかしいほどの並列問題と呼ばれます。

小規模な計算問題や分解するのが難しい問題の場合、共有コンピューティング システムはあまり役に立ちません。このシステムの重要な点は、複雑な計算を完了するのにかかる時間を短縮することです。ネットワーク上の単純な計算の速度が必ずしも向上するとは限りません。

分散コンピューティング システムのさまざまな部分は何ですか?読み続けて調べてください。

別の名前のシステム

分散コンピューティング システムは、数百または数千のコンピュータのアイドル処理能力を利用するため、CPU スカベンジング、サイクル スカベンジング、サイクル スティーリングなどとも呼ばれます。それぞれの名前は、共有コンピューティング システムがそのネットワークに属するすべてのコンピュータの CPU を利用する方法を指します。

分散コンピューティング アーキテクチャ

理論的にはユーザーの数と同じ数のネットワーク インターフェイス ポイントを持つことができるグリッド コンピューティング システムとは異なり、分散コンピューティング システムには通常、制御ポイントがわずかしかありません。それは、ほとんどの共有コンピューティング システムには特定の目的があり、汎用ユーティリティではないためです。

典型的な共有コンピューティング システムにはフロントエンドとバックエンドがあると想像するとわかりやすいでしょう。フロントエンドには、プロジェクトにCPUリソースを提供しているすべてのコンピューターがあります。バックエンドには、プロジェクト全体を管理し、主要なタスクを小さなチャンクに分割し、フロントエンドのコンピューターと通信し、分析完了後にフロントエンド コンピューターが送信する情報を保存するコンピューターとサーバーがあります。

一般に、計算問題をより小さなチャンクに分割する仕事は、バックエンド コンピューター (通常はサーバー) 上のプログラムにあります。このコンピュータは、特定のソフトウェアを使用して、平均的なコンピュータ システムで管理しやすいようにタスクを小さな部分に分割します。フロントエンド コンピューターにインストールされているコンパニオン ソフトウェアからアクセスされると、サーバーは分析のためにネットワーク経由でデータを送信します。完了した分析ジョブを受信すると、サーバーはデータを適切なデータベースに送信します。

システム管理者は通常、別のコンピュータを使用して、完了した分析をつなぎ合わせます。最終的な目標は、非常に大きな問題を少しずつ解決することで解決策に到達することです。多くの場合、システム管理者は他の人がその情報から利益を得られるように結果を公開します。

このアーキテクチャの説明が少し曖昧に見える場合は、分散コンピューティング システムを作成および管理する単一の方法がないためです。各システムには独自のソフトウェアとアーキテクチャがあります。ほとんどの場合、プログラマーは特定のシステムの目的に合わせてソフトウェアをカスタマイズします。 2 つの異なる共有コンピュータ システムは、一般的には同じように動作する可能性がありますが、詳細を掘り下げてみると、大きく異なって見えることがあります。

分散コンピューティング アプリケーションにはどのようなものがありますか?なぜ特殊なソフトウェアが必要なのでしょうか?次のセクションで調べてください。

仮想サーバー

分散コンピューティング システムの中には、仮想サーバーを使用するものもあります。仮想サーバーを作成するには、エンジニアは単一の物理サーバーに特別なソフトウェアをインストールします。ソフトウェアはサーバーを複数の専用プラットフォームに分割し、それぞれが他のプラットフォームから独立してオペレーティング システムを実行できます。なぜこれを行うのでしょうか?平均的なコンピュータの所有者が自分のコンピュータの処理能力をすべて使用することはめったにないのと同様に、平均的なサーバーがフル稼働することはまれです。仮想サーバーを使用すると、単一の物理サーバーが最大限の潜在能力に近い状態で稼働し、追加のハードウェアの必要性が減ります。

分散コンピューティング アプリケーション

顕微鏡とコンピューターを使用する科学者 

アクティブな分散コンピューティング システム プロジェクトが数十件あり、それぞれに独自のネットワークと計算タスクがあります。これらのネットワークの一部は重複しています。ユーザーが複数のネットワークに参加することは可能ですが、異なるプロジェクトがアイドル状態のリソースを分割する必要があることを意味します。その結果、個々のタスクには少し時間がかかります。

共有コンピュータ システムの一例は、 です。ウィスコンシン大学マディソン校は、複数のプロジェクトに GLOW を使用しており、これはある意味、ほとんどの共有コンピューティング システムとは一線を画しています。あるプロジェクトでは、GLOW ネットワークを使用してヒトゲノムを研究しています。別の企業は、GLOW のリソースを利用して、がんの潜在的な治療法を研究しています。単一タスク専用の分散コンピューティング システムとは異なり、GLOW は複数のプロジェクトに対応できます。

GLOW を実現するソフトウェアは Condor と呼ばれます。 Condor の仕事は、GLOW ネットワーク内でアイドル状態のプロセッサを探し出し、それらを個々のプロジェクトの作業に使用することです。 1 つのプロジェクトが非アクティブな場合、Condor は他のプロジェクトのリソースを借用します。ただし、以前は非アクティブだったプロジェクトがオンラインに戻った場合、Condor はそれぞれのコンピューターのプロセッサを解放します。

他の共有コンピューティング システムには次のようなものがあります。

  • SETI @home: 知的地球外生命体を探索するために電波望遠鏡からのデータを分析するプロジェクト。
  • Africa@home: このプロジェクトは、マラリア対策の取り組みに重点を置き、アフリカの生活の質を向上させるために設計されたプログラムの研究にコンピュータの能力を投入します。
  • Proteins@home、Predictor@home、Rosetta@home、Folding@home: これらのプロジェクトはそれぞれ、さまざまな方法でタンパク質を研究しています。
  • Einstein@home、Cosmology@home、Milkyway@home、Orbit@home: これらのプロジェクトは天文データを研究します。

他のプロジェクトでは、流体力学の物理学から模擬ナノテクノロジー環境に至るまで、あらゆるものを研究しています。

分散コンピューティング システムは非常に便利ですが、何か危険があるのでしょうか?怖くないなら読み続けてください。

分散コンピューティングに関する懸念

システムが 1 つのコンピュータから別のコンピュータのリソースへのアクセスを許可するときは常に、安全性とプライバシーに関する疑問が生じます。プログラムの管理者が特定のユーザーのコンピュータを覗き見するのを阻止するものは何でしょうか?管理者が CPU パワーを利用できる場合、ファイルや機密データにもアクセスできるでしょうか?

この質問に対する簡単な答えは、参加しているコンピュータがシステムの一部となるためにインストールする必要があるソフトウェアに依存するということです。共有コンピューティング システムが個々のコンピュータで実行できることはすべて、そのソフトウェア アプリケーションに依存します。ほとんどの場合、このソフトウェアではホスト コンピューター上のコンテンツに直接アクセスすることはできません。すべてが自動化されており、アクセスできるのは CPU の処理能力のみです。

ただし例外もあります。ゾンビ コンピュータシステムまたはボットネットは、悪意のある共有コンピューティング システムの一例です。ハッカーが率いるゾンビ コンピュータ システムは、無実のコンピュータ所有者を犠牲者にします。まず、ハッカーがコンピュータにアクセスできるようになる前に、被害者は自分のコンピュータに特定のソフトウェアをインストールする必要があります。通常、このようなソフトウェア アプリケーションは無害なプログラムに見せかけられます。インストールされると、ハッカーは被害者のコンピュータにアクセスして、直接サービス拒否 (DDoS) 攻撃などの悪意のあるタスクを実行したり、大量のスパムを送信したりすることができます。ボットネットは数百、数千のコンピュータにまたがる可能性があり、被害者は何が起こっているかを認識することはありません。

分散コンピューティング システムでは、特定のコンピューターがオフラインになったり、長期間使用できなくなったりした場合に備えた計画を立てる必要もあります。ほとんどのシステムには、各タスクに時間制限を設ける手順が導入されています。参加者のコンピュータが一定の時間内にタスクを完了しない場合、コントロール サーバーはそのコンピュータのタスクをキャンセルし、そのタスクを新しいコンピュータに割り当てます。

共有コンピューティングに対する批判の 1 つは、アイドル状態のプロセッサを活用する一方で、消費電力と発熱量が増加するということです。コンピュータがより多くの処理能力を使用すると、より多くの電力が必要になります。共有コンピューティング システム管理者の中には、システムがリソースに常にアクセスできるようにするために、参加者にコンピューターを常にオンにしたままにするよう勧めている人もいます。共有コンピューティング システムの取り組みは、エネルギー節約を重視する環境に優しい取り組みと衝突することがあります。

おそらく、分散コンピューティング システムに対する最大の批判は、分散コンピューティング システムが十分に包括的ではないということです。処理能力リソースをプールしますが、ストレージなどの他のリソースは利用しません。そのため、多くの組織は、より多くのリソースを活用し、より多様なアプリケーションがネットワークを利用できるようにするグリッド コンピューティング システムの実装を検討しています。

グリッドと共有

分散コンピューティング システムは、制限されたグリッド コンピューティング システムの一種です。分散コンピューティング システムは、特定のタスク用のデータの塊をコンピュータのネットワーク全体に分散し、未使用の CPU パワーを活用します。グリッド コンピューティング システムでは、ネットワーク コンピュータが処理能力、メモリ、ストレージ スペースなどの複数のリソースを共有します。共有コンピューティング システムには通常、特定の目標があります。その目標が達成されれば、システムは必要ありません。将来のグリッド コンピューティング システムは組織指向になるでしょう。つまり、システムは組織や企業の一般的な資産として使用され、特定の 1 つの目標に特化したものではなくなります。