0

すべての結果を前処理して、検索エンジンのパフォーマンスを最適化しようとしています。約 50,000 件の検索語があります。これらの 50,000 語を事前に検索し、メモリ (memcached/redis) に保存する予定です。私の場合、深いセマンティック検索を行うため、50,000 語すべてを検索するには 1 日以上かかります。そのため、検索 (前処理) を複数のノードに分散することを計画しています。Hadoopの使用を検討していました。私の入力サイズは非常に小さいです。総検索語数が 50k を超えているにもかかわらず、おそらく 1MB 未満です。しかし、各用語の検索には 1 分以上かかります。つまり、データ指向よりも計算指向です。そのため、Hadoop を使用するか、独自の分散システムを構築するかを考えています。Hadoop は主に入力が非常に大きい場合に使用されると読んだことを覚えています。これについてどうすればよいか教えてください。

そして、hadoop がデータをブロックサイズで読み取ることを読みました。つまり、jvm/mapper ごとに 64MB です。ブロックサイズではなく行数にすることは可能ですか?例: すべてのマッパーは 64MB ではなく 1000 行を取得します。これを達成することは可能ですか?

4

1 に答える 1

2

Hadoop は間違いなくこのタスクを処理できます。はい、Hadoop の多くは、非常に大きな入力データまたは出力データを扱うジョブを処理するように設計されていますが、それだけが目的ではありません。ほぼすべてのタイプの分散バッチ処理に適しています。NLineInputFormatを見てみましょう。これにより、正確に必要な行数に基づいて入力を分割できます。

于 2013-01-17T19:21:01.193 に答える