2010-12-15 10 views
2

大量のファイル(1ファイルにつき平均2MBの数千の異なるファイル)を同時に処理する必要があります。多くのファイルを同時に処理する - NFS経由でファイルをコピーするか、またはNFS経由で読み取りますか?

すべての情報は1つの(1.5TB)ネットワークハードドライブに保存され、約30種類のマシンで処理されます。効率を上げるために、各マシンは異なるファイルを読み込み(処理する)必要があります(何千ものファイルが処理される必要があります)。

すべてのマシンは、1.5TBハードドライブの 'incoming'フォルダからファイルを読み込んだ後、情報を処理し、処理された情報を 'processed'フォルダに出力します。 1.5TBドライブ。すべてのファイルの処理情報は、入力ファイルとほぼ同じ平均サイズです(ファイルあたり約2MB)。

(1)全ての加工機用M、そのローカルハードドライブにMによって処理され、その後、&プロセス読まれるすべてのファイルをコピーします。行うには良いことですが何

マシン上のローカルファイルM

(2)ファイルをすべてのマシンにコピーするのではなく、すべてのマシンが 'incoming'フォルダに直接(NFSを使用して)アクセスし、そこからファイルを読み取り、ローカルで処理します。

どのアイデアが優れていますか?そのようなことをしているときに、「do」と「donts」はありますか?

30台のマシンを持っているので、同じネットワークドライブに情報を同時に読み込むのは問題ですか?

(注:既存のファイルは追加/書き込みされず、新しいファイルは最初から作成されるため、同じファイルへの複数のアクセスの問題はありません...)。私が期待すべきボトルネックはありますか?

(Iは、Linux、Ubuntuのすべてのマシン上の10.04 LTSそれならばすべての事項を使用しています)

答えて

2

私は間違いなく#2を行うだろう - と、次のように私はそれを行うだろう:

ランApacheのメインサーバー上のすべてのファイルと一緒に。 (または、本当に必要な場合は、他のHTTPサーバー。このようにする理由はいくつかあります。

  1. HTTPは基本的に純粋なTCPです(いくつかのヘッダーがあります)。リクエストが送信されると、これは非常に「一方向の」プロトコルです。オーバーヘッドが少なく、冗談ではありません。高性能と効率性 - 低オーバーヘッド。

  2. もしあなたが(何かの理由で)あなたが移動するか、または拡大する必要があると決めたら(例えば、couldサービスを使用して)、HTTPはNFSよりもオープンインターネット上でデータを移動する方がはるかに良い方法でしょう。 SSLを使用することができます(必要な場合)。ファイアウォールを通過することができます(必要な場合)。 etc..etc..etc ...

  3. は、ファイルのアクセスパターンに応じて、および全体ファイルを読み込むことが必要であると仮定すると - とプル - それは簡単に/速くただ一つのネットワーク操作を行うことですあなたがファイルの小さな部分を読むたびにネットワーク上でI/Oを絶えず要求するのではなく、ファイル全体を1回にまとめることができます。

  4. ネットワークマウントの特定のファイルパスなどの存在に依存しない、このすべてを行うアプリケーションを配布して実行するのは簡単です。ファイルのURLがある場合、クライアントはそれは仕事です。マウント、ハード・ディレクトリを設定する必要はありません。また、そのようなマウントを設定するにはrootになる必要はありません。

  5. NFS接続の問題がある場合、マウントにアクセスしようとするとシステム全体が動揺してハングアップすることがあります。ユーザスペースコンテキストでHTTPを実行すると、タイムアウトエラーが発生し、アプリケーションは任意のアクション(ページのログエラーなど)を取ることができます。

+0

ありがとうBrad。 – user3262424

関連する問題