3

データをHDFSに入れる簡単なプログラムを書きました。Configurationオブジェクトを介してdfs.replicationを3に設定し、疑似分散hdfsクラスターに対してこのプログラムを実行します。レプリケーション係数が3で、データノードが1つしかないため、例外が発生することが予想されました。しかし、プログラムは正常に実行を終了しました。

データが複製不足の状態にあることを理解する方法ですか?これはdfs.replication.minに関連していると思いますが、(プログラム構成オブジェクトで)3に変更しても、書き込みは引き続き成功し、例外は発生しませんでした。

4

2 に答える 2

4

いくつかのテストを終了し、その理由を突き止めました。

最初に、ファイルを作成するとき、その複製係数は dfs.replication.min 以上である必要があります。HDFS では、dfs.replication.min ノードまでのレプリケーションが同期され、残りのノード (dfs.replication - dfs.replication.min) へのレプリケーションが非同期で処理されます。

dfs.replication.min のデフォルト設定は 1 であるため、dfs.replication = 3 のファイルを 1 つのノードの hdfs クラスターに正常に書き込みました。

デフォルトのレプリケーション係数 (dfs.replication) は 3 に設定されていますが、構成オブジェクトを介して要求ごとに変更できます。悲しいことに、リクエストごとに dfs.replication.min を変更することはできないため、下位層に設定した場合、信頼性を向上させることはできません。

于 2012-09-18T14:47:43.730 に答える
2

同期 hdfs レプリケーションを強制する場合は、このコマンドを使用します。hadoop -setrep [-R] [-w] : ファイルのレプリケーション レベルを設定します。 -R フラグは、ツリー全体のレプリケーション レベルの再帰的な変更を要求します。

于 2012-10-19T16:41:28.927 に答える