當前位置:編程學習大全網 - 源碼下載 - hadoop 為什麽會超租約異常

hadoop 為什麽會超租約異常

字面理解為文件操作超租期,實際上就是data stream操作過程中文件被刪掉了。之前也遇到過,通常是因為Mapred多個task操作同壹個文件,壹個task完成後刪掉文件導致。

不過這次在hdfs上傳文件時發生了這個異常,導致上傳失敗。google了壹把,有人反饋跟dfs.datanode.max.xcievers參數到達上限有關。這個是datanode處理請求的任務

上限,默認為256,集群上面配置為2048.於是去所有datanode上面掃了壹下log,發現果然出現了IOE:

java.io.IOException: xceiverCount 2049 exceeds the limit of concurrent xcievers 2048

翻源碼找了壹下xcievers,有DataXcievers和DataXcieversServer兩個類,DataXcievers是DataXcieversServer啟動的壹個線程,用於處理輸入輸出數據流,其run()

方法有如下判斷:

1 public void run() { 2 ... 56 int curXceiverCount = datanode.getXceiverCount(); 57 if (curXceiverCount > dataXceiverServer.maxXceiverCount) { 58 throw new IOException("xceiverCount " + curXceiverCount 59 + " exceeds the limit of concurrent xcievers " 60 + dataXceiverServer.maxXceiverCount); 61 }

xcievers超過限制拋了壹個IOException,這反應到DFSClient端,就是正在操作的文件失去了響應,於是就出現了上面的租約超期異常。

解決方案:

繼續改大 xceiverCount 至8192並重啟集群生效。

  • 上一篇:請問壹個嵌入式系統的PCB板的開發步驟
  • 下一篇:魔獸爭霸3冰封王座 哪個地圖是帶能騎火鳳凰 龍的 打怪掉的 還有很多種
  • copyright 2024編程學習大全網