[ 
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.

Reply via email to