Piクラスターの長所と短所は?


33

Raspberry Pisで「スーパーコンピューター」またはクラスターを構築する方法を尋ねる多くの投稿を見てきましたが、実際にPiのネットワークを作成することの長所と短所はほとんど見つかりませんでした。独自の小さなクラスターを構築することに興味がありますが、いくつか質問があります。

クラスター化したら、RPIは単一の仮想コンピューターとして機能しますか、それともすべてのRPIを個別に制御できますか?1つのノードが他のノードを制御していますか?

クラスタで制限されているRPIでできることはありますか?たとえば、個々のGPIOポートをすべて制御できますか?

piはどれくらい速くなりますか?それぞれが1 GHzにオーバークロックされる2ノードのクラスターを作成するとしましょう。本質的に「デュアルコア1 GHz」プロセッサーを使用できますか?クラスターは2進数の倍数である必要がありますか?(例:1,2,4,8,16,32,64)

これにより、NGINX for piを介して実行するWebホスティングが複雑になりますか?特定のノードの処理能力には、それらが処理する特定のタスクを割り当てることができますか?ノード1などがWebサービスリクエストを処理し、ノード2がクラウドストレージなどを処理します。

回答:


49

いくつかの興味深い質問。Raspberry Pisで構築された「スーパーコンピューター」がどのように機能するか、少し誤解されていると思います。自動負荷分散システムとして機能しません。それらは、並列プログラミングと呼ばれるもののために設計されており、そこでは複雑なタスクが同時に実行できる部分に分割されます。クラスター内のメインPi(ヘッドノード)はタスク全体の整理を担当し、クラスター内の各Pi(クライアントノード)は割り当てられた作業を実行し、ヘッドノードに結果を報告します。そのためには、OpenMPIなどのライブラリが重要です。

さらに、構築されたRaspberry Piクラスターは、効率的なコンピューティングデバイスとして構築されていません。それらは開発プラットフォームとして構築されています。32台のデスクトップPCより32台のRaspberry Piを購入する方が大幅に安価です。並列プログラミングソフトウェアは、その方法ではるかに安価に開発およびテストできます。PiまたはPCがない場合の唯一の選択肢は、実際のスーパーコンピューターでCPU時間を要求することです。問題のコンピューターのサイズに応じて、リソースを使用できるようになるまでに費用がかかるか、待機時間が長くなる可能性があります。したがって、なぜ人々は独自の個人クラスターを構築したのでしょう。実際に動作することがわかっている場合にのみ、実際のコンピューターでアプリケーションを実行するのが理にかなっています。

したがって、これを念頭に置いて、特定の質問に進んでください。

適切なクラスターでは、Pisは単一の仮想コンピューターとして機能しません。Sun Grid Engineのようなタスクまたはリソース割り当てシステムの形式で、各Piを緩やかに制御できます。タスクは必要に応じてノードに割り当てられ、タスクが完了すると、そのノードのリソースは新しいタスクのために解放されます。

クラスターでは、各Piは独自のLinuxのコピーを実行しているため、各PiはGPIOポートのローカル制御を保持します。並列コンピューティング環境でソフトウェアがそれを実際にどのように使用するのかわかりませんが、あなたはそこにいます。

クラスタは単一のコンピュータではないため、実際にPiを高速化することはありません。あなたが得るものは、単により多くを一度に行う能力です。2の倍数に制限されません。ただし、実行するタスクに応じて、クラスター化されたコンピューターには実際に実用的な上限があります。200ステップを必要とする多くのPiで並列計算を実行していると想像してください。ただし、次の各ステップでは、すべてのPiが前のステップで計算した情報が必要です。したがって、各Piは、各反復ごとに他のすべてのPiからデータを受信する必要があります。各反復の計算にかかる時間に応じて、計算よりもデータの送信に多くの時間を費やすことになります。これが、ほとんどのスーパーコンピューターがInfiniBandを使用する理由ですネットワーク。非常に高速なので、より多くの計算を行うことができます。これに対する解決策は、使用するPiの数を減らして、各反復でより多くの作業を行わせることですが、アルゴリズムによっては不可能な場合があります。したがって、実用的な上限。(Pisでは、USBイーサネットが非常に遅いため、これは特に悪いでしょう。)

それでは、実用的なアプリケーションである、分散型Webホスティング!ここで複数のPiを利用できます。通常のクラスターではありません。5個の小便器があるとします。それらをGatewayPi、WebPi1、WebPi2、WebPi3、およびDataPiと呼びます。GatewayPiはインターネットに直面し、Nginixを実行してWeb要求を処理しますが、処理は行いません。代わりに、負荷分散が行われます。プロキシを使用し、着信リクエストをWebPi1、WebPi2、またはWebPi3にランダムに転送します。より多くのリクエストを同時に処理できるようになったため、ウェブインフラストラクチャの能力が3倍になりました。DataPiはどうですか?DataPiはすべてのWebデータを保存するハードドライブを接続し、NFSサーバーを実行しています。WebPiXはそのNFS共有をマウントするため、処理のためにデータにアクセスできます。この方法では、1つの場所でバックアップを実行するだけで、ディスクスペースを節約できます。

私が今説明したのは、本質的にGoogleやFacebookのような大企業が使用しているモデルですが、Raspberry Piのサイズに縮小されたモデルです。唯一の問題は、Pisのコストのため、これを行うことは、Pisのクラスターが並列プログラミングを行うのと同じ開発プラットフォーム(ただし、Webサービング用)を本質的に作成することです。複数のPiを使用すると、計算能力が比較的低いため、大量のデータを処理しようとすると、すぐにパフォーマンスが低下し、エネルギー消費が低下します。しかし、ただ学ぶために?彼らは完璧です。


したがって、2つのWebサイトを安価にWebホスティングし、GPIO、SSH、FTP、クラウドストレージ、ホームオートメーションを介して冷却ファンを制御するホームプロジェクトに取り組んでいる場合、タスクを正しく分散するために小さなクラスターを作成する価値がありますか?
SuperAdmin

4
+1この質問に興味を持ったのですが、少し教育を受けました。素晴らしい答え。
jrhorn424 14

@iOSNoob、あなたがそれを使用している唯一の人であり、一度にそれらのことのいずれか1つだけをしている場合、リソースは必要に応じて割り当てられるので、それでもクラスタの価値はありません。単純に十分なRAMがない場合、または1人以上の負荷がある場合は、おそらくそれだけの価値があります。セキュリティのためだけに、ファンやホームオートメーションなどを別のPiに配置しました。あなたは本当に誰かがあなたの家の物をいじり回すチャンスがゼロであることを望みます...もしあなたがそれらのシステムをもっと良くするために余分なPiを飛び越えなければならないなら。これはセキュリティの追加レイヤーです。
フレッド14

@ jrhorn424気に入ってくれてうれしい!私は最近、高性能(スーパー)コンピューティングイベントに参加したので、このようなことは私の心に新鮮でした。書き出すのに最適なタイミングです。
フレッド14

1
Fredが説明したほぼ正確なWebホスティングアーキテクチャの具体的な例については、pidramble.com(GitHubのコード/命令にリンクして、Piの任意のフレーバーで独自に構築できます)。
geerlingguy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.