1

Hadoop の問題についてサポートが必要です。
私の Java システムには、n 個のレコードを作成する関数があります。各レコードは明らかに、Hadoop のテキスト ファイルに書き込む行です。

問題は、 n 個のレコードすべてを同じ Hadoop ノード
に保存するにはどうすればよいかということです。言い換えれば、n 個のレコードが一意のレコードのように見えるようにして、これらのレコードの 1 つ (またはそのレプリカの 1 つ) がノード上にある場合、もちろん他のn-1 個のレコードもオンになるようにします。同じノード。

たとえば、関数が次のものを作成するとします。

record1: 5     los angeles    rainy
record2: 8     new york       sunny
record3: 2     boston         rainy

この 3 つのレコード (3 行) を Hadoop のテキスト ファイルに追加すると、record1 が node1 に、record2 が node2 に、record3 が node3 に移動する可能性があります。3 つのレコードすべてが node2 などの同じノードに格納され、異なるノードに格納されていないことを確認する方法があるかどうかを知りたいです。

ご清聴ありがとうございました。

4

2 に答える 2

0

Hadoop は、デフォルトの HashPartitioner に基づいてタプルを分割し、同じキーを持つタプルを集約のために単一のレデューサーに送信します。デフォルトの HashPartitioner が要件に合わない場合は、カスタム パーティショナーを作成できます。トランク内の HashPartitioner のコードは次のとおりです

別の方法は、パーティション戦略に従ってマッパーからキーを発行することです。HashPartitioner は、同じキーを持つすべてのタプルをリデューサーの 1 つに送信します。

また、ノード レベルではなく、Map および Reduce レベルの抽象化で考えてください。Hadoop は、クラスターのネットワーク トポロジを隠そうとします。

于 2013-10-14T16:52:31.200 に答える
0

並列処理を 1 に設定します。つまり、レデューサーの数を 1 つに指定することです。次に、すべてのレコードが 1 つのパーツ ファイルに書き込まれます。ただし、欠点は、ジョブが完了するまでに非常に長い時間がかかることです。

于 2014-01-08T15:57:50.557 に答える