hadoop-yarn-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sunil G (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (YARN-1408) Preemption caused Invalid State Event: ACQUIRED at KILLED and caused a task timeout for 30mins
Date Mon, 09 Jun 2014 11:15:02 GMT

    [ https://issues.apache.org/jira/browse/YARN-1408?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14021881#comment-14021881

Sunil G commented on YARN-1408:

Thank you Wangda for the comment.
I was thinking of using *AppSchedulingInfo* object itself. A reference of this object can
be placed in RMContainer. 
Yes, there is a choice between *SchedulerApplicationAttempt* and *AppSchedulingInfo*. I feel
based on heaviness, AppSchedulingInfo is better. AppSchedulingInfo#updateResourceRequests
is synchronized also.
If any other problems are there with AppSchedulingInfo, we can use SchedulerApplicationAttempt

I will try summarizing the approach, please correct me if I am wrong.     
*Storage Part*:
1. RMContainer needs to store the informations such as priority, hostname, capability and
relaxLocality to create a new ResourceRequest. 
2. RMContainer can also store the AppSchedulingInfo object. From this object, AppSchedulingInfo#updateResourceRequests
can be invoked later to add back ResourceRequest.

*Transition Handling*:
1. RMContainer state transition: ALLOCATED to KILLED, a new transition named *PreemptTransition*
can be invoked (extending FinishedTransition).
2. PreemptTransition can first create a new ResourceRequest instance with container count
as 1 and with other details stored in RMContainer.
   * Invoke AppSchedulingInfo#updateResourceRequests with this new ResourceRequest instance
   * Invoke super.transition to handle the remaining FinishedTransition handling.

> Preemption caused Invalid State Event: ACQUIRED at KILLED and caused a task timeout for
> ----------------------------------------------------------------------------------------------
>                 Key: YARN-1408
>                 URL: https://issues.apache.org/jira/browse/YARN-1408
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: resourcemanager
>    Affects Versions: 2.2.0
>            Reporter: Sunil G
>            Assignee: Sunil G
>         Attachments: Yarn-1408.1.patch, Yarn-1408.2.patch, Yarn-1408.3.patch, Yarn-1408.4.patch,
> Capacity preemption is enabled as follows.
>  *  yarn.resourcemanager.scheduler.monitor.enable= true ,
>  *  yarn.resourcemanager.scheduler.monitor.policies=org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicy
> Queue = a,b
> Capacity of Queue A = 80%
> Capacity of Queue B = 20%
> Step 1: Assign a big jobA on queue a which uses full cluster capacity
> Step 2: Submitted a jobB to queue b  which would use less than 20% of cluster capacity
> JobA task which uses queue b capcity is been preempted and killed.
> This caused below problem:
> 1. New Container has got allocated for jobA in Queue A as per node update from an NM.
> 2. This container has been preempted immediately as per preemption.
> Here ACQUIRED at KILLED Invalid State exception came when the next AM heartbeat reached
> ERROR org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainerImpl: Can't
handle this event at current state
> org.apache.hadoop.yarn.state.InvalidStateTransitonException: Invalid event: ACQUIRED
> This also caused the Task to go for a timeout for 30minutes as this Container was already
killed by preemption.
> attempt_1380289782418_0003_m_000000_0 Timed out after 1800 secs

This message was sent by Atlassian JIRA

View raw message