2

Mapジョブが(JobTrackerを介して)Mapジョブに供給される入力レコードのセットを生成する必要があります。

私は解決策を考えることができず、あなたの助けが必要です。

詳細:Webクローラーを作成する予定です。最初のルートレベルのWebページがmapreduceジョブに入力されます。マッパー/リデューサーはWebページをフェッチし、ページからリンクを収集します。これらのリンクは、mapreduceジョブへの入力として扱う必要があります。したがって、これらのリンクをジョブトラッカーにプッシュして、最初のルートノードで行われたのと同じように処理できるようにします。追加できる最終条件があります(たとえば、リンク正規表現のマッチング)。正規表現が一致する場合、マップ(または削減)タスクによってジョブトラッカーに戻されません。

4

1 に答える 1

0

マッパーが URL のリストを取得し、各 URL に対して多数のクローラーを実行するようにジョブを構成します。そのため、最初の送信は URL が 1 つだけのファイルになります。マッパーの出力は、ページで見つかったリンクのリストになります。レデューサーは、マッパーの出力を 1 つのファイルに結合するだけです。

これを実装すると、前のジョブの出力で次のジョブを開始できます。URL のリストが非常に短いため、最初の段階ではマッパーのみが実行されますが、最終的にはクラスター全体を利用できるようになります。最適な使用率を得るために、HDFS ブロック サイズを変更して実験することもできます。または、最初の十分に活用されていないものを、仕事が進むにつれてなくなるスタートアップ コストとして単純に扱うこともできます。さらに、AWS で実行している場合は、最初は非常に小さなクラスターから開始し、さらにマシンを購入してクラスターに参加させることができるため、良いことかもしれません。

この設定には落とし穴があります。既にアクセスしたリンクにはアクセスしないように注意する必要があります。URL のリストが小さい場合、これは非常に簡単かもしれませんが、インターネット全体をクロールしようとしている場合は、いくつかの巧妙なソリューションが適しています。

于 2013-02-26T19:30:50.187 に答える