Hadoop執行Job時因超時自動kill原因及解決方案
阿新 • • 發佈:2019-02-10
轉自:http://snv.iteye.com/blog/1879983
Hadoop執行Job時因超時自動kill,資訊如下:
Java程式碼- Task attempt_201305231045_3281_m_000003_0 failed to report status for 600 seconds. Killing!
原因:
1.執行MR的時間過長,超過了mapred.task.timeout 中設定的值
2.MR執行中因業務比較複雜,沒有report status從而使得master感覺不到此task的存在而kill
解決方案:
方案1:修改mapred-site.xml:
Java程式碼- <property>
- <name>mapred.task.timeout</name>
- <value>600000</value><!--預設為600S-->可以改的更長!
- </property>
方案2:根據業務需要手動set值:
Java程式碼- conf.setLong("mapred.task.timeout", 900000L);
但在hadoop0.20.2中貌似最大值限制:36,000,000 ms,顧採用方案3比較可靠
方案3:定時report status
在Mapper或者Reducer的時候,執行復雜的業務操作的時候report status
- context.progress();