Hadoop 映射错误-尝试xxxx在600秒后超时
我使用的是Hadoop 2.2.0,在运行映射任务时,出现以下错误 尝试在1800000秒后超时 (它是1800000,因为我更改了mapreduce.task.timeout的配置) 以下是我的地图代码:Hadoop 映射错误-尝试xxxx在600秒后超时,hadoop,map,mapreduce,timeout,elastic-map-reduce,Hadoop,Map,Mapreduce,Timeout,Elastic Map Reduce,我使用的是Hadoop 2.2.0,在运行映射任务时,出现以下错误 尝试在1800000秒后超时 (它是1800000,因为我更改了mapreduce.task.timeout的配置) 以下是我的地图代码: public class MapTask { ContentOfFiles fileContent= new ContentOfFiles(); @Override public void map(LongWritable key, Text value, Context contex
public class MapTask
{
ContentOfFiles fileContent= new ContentOfFiles();
@Override
public void map(LongWritable key, Text value, Context context)
{
String line = value.toString();
String splits[] = line.split("\\t");
List<String> sourceList = Arrays.aslist(splits);
String finalOutput = fileContent.getContentOfFile(sourceList);
context.write(NullWritable.get, new Text(finalOutput));
}
}
公共类映射任务
{
ContentOfFiles fileContent=新ContentOfFiles();
@凌驾
公共void映射(可长写键、文本值、上下文)
{
字符串行=value.toString();
字符串拆分[]=line.split(\\t”);
List sourceList=Arrays.aslist(拆分);
字符串finalOutput=fileContent.getContentOfFile(sourceList);
write(nullwriteable.get,新文本(finalOutput));
}
}
这是我的ContentOfFiles课程
public class ContentOFFiles
{
public String getContentOfFile(List<String>sourceList)
{
String returnContentOfFile;
for(List sourceList:sourceLists)
{
//Open the files and get the content and then append it to the String returnContentOfFile
}
return returnContentOfFile;
}
}
公共类ContentOFFiles
{
公共字符串getContentOfFile(ListsourceList)
{
字符串returnContentOfFile;
对于(列表源列表:源列表)
{
//打开文件并获取内容,然后将其附加到字符串returnContentOfFile
}
返回内容文件;
}
}
当我运行映射任务时,我得到一个错误消息
尝试在1800000秒后超时
我想知道的是,我如何告诉hadoop我的任务仍在运行
我在地图中调用ContentOfFiles类。那么有没有办法告诉我的地图任务仍在运行。我已尝试将配置mapreduce.task.timeout更改为1800000,但仍然会出现相同的错误
我再次使用Hadoop2.2,如果有人能告诉我如何在新的api中处理这个问题,那就太好了 您可以尝试添加
context.progress()代码>在mapper中的每个长操作结束后。据我所知,对于
循环,最好的地方是结束:
public String getContentOfFile(List < String > sourceList, Context context) {
String returnContentOfFile;
for (List sourceList: sourceLists) {
//Open the files and get the content and then append it to the String returnContentOfFile
context.progres(); // report on progress
}
return returnContentOfFile;
}
公共字符串getContentOfFile(列表sourceList,上下文){
字符串returnContentOfFile;
对于(列表源列表:源列表){
//打开文件并获取内容,然后将其附加到字符串returnContentOfFile
context.progres();//进度报告
}
返回内容文件;
}
您是否尝试使用context.progress()代码>报告映射程序仍在工作?我应该在context.write之前还是之后添加它??