原文地址:http://dongyajun.iteye.com/blog/1039836
新的項目上線之後發現,有些會員上傳資源到我們集羣的速度,既然跟我們集羣的吞吐量差不多,達到了70M+/s的速度。 在向集羣put數據時,拋出了異常:
org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /xxx/xxx/xx could only be replicated to 0 nodes, instead of 1
org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /xxx/xxx/xx could only be replicated to 0 nodes, instead of 1
這樣的信息告訴我,集羣內部無可用的節點了,因爲是在put階段出現的,直覺告訴我,所有的節點是不是都已經寫滿數據了? 節點少的情況比較容易觀察Hadoop的一些問題,查看dfshealth.jsp頁面發現,至少有三臺節點可寫,但dfsClient put數據仍然拋出無節點可用的異常。
追究源碼,NameNode身邊的 ReplicationTargetChooser#isGoodTarget方法給出了說明: