アルゴリズムを理解するのに役立ちます。最初にアルゴリズムの説明を貼り付け、次に疑問を貼り付けました。
アルゴリズム:( レコードペア間のオーバーラップを計算するため)
ユーザー定義のパラメーター K が与えられると、ファイル DR( *Format: record_id, data*) は、ドキュメントのデータ Di が i/K 番目のチャンクに収まるように、ほぼ同じサイズの K 個のチャンクに分割されます。
マッパーによって発行されたキーをレデューサー インスタンスにマップする Hadoop のパーティショニング関数をオーバーライドしました。すべてのキー (i,j) は、j/K 番目のグループのレデューサーにマップされます。
特別なキー i,* とそれに関連付けられた値、つまりドキュメントのデータは最大 K 回複製されるため、すべてのレデューサーでドキュメントの完全なコンテンツを配信できます。したがって、グループ内の各レデューサーは、DR ファイルの 1 つのチャンクのみを回復してメモリにロードする必要があります。このチャンクのサイズは、K を変更することで任意に小さく設定できます。したがって、オーバーラップを計算できます。これは、MapReduce フレームワークを介して配信されるドキュメントを複製するという犠牲を払って実現されます。
疑問:
私はいくつかの仮定をしました:
ステートメント: すべてのキー (i,j) は、j/K 番目のグループのレデューサーにマップされます。仮定: K 個のリデュース ノードが存在し、キーは j/K 番目のリデュース ノードにマッピングされます。
疑問: 一部の削減ノードはグループ化されていますか? 0、1、2 ノードがグループ 0 としてグループ化されているとしますか?
ステートメント: ドキュメントのデータは最大で K 回複製されるため、すべてのレデューサーでドキュメントの完全なコンテンツを配信できます。
つまり、K は no に等しいということです。レデューサーノードの?そうでない場合は、計算ノードを使用せずに浪費していますよね?
主な疑問: K は Reducer Node の数と同じですか??
回答お待ちしております!
ありがとう!