[
https://issues.apache.org/jira/browse/HADOOP-1060?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Arun C Murthy updated HADOOP-1060:
----------------------------------
Attachment: HADOOP-1060_20070305_1.patch
Here is a patch which fixes the problem; basically the events-counter wasn't
being manipulated correctly - also this fixes the JobClient to correctly handle
lost trackers and fixes a synchronization issue in the JobTracker.
However there is an issue with this patch: With TASKTRACKER_EXPIRY_INTERVAL
(set to the current default of 10mins) this patch works like a charm, I've
tried manually bringing down trackers etc. and all unit-tests pass; however
when I tried to test it with smaller expiry intervals (3m/5m) I see some weird
behaviour; bringing this to everyone's attention while I dive deeper.
a) Set to 3mins i.e. ExpiryTrackerThread kicks in every minute
The JT goes into a tizzy and seems to get overloaded e.g. all IPCs from the
JobClient timeout and eventually it kills the job.
b) Set to 3mins i.e. ExpiryTrackerThread kicks in every minute and a two-thirds
I see that the reduces hang with infinite logs of this nature:
2007-03-06 02:01:43,203 INFO org.apache.hadoop.mapred.TaskRunner:
task_0002_r_000017_0 Need 4 map output(s)
2007-03-06 02:01:43,203 INFO org.apache.hadoop.mapred.TaskRunner:
task_0002_r_000017_0 Need 4 map output location(s)
2007-03-06 02:01:43,204 INFO org.apache.hadoop.mapred.TaskRunner:
task_0002_r_000017_0 Got 0 new map outputs from jobtracker and 0 map outputs
from previous failures
2007-03-06 02:01:43,204 INFO org.apache.hadoop.mapred.TaskRunner:
task_0002_r_000017_0 Got 4 known map output location(s); scheduling...
2007-03-06 02:01:43,204 INFO org.apache.hadoop.mapred.TaskRunner:
task_0002_r_000017_0 Scheduled 0 of 4 known outputs (4 slow hosts and 0 dup
hosts)
2007-03-06 02:01:44,084 INFO org.apache.hadoop.mapred.TaskTracker:
task_0002_r_000017_0 0.3288889% reduce > copy (296 of 300 at 0.00 MB/s) >
2007-03-06 02:01:45,085 INFO org.apache.hadoop.mapred.TaskTracker:
task_0002_r_000017_0 0.3288889% reduce > copy (296 of 300 at 0.00 MB/s) >
2007-03-06 02:01:46,087 INFO org.apache.hadoop.mapred.TaskTracker:
task_0002_r_000017_0 0.3288889% reduce > copy (296 of 300 at 0.00 MB/s) >
2007-03-06 02:01:47,089 INFO org.apache.hadoop.mapred.TaskTracker:
task_0002_r_000017_0 0.3288889% reduce > copy (296 of 300 at 0.00 MB/s) >
2007-03-06 02:01:48,092 INFO org.apache.hadoop.mapred.TaskTracker:
task_0002_r_000017_0 0.3288889% reduce > copy (296 of 300 at 0.00 MB/s) >
Appreciate any insights/reviews while I continue digging...
> IndexOutOfBoundsException in JobInProgress.updateTaskStatus leads to hung jobs
> ------------------------------------------------------------------------------
>
> Key: HADOOP-1060
> URL: https://issues.apache.org/jira/browse/HADOOP-1060
> Project: Hadoop
> Issue Type: Bug
> Components: mapred
> Affects Versions: 0.12.0
> Reporter: Arun C Murthy
> Assigned To: Arun C Murthy
> Priority: Critical
> Fix For: 0.12.1
>
> Attachments: HADOOP-1060_20070305_1.patch
>
>
> When the JobTracker detects that a TaskTracker is 'lost' and tries to fail
> the incomplete tasks and the completed map tasks it fails with:
> 2007-03-03 00:38:24,056 ERROR org.apache.hadoop.mapred.JobTracker: Tracker
> Expiry Thread got exception: java.lang.IndexOutOfBoundsException: Index: 310,
> Size: 307
> at java.util.ArrayList.RangeCheck(ArrayList.java:546)
> at java.util.ArrayList.get(ArrayList.java:321)
> at
> org.apache.hadoop.mapred.JobInProgress.updateTaskStatus(JobInProgress.java:342)
> at
> org.apache.hadoop.mapred.JobInProgress.failedTask(JobInProgress.java:862)
> at
> org.apache.hadoop.mapred.JobTracker.lostTaskTracker(JobTracker.java:1637)
> at
> org.apache.hadoop.mapred.JobTracker$ExpireTrackers.run(JobTracker.java:269)
> at java.lang.Thread.run(Thread.java:595)
> Another instance of same exception:
> 2007-03-05 07:44:42,869 INFO org.apache.hadoop.ipc.Server: IPC Server handler
> 9 on 50020 call error: java.io.IOException:
> java.lang.IndexOutOfBoundsException: Index: 12341
> 215, Size: 83189
> java.io.IOException: java.lang.IndexOutOfBoundsException: Index: 12341215,
> Size: 83189
> at java.util.ArrayList.RangeCheck(ArrayList.java:547)
> at java.util.ArrayList.get(ArrayList.java:322)
> at
> org.apache.hadoop.mapred.JobInProgress.updateTaskStatus(JobInProgress.java:342)
> at
> org.apache.hadoop.mapred.JobTracker.updateTaskStatuses(JobTracker.java:1611)
> at
> org.apache.hadoop.mapred.JobTracker.processHeartbeat(JobTracker.java:1163)
> at org.apache.hadoop.mapred.JobTracker.heartbeat(JobTracker.java:1037)
> at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:336)
> at org.apache.hadoop.ipc.Server$Handler.run(Server.java:559)
> This means that the tasks aren't updated correctly and the JT just assumes
> the task is running and never restarts the task... thereby leading to a hung
> job.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.