2

分散して処理したい非常に大きな分割不可能なバイナリファイルが多数ある場合に、分散したいシステムがあります。これらは数百Gbのオーダーです。さまざまな固定された実装固有の理由により、これらのファイルは並行して処理することはできませんが、同じプロセスで最後まで順番に処理する必要があります。

このアプリケーションはC++で開発されているため、データを送受信するためのHadoopパイプを検討します。各インスタンスは、100Gbから200Gbのオーダーで、独自のデータ(現在は1つのファイルに保存されています)を順番に処理する必要があります。アプリケーションは現在(おそらく)IOに制限されているため、各ジョブを完全にローカルで実行することが重要です。

私はこのデータをホストするためにHDFSに非常に熱心です-冗長コピーを自動的に維持し、新しいノードが追加されたときにリバランスする機能は非常に便利です。また、計算が簡単で、データのできるだけ近くで計算をホストする必要があるため、mapreduceにも熱心です。ただし、この特定のアプリケーションにHadoopがどれほど適しているのか疑問に思っています。

データを表現するために、分割できないファイルを生成したり、代わりに巨大なシーケンスファイルを生成したりできることを知っています(私の場合、これらは単一のファイルに対して10Tbのオーダーになります-すべてのデータをにパックする必要があります1)。したがって、Hadoopを使用してデータを処理することが可能です。ただし、私のモデルはHadoopにあまり適合していないようです。コミュニティは同意しますか?または、このデータを最適にレイアウトするための提案がありますか?または、モデルにより適している可能性のある他のクラスターコンピューティングシステムの場合でも?

この質問は、Hadoopに関する既存の質問と重複している可能性がありますが、私のシステムでは、個々のファイルごとに1桁または2桁以上のデータが必要です(以前は、サイズが数Gbの個々のファイルについて尋ねられた質問を見ました) 。したがって、このサイズのデータ​​であっても、これが以前に回答されている場合はご容赦ください。

ありがとう、

アレックス

4

2 に答える 2

5

比較的少数の大きなファイルで作業しているようです。ファイルが巨大で分割できないため、Hadoop はクラスター全体でジョブを効果的にスケジュールおよび分散するのに問題があります。1 回のバッチで処理するファイルが多いほど (数百など)、Hadoop を使用する価値があると思います。

少数のファイルしか扱っていないので、ssh やGNU Parallelを使用して複数のマシンでプロセスを起動するなど、より単純な配布メカニズムを試しましたか? 単純なタスクにこのアプローチを使用して、多くの成功を収めました。すべてのノードで NFS マウント ドライブを使用すると、必要なコピーの量も制限されます。

于 2011-03-08T15:09:20.343 に答える
2

ファイルのカスタム InputSplit を作成できますが、bajafresh4life が言ったように、HDFS チャンク サイズがファイル サイズと同じでない限り、ファイルが全体に分散され、ネットワーク オーバーヘッドが発生するため、実際には理想的ではありません。または、HDFS サイズをファイル サイズと一致させると、クラスターのすべてのディスクの利点が得られません。結論として、Hadoop は最適なツールではない可能性があります。

于 2011-03-08T15:51:24.427 に答える