【发布时间】:2013-12-02 08:30:07
【问题描述】:
我正在使用 hadoop mapreduce 来完成以下任务:
我的映射器将从 HDFS 读取 .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 - service is not yet started ] 时会抛出异常。
现在我的问题是我的映射程序没有移动到另一个正在运行 FindPath 服务的集群。
示例:
Datanode 1 Datanode 2 - 两个数据节点
如果 DataNode 1 尚未启动 FindPath 服务,则 Input 应移动到 Datanode 2。
我怎样才能做到这一点?
当Datanode 1 中的TaskStatus 抛出异常时,如何将其更改为“失败”?
更新
Job j;
catch(Exception Ex)
{
j.failTask((TaskAttemptID)context.getTaskAttemptID());
System.out.println("error");
}
我使用过类似的东西,但它会引发 NullPointer 异常。
如何在我的映射器或映射器设置新 API 中使用failTask?
【问题讨论】:
-
那么,您想使地图失效并在您提供服务的其他节点中使用不同的地图重新处理数据?
-
@SSaikia_JtheRocker 是的。我想这样做
-
@SSaikia_JtheRocker 我正在使用新的 API
标签: java exception hadoop mapreduce