如何在Java中停止Hadoop作业

3
我有一个服务器设置,由8台机器组成,我在上面运行Hadoop作业来下载特定的资产。客户端代理使用JobConf启动Hadoop作业。
代理从服务器获取响应代码,根据响应代码可以确定下载的进度。在下面的代码中,invoke()创建到服务器公开的REST API的连接。ResponseData是一个自定义类,可以像下面这样从与响应关联的连接中读取已下载的数据:
ResponseData res = invoke(downloadUrl, contentType);
downloadedAssetStream = New ObjectInputStream(res.connection.getInputStream);

if(res.code != 200)
{
    //Stop hadoop job
}

停止作业需要什么?我在某处听说抛出一个IOException就可以,但我还没有验证过。
1个回答

1

1
如果我想从map()函数内部终止作业,我该如何引用要终止的作业?特别是如何获取作业ID? - Karthik. V
补充一下我之前的评论,我的MyMapper类扩展了org.apache.hadoop.mapred.MapReduceBase并实现了org.apache.hadoop.mapred.Mapper。在(重写的)map()函数中,我需要获取作业实例来调用killJob()。如果您能说明一下,那就太好了。 - Karthik. V
1
不确定从Map中结束作业是否是一个好的实践,可以在Mapper中添加以下代码以获取作业的ID。String jobId; public void configure(JobConf conf) { jobId = conf.get("mapred.job.id"); } - Praveen Sripati
1
我想这个问题是不可避免的...是否可能从JobID中检索Job对象或从map函数内部检索Context对象? - Karthik. V
1
http://stackoverflow.com/questions/8009802/is-there-a-way-to-access-number-of-successful-map-tasks-from-a-reduce-task-in-an/8054105#8054105 - Praveen Sripati
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接