[
https://issues.apache.org/jira/browse/FLINK-10848?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16736940#comment-16736940
]
Till Rohrmann edited comment on FLINK-10848 at 1/8/19 9:51 AM:
---------------------------------------------------------------
Some more information: It seems that the problem is connected to Yarn's
capacity scheduler. When using the {{DefaultResourceCalculator}}, it will
ignore the requested vCores and simply return a container with a single vCore.
See
[here|https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html]
and YARN-2413 for more information.
When requesting a container with {{<memory: X, vCores: Y>}} capacity it will be
registered internally. If we now `removeContainerRequest` with a different
capacity {{<memory: X, vCores: 1>}}, then we will run into a
{{NullPointerException}} since there is no entry with vCores equal to 1. It is
possible to reproduce this problem locally by removing
{{YarnTestBase.java:168-169}}.
Since this change breaks existing Flink setups, I have to revert the commits
and reopen this issue.
was (Author: till.rohrmann):
Some more information: It seems that the problem is connected to Yarn's
capacity scheduler. When using the {{DefaultResourceCalculator}}, it will
ignore the requested vCores and simply return a container with a single vCore.
See
[here|https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html]
and YARN-2413 for more information.
When requesting a container with {{<memory: X, vCores: Y>}} capacity it will be
registered internally. If we now `removeContainerRequest` with a different
capacity {{<memory: X, vCores: 1>>}}, then we will run into a
{{NullPointerException}} since there is no entry with vCores equal to 1. It is
possible to reproduce this problem locally by removing
{{YarnTestBase.java:168-169}}.
Since this change breaks existing Flink setups, I have to revert the commits
and reopen this issue.
> Flink's Yarn ResourceManager can allocate too many excess containers
> --------------------------------------------------------------------
>
> Key: FLINK-10848
> URL: https://issues.apache.org/jira/browse/FLINK-10848
> Project: Flink
> Issue Type: Bug
> Components: YARN
> Affects Versions: 1.3.3, 1.4.2, 1.5.5, 1.6.2
> Reporter: Shuyi Chen
> Assignee: Shuyi Chen
> Priority: Major
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Currently, both the YarnFlinkResourceManager and YarnResourceManager do not
> call removeContainerRequest() on container allocation success. Because the
> YARN AM-RM protocol is not a delta protocol (please see YARN-1902),
> AMRMClient will keep all ContainerRequests that are added and send them to RM.
> In production, we observe the following that verifies the theory: 16
> containers are allocated and used upon cluster startup; when a TM is killed,
> 17 containers are allocated, 1 container is used, and 16 excess containers
> are returned; when another TM is killed, 18 containers are allocated, 1
> container is used, and 17 excess containers are returned.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)