インデックスを作成する必要がある膨大な量のデータがあり、その作業を完了するのに 10 時間以上かかりました。Hadoopでこれを行う方法はありますか? 誰もこれを以前にやったことがありますか?どうもありがとう!
3 に答える
10時間がどこにかかるか説明していませんか?データの抽出に時間がかかりますか? または、データをインデックス化するだけで済みますか。
抽出に時間がかかる場合は、hadoop を使用できます。Solr には一括挿入という機能があります。したがって、マップ関数では、数千のレコードを蓄積し、多数のレコードの solr へのワンショットでインデックスをコミットできます。これにより、パフォーマンスが大幅に最適化されます。
また、あなたのデータはどのくらいのサイズですか?
map/reduce ジョブの reduce 関数で大量のレコードを収集できます。多数のレコードが単一の reduce 関数に送られるように、マップで適切なキーを生成する必要があります。カスタム縮小クラスで、hadoop のバージョンに応じて、setup/configure メソッドで solr オブジェクトを初期化し、クリーンアップ メソッドで閉じます。(solrNet または solrj で) ドキュメント コレクション オブジェクトを作成し、それらすべてを 1 つにコミットする必要があります。シングルショット。
Hadoop を使用している場合は、kattaという別のオプションがあります。見渡すこともできます。
各レデューサーに新しいインデックスを作成する SOLR hadoop 出力形式があります。したがって、必要なインデックスに従ってキーを配布し、事後に hdfs ファイルを SOLR インスタンスにコピーします。
http://www.datasalt.com/2011/10/front-end-view-generation-with-hadoop/
各レコードを取得し、インデックス作成のために http 経由で solr に送信するだけの、hadoop クラスターを介した map reduce ジョブを作成できます。Afaik solr は現在、マシンのクラスターに対するインデックス作成を行っていないため、インデックスを複数のノードにも分散させたい場合は、エラスティック サーチを検討する価値があります。