hadoop錯誤java.io.IOException Failed to replace a bad datanode on the existing pipeline due to no more

錯誤:java

    java.io.IOException: Failed to replace a bad datanode on the existing pipeline due to no more good datanodes being available to trynode

緣由:url

    沒法寫入;個人環境中有3個datanode,備份數量設置的是3。在寫操做時,它會在pipeline中寫3個機器。默認replace-datanode-on-failure.policy是DEFAULT,若是系統中的datanode大於等於3,它會找另一個datanode來拷貝。目前機器只有3臺,所以只要一臺datanode出問題,就一直沒法寫入成功。code

解決辦法:xml

    修改hdfs-site.xml文件,添加或者修改以下兩項:blog

    <property>ip

        <name>dfs.client.block.write.replace-datanode-on-failure.enable</name>         <value>true</value>get

    </property>博客

   

    <property>it

    <name>dfs.client.block.write.replace-datanode-on-failure.policy</name>

        <value>NEVER</value>

    </property>

    對於dfs.client.block.write.replace-datanode-on-failure.enable,客戶端在寫失敗的時候,是否使用更換策略,默認是true沒有問題

    對於,dfs.client.block.write.replace-datanode-on-failure.policy,default在3個或以上備份的時候,是會嘗試更換結點嘗試寫入datanode。而在兩個備份的時候,不更換datanode,直接開始寫。對於3個datanode的集羣,只要一個節點沒響應寫入就會出問題,因此能夠關掉。

 

若是,您認爲閱讀這篇博客讓您有些收穫,不妨點擊一下右下角的【推薦】。
若是,您但願更容易地發現個人新博客,不妨點擊一下左下角的【關注我】。
若是,您對個人博客所講述的內容有興趣,請繼續關注個人後續博客,我是【劉超★ljc】。

本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。

相關文章
相關標籤/搜索