0

HDFS(cloudera 2.0.0-cdh4.2.0)にファイルを追加しているときに、エラーが発生しました。エラーの原因となるユースケースは次のとおりです。

  • ファイルシステム(DistributedFileSystem)にファイルを作成します。わかった
  • 以前に作成したファイルを追加します。エラー

    OutputStream stream = FileSystem.append(filePath); stream.write(fileContents);

    次に、エラーがスローされます。

Exception in thread "main" java.io.IOException: Failed to add a datanode.
User may turn off this feature by setting dfs.client.block.write.replace-datanode-on- failure.policy in configuration, where the current policy is DEFAULT. (Nodes: current=[host1:50010, host2:50010], original=[host1:50010, host2:50010]) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.findNewDatanode(DFSOutputStream.java:792) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.addDatanode2ExistingPipeline(DFSOutputStream.java:852) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.setupPipelineForAppendOrRecovery(DFSOutputStream.java:958) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:469)

いくつかの関連するhdfs構成:

dfs.replication2に設定

dfs.client.block.write.replace-datanode-on-failure.policytrue dfs.client.block.write.replace-datanode-on-failureに設定し、DEFAULTに設定します

何か案は?ありがとう!

4

1 に答える 1

1

ファイルシステムで実行することで問題が解決しました

hadoop dfs -setrep -R -w 2 /

ファイル システムの古いファイルのレプリケーション ファクターは 3 に設定dfs.replicationされていました。2 に設定しhdfs-site.xmlても問題は解決しません。この構成は既存のファイルには適用されないためです。

したがって、クラスターからマシンを削除する場合は、ファイルとシステムのレプリケーション ファクターを確認することをお勧めします

于 2013-03-11T21:17:30.613 に答える