3

インデックスを作成する必要がある膨大な量のデータがあり、その作業を完了するのに 10 時間以上かかりました。Hadoopでこれを行う方法はありますか? 誰もこれを以前にやったことがありますか?どうもありがとう!

4

3 に答える 3

3

10時間がどこにかかるか説明していませんか?データの抽出に時間がかかりますか? または、データをインデックス化するだけで済みますか。

抽出に時間がかかる場合は、hadoop を使用できます。Solr には一括挿入という機能があります。したがって、マップ関数では、数千のレコードを蓄積し、多数のレコードの solr へのワンショットでインデックスをコミットできます。これにより、パフォーマンスが大幅に最適化されます。

また、あなたのデータはどのくらいのサイズですか?

map/reduce ジョブの reduce 関数で大量のレコードを収集できます。多数のレコードが単一の reduce 関数に送られるように、マップで適切なキーを生成する必要があります。カスタム縮小クラスで、hadoop のバージョンに応じて、setup/configure メソッドで solr オブジェクトを初期化し、クリーンアップ メソッドで閉じます。(solrNet または solrj で) ドキュメント コレクション オブジェクトを作成し、それらすべてを 1 つにコミットする必要があります。シングルショット。

Hadoop を使用している場合は、kattaという別のオプションがあります。見渡すこともできます。

于 2012-07-24T16:46:47.377 に答える
0

各レデューサーに新しいインデックスを作成する SOLR hadoop 出力形式があります。したがって、必要なインデックスに従ってキーを配布し、事後に hdfs ファイルを SOLR インスタンスにコピーします。

http://www.datasalt.com/2011/10/front-end-view-generation-with-hadoop/

于 2013-03-05T15:54:40.157 に答える
0

各レコードを取得し、インデックス作成のために http 経由で solr に送信するだけの、hadoop クラスターを介した map reduce ジョブを作成できます。Afaik solr は現在、マシンのクラスターに対するインデックス作成を行っていないため、インデックスを複数のノードにも分散させたい場合は、エラスティック サーチを検討する価値があります。

于 2012-07-24T04:50:48.173 に答える