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

Haibo Chen commented on YARN-8250:
----------------------------------

My understanding of SHED_QUEUED_CONTAINERS is to notify container scheduler to 
get rid of some opportunistic containers being queued. The intent of the new 
SCHEDULER_CONTAINERS is to let container scheduler try to launch opportunistic 
containers that are currently being queued. A follow-up would be also reusing 
SCHEDULER_CONTAINERS to preempt running opportunistic containers.  I am not 
sure how to best align the two.

The main reasons why we'd like to introduce a new container scheduler are

1) Minimize impact on GUARANTEED containers from over-allocating node with 
OPPORTUNISTIC containers. Queuing time of GUARANTEED containers would increase 
with more running OPPORTUNISTIC containers, which is the case with 
over-allocating. The code as in YARN-6675 gets complicated,  Alternatively, we 
could launch GUARANTEED containers immediately and reply on cgroup-mechanism 
for preemption. 

2) avoid aggressive OPPORTUNISTIC container launching. One thing to note is 
that in case of over-allocation, we'd rely on the resource utilization metrics 
to decide how much resources we can to launch OPPORTUNISTIC containers.     The 
resource utilization metrics in NM is unfortunately only updated every few 
seconds. This can be problematic in that NM could end up with launching too 
many OPPORTUNISTIC containers before the metric is updated. The current default 
container scheduler launches containers aggressively, which could cause 
containers to be launched and killed shortly after.  The new container 
scheduler only schedule OPPORTUNISTIC containers once whenever the utilization 
metric is updated.

It is to my understanding that removing GUARANTEED container queuing would 
de-stablize cases like yours where nodes are running with a high utilization, 
and scheduling OPPORTUNISTIC containers only every few seconds would delay 
launch time in distributed scheduling. 

Hence, we created a plug-gable container scheduler so that we can choose to do 
things differently without causing issues to existing use cases. The new 
container scheduler should probably be named or documented so that it is only 
used when over-allocation is enabled.

 

 

> Create another implementation of ContainerScheduler to support NM 
> overallocation
> --------------------------------------------------------------------------------
>
>                 Key: YARN-8250
>                 URL: https://issues.apache.org/jira/browse/YARN-8250
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>            Reporter: Haibo Chen
>            Assignee: Haibo Chen
>            Priority: Major
>         Attachments: YARN-8250-YARN-1011.00.patch, 
> YARN-8250-YARN-1011.01.patch, YARN-8250-YARN-1011.02.patch
>
>
> YARN-6675 adds NM over-allocation support by modifying the existing 
> ContainerScheduler and providing a utilizationBased resource tracker.
> However, the implementation adds a lot of complexity to ContainerScheduler, 
> and future tweak of over-allocation strategy based on how much containers 
> have been launched is even more complicated.
> As such, this Jira proposes a new ContainerScheduler that always launch 
> guaranteed containers immediately and queues opportunistic containers. It 
> relies on a periodical check to launch opportunistic containers. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to