執行reduce任務時,經常發生在我的hadoop作業中。 這個問題的一些原因可能是reducer沒有長時間編寫上下文,所以你需要在你的代碼中添加context.progress()。但是在我的reduce函數中,上下文經常被寫入。這是我減少功能:
public void reduce(Text key, Iterable<Text> values, Context context) throws
IOException,InterruptedException{
Text s=new Text();
Text exist=new Text("e");
ArrayList<String> T=new ArrayList<String>();
for(Text val:values){
String value=val.toString();
T.add(value);
s.set(key.toString()+"-"+value);
context.write(s,exist);
}
Text need=new Text("n");
for(int i=0;i<T.size();++i){
String a=T.get(i);
for(int j=i+1;j<T.size();++j){
String b=T.get(j);
int f=a.compareTo(b);
if(f<0){
s.set(a+"-"+b);
context.write(s,need);
}
if(f>0){
s.set(b+"-"+a);
context.write(s,need);
}
}
}
}
你可以看到上下文中的循環頻繁寫入。 這種失敗的原因是什麼?我該如何處理它?
沒有工作正確完成或因爲這些故障而中斷? – AdamSkywalker
它仍然運行到100%,並以失敗告終。@ AdamSkywalker –
我首先打開applicaton UI並檢查失敗的reducer中的應用程序日誌。他們可以包含一些線索 – AdamSkywalker