2012-04-28 15 views
4

すべて
ハイドロップクラスターでナッチがどのように動作するのか不思議です。どのようにしてジョブを他のノードに分割しますか?クラスタ内の異なるノードが同じURLを要求しないことをどのように保証しますか?
アドバイスありがとうございます。 NutchののNutchはHadoopクラスタでどのように動作しますか?

答えて

5

相は、次のとおりです。 注入する - >を生成 - >取得 - >パース - >アップデート - >インデックスこれらのうち

は、位相のNutchは、URLのリクエストを送信する(したがって、私の場所は意志で取得します

フェーズを生成すると、crawldb内のURLのフェッチリストが作成されます。 fetchlistの作成中に、同じホストに属するURLは通常、パーティション化機能がホスト名に基づいているため、同じパーティションに入ります。だから、フェッチ最終的なリストは、次のようになります。相をフェッチの単一マッパに割り当てられたことで/位相を取得

fetch list 1 : all urls of host a1, b1, c1 
fetch list 2 : all urls of host a2, b2, c2 
............. 
............. 

は、これらのfetchlistsを読み込み、各fetchlistが処理されます。相をフェッチ中マッパーがホストAのURLの束を取得した場合ので、

number of reducers in generate partition phase 
         = the number of fetchlists created 
         = number of maps in fetch phase 

は、他のマップは同じホストのURLを持ちません。 Offcourse、各マップは複数のホストのURLを持つことができますが、他のマッパーはそれらのホストからのURLを持たないでしょう。

は今フェッチのマッパーに深く掘り:

それはHN ...、と言うnはホストH1、H2のURLを持つことになります。次に、ホスト毎にフェッチキューが形成されます。すべてのURL(フェッチ項目)は、それぞれのホストのフェッチキューに格納されます。フェッチャスレッドはフェッチキューのポーリングを行い、そこからURLを取得して要求を送信し、結果をhdfsに書き戻します。これが行われた後、彼らは処理できる他のfetchitems(URL)を探します。

わかりやすい方法で混乱させることができると思います。詳細については、Fetcher.java作業のコードを参照してください。

注:IPに基づいてURLをグループ化することもできます。あなたはホスト名/ IPに基づいてURLをグループ化しないようにnutchに微調整できます。これらの両方は、yr構成に依存します。デフォルトでは、URLをグループ化するためにホスト名が使用されます。

関連する問題