我正在使用hadoop mapreduce执行以下任务:
我的绘图员会读取 .xml
文件并将其传递给某个服务。我的电脑里有这样的代码 setup()
:
try
{
System.out.println(propertyName);
session = FindPath.createSession("localhost",3250, EncodingConstants.en_ISO_8859_1);
session.open();
}
catch
{
System.out.println("error");
}
当datanode没有 FindPath
[findpath-服务尚未启动]它将引发异常。
现在我的问题是我的Map程序没有移动到另一个运行的集群 FindPath
服务。
例子:
数据节点1数据节点2-两个数据节点
如果datanode 1尚未启动 FindPath
服务,则输入应移动到数据节点2。
我怎样才能做到这一点?
我怎样才能改变现状 TaskStatus
在datanode 1中,当抛出异常时,是否返回“failed”?
更新
Job j;
catch(Exception Ex)
{
j.failTask((TaskAttemptID)context.getTaskAttemptID());
System.out.println("error");
}
我使用过类似的方法,但是它抛出了一个nullpointer异常。
如何使用 failTask
在我的Map或Map设置新的api?
1条答案
按热度按时间yrdbyhpb1#
使用
JobClient
访问RunningJob
类(我有1.0.4api)。代码如下所示:
有一个
JobClient
和一个RunningJob
在您的setup()
.方法如下:
这会导致任务尝试失败。
最后,你应该
mapred.map.max.attempts
设置为1,这样失败的任务尝试就是失败的任务。注:
你应该考虑改变
mapred.max.map.failures.percent
因为它反映了集群对失败任务的容忍度。