[
https://issues.apache.org/jira/browse/YARN-8002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16395878#comment-16395878
]
Wangda Tan commented on YARN-8002:
----------------------------------
Thanks [~cheersyang],
bq. The approach in this patch adds the flexibility to let it easy to get
cardinality on a set of application IDs regardless what namespace it is. The
extra computation will only happen when we need to compute PC against app-tag
(or other namespace that evals to a set of app IDs), not every time. And with
the extra cost you mentioned (which I don't think it is very bad). What you
suggested saves this cost, but it will be hard to support not-self, app-ids(a
set of IDs) or possibly app-regex etc. I'd like to hold on re-implementing this
until every one agrees we are not going to support those.
I completely understand benefits here, I think we all agree that we should only
aggregate results when necessary (for app-ids, not-self, etc.). I'm fine with
keep the logics here, but here I just want to make sure that we don't do any
unnecessary aggregations for single.
More specifically, following call need to be avoided:
{code}
TargetApplications ta = new TargetApplications(currentAppId,
atm.getAllApplicationIds());
namespace.evaluate(ta);
{code}
For {{AllocationTags}}, I'm fine with keep the name, but I suggest to move it
to {{scheduler.constraint}} package. I think it should not belong to API
package.
{{AllocationTags#fromScope}}: First I don't suggest to use the "scope" name
since we already have it inside {{TargetConstraint}}. I suggest to make
explicit names to this. Such as
{code}
createSingleAppAllocationTags(ApplicationId, Set<String> tags)
createGlobalAllocationTags(Set<String> tags).
In the future, we can add
createAppsAllocationTags(...)
createAppLabelAllocationTags(...)
{code}
This makes code more readable and less implicit rules in configs.
Similarly,
For {{AllocationTagNamespace}}, I saw it is used by some api packages, from
what I can see, the only code usage is toString. We should move it to
{{scheduler.constraint}} as well.
Instead of doing this, I would prefer to add a simple Java enum to api package
(such as AllocationTagTypes or AllocationTagNamespaceTypes), and use it in the
AllocationTagNamespaces class.
> Support NOT_SELF and ALL namespace types for allocation tag
> -----------------------------------------------------------
>
> Key: YARN-8002
> URL: https://issues.apache.org/jira/browse/YARN-8002
> Project: Hadoop YARN
> Issue Type: Sub-task
> Components: resourcemanager
> Reporter: Weiwei Yang
> Assignee: Weiwei Yang
> Priority: Major
> Attachments: YARN-8002.001.patch, YARN-8002.002.patch
>
>
> This is a continua task after YARN-7972, YARN-7972 adds support to specify
> tags with namespace SELF and APP_ID, like following
> * self/<tag>
> * app-id/<appid>/<tag>
> this task is to track the work to support 2 of remaining namespace types
> *NOT_SELF* & *ALL* (we'll support app-label later),
> * not-self/<tag>
> * all/<tag>
> this will require a bit refactoring in {{AllocationTagsManager}} as it needs
> to do some proper aggregation on tags for multiple apps.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]