Hi Doug,

Thanks for the reply. Could you possibly explain how my program would get access to the task reports from each tracker? I've found the getMapTaskReports method in the JobClient class, but can't work out how to access it other than by creating a new instance of JobClient - but then that JobClient would be a differnt one to the one that was running my job, so would access a different set of TaskReports?
Cheers,
Ollie

Quoting Doug Cutting <[EMAIL PROTECTED]>:

[EMAIL PROTECTED] wrote:
I've written a map task that will on occasion not compute the correct result. This can easily be detected, at which point I'd like the map task to report the error and terminate the entire map/reduce job. Does anyone know of a way I can do this?

You can easily kill the job from a map task.  Just use the
mapred.job.id job property to get the job id, then use JobClient to
kill the job. Reporting the error could be done by setting the task's
state in the reporter, and then scanning task reports from your job
client after the job is killed for such state strings.  Or you could
perhaps just set a counter on the reporter in the map task, and then
checking that counter on the RunningJob, so that you don't have to scan
all the tasks.  You might need to sleep a few seconds after setting the
state or counter before killing the job, so that these reports have a
chance to make it back to the jobtracker.

Doug



Reply via email to