錯誤原因:
執行追加的文件中有3個datanode,備份數量設置的是3。在寫操作時,它會在pipeline中寫3個機器。默認replace-datanode-on-failure.policy是DEFAULT,如果系統中的datanode大於等於3,它會找另外一個datanode來拷貝。目前機器只有3台,因此只要一台datanode出問題,就一直無法寫入成功。
解決方法:
我正要執行追加的文件備份數為3,可是我在hdfs中設置的備份數為1,所以找不到另外的需要備份的DataNode,在java代碼中加入備份數量限制即可,即使用Configuration conf = new Configuration();conf.set("dfs.replication","1");