9

レプリケーション ファクターを 3 から 1 に減らしましたが、過度にレプリケートされた HDFS ファイル ブロックを削除するために、ネームノードから、またはデータノード間でアクティビティが見られません。レプリケーション ジョブを監視または強制する方法はありますか?

4

4 に答える 4

21

変更dfs.replicationは、作成する新しいファイルにのみ適用されますが、既存のファイルのレプリケーション ファクターは変更されません。

既に存在するファイルのレプリケーション ファクターを変更するには、HDFS 内のすべてのファイルに対して再帰的に実行される次のコマンドを実行できます。

hadoop dfs -setrep -w 1 -R /
于 2013-07-23T02:50:27.993 に答える
5

デフォルトのレプリケーション係数を 3 から、たとえば Cloudera Manager から 2 に変更すると、

Cloudera Manager(CDH 5.0.2) -> HDFS -> Configuration -> View and Edit -> Service-Wide -> Replication -> Replication Factor (dfs.replication) -> 2

書き込まれた新しいデータのみが、ブロックごとに 2 つのレプリカを持ちます。

使ってください

hdfs dfs -setrep 2 /

すべての既存データのレプリケーション係数を変更する場合は、コマンド ライン (通常は HDFS ゲートウェイ ロールを持つノード) で。このコマンドは、ルート ディレクトリ / の下にあるすべてのファイルのレプリケーション ファクターを再帰的に変更します。

構文:

hdfs dfs -setrep [-R] [-w] <numReplicas> <path>

where 

-w flag requests that the command wait for the replication to complete and can take a very long time

-R flag is just for backwards compatibility and has no effect

参照:

http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.2.0-cdh5.0.0-beta-2/hadoop-project-dist/hadoop-common/FileSystemShell.html#setrep

于 2014-07-29T07:20:02.963 に答える
-8

おそらく、ファイル ブロックを削除するためのマップ関数を作成できます。

于 2013-07-23T01:21:37.520 に答える