2

apache hadoop と同様の分散並列計算を可能にするために利用できる perl モジュールがあるかどうかを知りたいです。

例: クライアント ノードに送信されたときに多くのマシンで並列に実行される perl スクリプト。

4

4 に答える 4

4

私は、Perl 用のメニーコア エンジンの作成者です。

次の数週末に、Gearman::XSを使ってMCEを試してみます。MCE は、特定のノードで使用可能なコアを最大化するのに適しています。Gearman はジョブの分散が得意で、ロード バランシングなどの多くの機能が含まれています。2 つを組み合わせることが、MCE を多くのノードにわたって水平にスケーリングするための私の考えでした。:) 私は今までこのニュースを誰とも共有していませんでした.

2 つのモジュールが適している理由 (私の謙虚な意見):

  1. 配布には、ある種のチャンキング エンジンが必要です。MCE はチャンキング エンジンです。そのため、入力を分割することは MCE にとって自然なことです。基本的に、MCE は、利用可能なコアを最大化するために、ジョブ送信ホストとワーカー ノードの両方で使用できます。

  2. ワーカー ノードの場合、MCE は入力データの処理時にバンク キューイング モデルに従います。これにより、すべての CPU がジョブの開始から最後までビジー状態を維持できます。ワーカーがアイドル状態になると、残りの「作業中」は最後のチャンクを処理しています。

ここでは想像力が限界です。これら 2 つのモジュールが連携して動作することには、非常に多くの可能性があります。MCE を書くときは、まずノード側に注目しました。次は明らかにジョブディストリビューションで、検索したところ Gearman::XS にたどり着きました。2 つのモジュールは一緒に楽しくチャンクできます:) ジョブ分散側 (より大きなチャンク)、ノード上で一度 (より小さなチャンク)。すべてのネットワーキングは Gearman によって処理されます。

基本的に、Gearman::XS がすでに非常に優れている場合、ジョブ配布の側面を書く必要はありません。これが私の計画です。Gearman::XS + MCE については近々書きます。

ところで: 人々は GRID-Machine + MCE で同様のことができると思います。MCE の優れた点は、任意のノードで使用可能なすべてのコアを最大化することです。

MCE のもう 1 つの不思議な点は、たとえば 200 ノード * 16 ワーカーすべてが NFS サーバーとの間で読み取り/書き込みを行う必要がないことです。これは、NFS サーバーに大きな影響を与えます。ところで: RHEL 6.4 には pNFS (パラレル NFS) が含まれます。MCE を使用すると、ワーカーは "do" メソッドを呼び出して、NFS からの書き込み/読み取りをシリアル化できます。したがって、NFS を攻撃する 200 * 16 = 3200 の代わりに、NFS サーバーに対する任意の時点での最大要求数は 200 になります (物理ノードごとに 1 つ)。

MCE を作成する場合、多くのシナリオに猶予を適用できます。MCE のホームページMCE (code.google.com)に wiki を追加する必要があります。さらに、MCE は非常に大きなログ ファイルを朝食用に食べます :)サンプルディレクトリの下にある egrep.pl と wc.pl を確認してください。シーケンシャル IO (多数のワーカー間で強力なスラープ IO) を使用するワイド ファインダー プロジェクトよりも優れています。

MCE ディストリビューションに含まれているイメージを確認してください。ああ、 Gearmanのメイン サイトもチェックすることを忘れないでください。

この後何が残る?うーん、ウェブピース。頭に浮かぶアイデアの 1 つは、Mojoを使用することです。多くのオプションがあります。これは1つだけです:

Gearman::XS + MCE + モジョリシャス

繰り返しますが、SSH 経由で通信したい場合は、Gearman::XS の代わりに GRID-Machine を使用できます。

とにかく、それはすでに利用可能なジョブ分散モジュールを使用するという私の計画でした. MCE では、チャンク、シリアル化、バンク キューイング モデル、ユーザー タスク (多くのロールを許可)、ワーカー間の番号順序付け、シーケンシャル スラープ IO など、単一ノードでのパフォーマンスを最大化することに重点を置きました。

-- マリオ

于 2013-02-27T04:59:35.633 に答える
1

ZeroMQのようなメッセージ キューのような単純なものを検討することもできます。CPAN検索が他の提案に役立つと確信しています。

最近、メニー コア エンジンのMCEモジュールについての話がありました。これについて調べてみてください。ホスト コンピューターから並列化できるかどうかはわかりませんが、大きな一歩にはならないようです。述べられた目的を考えると。

于 2013-02-15T14:26:04.000 に答える
0

CPANのGRIDモジュールは、分散コンピューティングで動作するように設計されています。

https://metacpan.org/pod/distribution/GRID-Machine/lib/GRID/Machine/perlparintro.pod

于 2013-06-10T17:10:09.600 に答える
0

アルゴンはあなたが探しているものを提供するかもしれません (免責事項 - 私は著者です)。それぞれがプロセス プールを実行する任意のワーカー ネットワークを設定できます ( Coro::ProcessPoolを使用)。

タスクの作成は非常に簡単です。

use Argon::Client;

my $client = Argon::Client->new(host => "somehost", port => 8000);
my $result = $client->queue(sub {
    use My::Work::Module qw(do_work);
    my $task_id = shift;
    do_work($task_id);
});
于 2014-02-28T16:30:42.020 に答える