2011-10-31 14 views
1

私はhadoopの異なるノードにカタログ化されたデータを保存したいと思います。map-reducede出力を別のノードに格納する方法は?

例:

Node - 1 >> Animal.txt 
Node - 2 >> Sports.txt 
Node - 3 >> Life.txt 
. 
. 
. 
Node - n >> nnnnn.txt 

はそれを行う方法はあります。

**私の説明が弱い場合は申し訳ありません。

+0

特定のノードにデータを格納する目的は何ですか。代替の解決策が考えられるかもしれません。 –

答えて

0

特定のノードにファイルを保存することにより、HDFSのポイントを奪うことになります。これには冗長コピーが含まれています。私はあなたがHDFSを使用しなければならないとは思わない。あなたは、ローカルファイルシステムに書き込む削減ジョブを作成するかもしれませんが、私はそれをお勧めしません。

0

基礎となるデータストレージ機能(HDFS)は、実際にデータが格納されている場所を完全に隠します。だからあなたのアプリケーションのためにこれを知っている "あなたはこれを知る必要はありません"。

一方、私はあなたがこれを制御したい理由が非常に不思議です。

1

保存されている物理ノードのIDを確実に選択することはできませんが、各サブセット(動物、スポーツ、人生)が同じノードに対してローカルになるようにデータを分割することができます。

各レコードをセット(動物、スポーツ、生活など)の一部として指定することができれば、Partitionerを実装することができます。これは、同じハッシュコードを持つすべてのキーが同じレデューサーによって削減されるハッシュ関数を実装するのと同じです。

[生の入力] - > [アイデンティティマッパー] - > [カスタムパーティショナ] - > [アイデンティティリデューサー]

他のユーザーが述べたように、HDFSは、デフォルトでは、他のノードへの出力データを複製します。したがって、データのローカリティを保証したい場合は、この場合にレプリケーションを無効にする必要があります。もちろん、これはフォールトトレランスを犠牲にしています。

関連する問題