クラスターを構築するにはどうすればよいですか?


63

-自宅でコンピュータのクラスタの構築について、過去数年にわたってオンライン漂っいくつかの記事がありました、ここで例えば。

Piは、低コストのため、この種のものを構築/テストするための優れたプラットフォームであると思います。このような「一般的な」ガイドをPiに簡単に転送する必要がありますか、またはそのようなプロジェクトを試みるときに特に注意する必要があるものはありますか?


3
関連フォーラムスレッド:raspberrypi.org/phpBB3/viewtopic.php
p

これがこれらの名前であるので、私はタグ「ブランブル」を追加しました。「まとめてhadoopなどを実行する」以外に適切な答えを出すことはできません-実際、私は自分で答えを見るために質問を気に入っています!
winwaed

他のPiユーザーも、「ブランブル」という魔法の言葉を知りません。財団のフォーラムを検索することは助けになったかもしれませんが、応答が遅いことが多いので、私はあなたに投票しません。
mlp

4
:SouthHamptonの大学は64パイクラスタ(または「スーパーコンピュータ」)を作成する手順作成していsouthampton.ac.uk/~sjc/raspberrypi/...
アレックス・L

回答:


35

Dispy(分散計算Pythonモジュール)をご覧になることをお勧めします。

PC(サーバー-IPはであると仮定)から多数のRaspberry Pi(ノード)でプログラムを実行するには192.168.0.100

  • 各RasPiにオペレーティングシステムをインストールする

  • 各RasPiをネットワークに接続します。IPを見つける(動的な場合)、または静的IPをセットアップします。
    (3つのノードがあり、それらのIPがであると仮定しましょう192.168.0.50-52

  • Pythonをセットアップし(まだインストールされていない場合)、インストールしてからdispydispynode.py -i 192.168.0.100各RasPiで実行します。これにより、dispynodeはサーバーからジョブ情報を受信するようになります。

  • PC(サーバー)にインストールしdispy、次のPythonコードを実行します。

#!/usr/bin/env python
import dispy
cluster = dispy.JobCluster('/some/program', nodes=['192.168.0.50', '192.168.0.51', '192.168.0.52'])

/some/programpython関数で置き換えることもできます-例えばcompute

pythonオブジェクト、モジュール、ファイル(dispy各ノードに転送されます)などの依存関係を追加することで含めることもできますdepends=[ClassA, moduleB, 'file1']


8
誰かがこれをやったかどうか聞いてみたい-それがうまくいくかどうかを知らせてコメントを残してください!
アレックスL

私の場合(openelec + python 2.7)、このエラーが発生しました。「File」./ Lib / multiprocessing / __ init__.py」、行84、<module>、ImportError:/usr/lib/python2.7/lib-dynload/ _multiprocessing.so:未定義のシンボル:SemLockType "。
グイド

しかし、dispy3-3.6はwheezy + python3で実行されます!2013-03-13 23:01:30,664-dispynode-192.168.1.34:51348で1 cpusを提供します。タスク(つまり/ bin / ls)を起動すると、ノードはタスクを受け取り、実行可能ファイルを/ tmpに移動しますが、「[[/ tmp / dispy / b7e04cb4a1e144e1 / ls ']の実行に失敗しました(<class' OSError 「>、OSErrorの(8、 'エグゼクティブフォーマットエラー')、<0x16f2580におけるトレースバックオブジェクト>)」
グイド

10

すでに行われた作業に注意する必要があります-RasPi boxenのクラスターの名前さえあります。組み込みLinuxのWikiは言うブランブルは「と定義されてベオウルフクラスタラズベリーパイデバイスの」。ラズベリーパイ自作は多くの持っているポスト について イバラの、そして 財団自身のフォーラムを。


14
誰かにグーグルに答えを伝えるのはこのサイトにとって良いとは思わない。名前を知っていると便利ですが、答えにコンテンツと参照リンクを追加することを検討してください。
ジョー

追加されたコンテンツとリンク、@ Joe。downvotersが今彼らの意見を再評価する場合、それはいいだろう
...-mlp

1
私が実際にあなたに投票した場合は...-
ジョー

あなたが持っていることをほのめかすことを避けるために、私は非常に慎重に言いました、ジョー。おそらく彼らは、反対のボタンをクリックするだけで元に戻すのではなく、同じボタンを再度クリックすることでここの投票を取り消すことができることに気付いていないでしょう。
mlp

10

サウサンプトンユニの一部の人は、クラスタをまとめて、http://www.southampton.ac.uk/~sjc/raspberrypi/で作業の詳細な概要を書いています



実際、MPIを使用してこのプロジェクトから学ぶことはたくさんあります。私はこれらの男の仕事に基づいて実験を構築しています。この回答に質問の正解をマークすることをお勧めします。
benqus

6

完全に可能ですが、最大の問題は到達可能性です。実行可能なと思うだけでなく、ポータブルな並列コンピューティングのアイデアに沿って進むことができるので便利です。具体的には、FORTRANやC ++などのコーディング言語が最適です。

クラスタコンピューティングの詳細については、beowulf.orgをご覧ください


1

これは、上記のGuido Garciaの「dispy」に関する投稿への返信です。彼の投稿に返信する方法がわかりません。

プログラム( '/ bin / ls')が並列実行のために 'dispy'で配布されると、クライアントマシン上のプログラムは各ノードに( '/ tmp'に)転送されます。これにより、クライアントマシンでユーザーが開発したプログラムは、NFSまたは共有ディレクトリを持たずに転送されます。これは、ノードとクライアントアーキテクチャに互換性がある場合にのみ、バイナリプログラムで機能します。あなたの場合、クライアントアーキテクチャはリモートノードのアーキテクチャとは異なり、ノードはクライアントから転送されたバイナリ「/ bin / ls」を実行できないと推測しています。各ノードで/ bin / lsを実行する場合、Python関数またはプログラムを作成してディレクトリを印刷し(たとえば、os.listdirを使用)、バイナリ実行可能ファイルの代わりに配布する方が簡単な場合があります。


他の人の回答/質問にコメントを残すには、50の評判が必要です。ようこそ!
衝動

1

フル機能のコントロールパネルが必要な場合は、http://pi.interworx.comもあります。このページには複製方法に関する指示がありますが、そのサブドメイン自体がRasberry Piクラスターから実行されているため、辛抱強く待つ必要があります。ダウンした場合の写真を次に示します。

http://www.facebook.com/photo.php?fbid=596262440393836&set=a.244167858936631.60071.170159826337435&type=1

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.