1

500 万レコード (A) と 40k レコード (B) を照合するスクリプトがあります。一致する場合、電子メールは非同期的にキューに配置されます。

A の特定の属性が B と一致する場合、一致が発生します。現在、このスクリプトの完了には約 1 日かかります。

この時間を、hadoop を使用して 3 ~ 4 時間に短縮したいと考えています。

A をファイルに保存すると、このファイルが Mapper に入力されると思います。レジューサをなくすことができます。

ディスク読み取りが最小限またはまったくない場合、B のストレージ戦略はどのようにする必要がありますか? どこに保管すればよいかなど。memcache、hdfs など。Memcache は、実行時のディスク アクセスを排除するため、適切なオプションのようです。しかし、提案は大歓迎です。

私はhadoopが初めてです。したがって、このシナリオで推奨されるアプローチは何ですか。

4

1 に答える 1

3

適切な答えを出すことができるかどうかわかりません...
あなたのBファイルは、それらすべてをマッパーのメモリに入れるのに十分小さいですか?
その場合、Hadoopには分散キャッシュと呼ばれるメカニズムがあります。これにより、クラスター内のすべてのノードにファイルを配布できます。あなたの場合、Bをキャッシュファイルにし、configure()を介してメモリにロードし、マッパーで使用できます。

DistributedCache.addCacheFile(/*B's path*/); //in run()

于 2012-05-13T06:10:08.400 に答える