MapReduce設置參數防止超時


1. 如果碰到異常“Task attempt failed to report status for xxx seconds. Killing!”,最可能是碰到死循環了。

2. 如果沒有死循環:控制超時的屬性是:mapred.task.timeout,默認600000ms,即600s。可以設置成更大的值。可以直接在Jobconf或Configuration中修改(只對本Job起作用),也可以修改mapred-site.xml(對所有Job起作用)。

3. 如果沒有死循環,但task執行時間長又不好確定,可以在Reducer或Mapper中主動發送心跳,但需控制發送心跳的頻率:

    long heartBeatInterval = 100000L;            //主動發心跳的間隔,100s,默認600s超時
    long lastProgressTS = 0;                     //上一次發心跳的時間點
        
    //主動發心跳
    if (System.currentTimeMillis() - lastProgressTS > heartBeatInterval) {
        context.progress();
        lastProgressTS = System.currentTimeMillis();
    }

4. 再次,如果對自己的程序有信心不會出現死循環,可以采用更簡單的辦法:

conf.set("mapred.task.timeout", "0");                        //不檢查超時

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM