[
https://issues.apache.org/jira/browse/YARN-8303?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16631428#comment-16631428
]
Rohith Sharma K S commented on YARN-8303:
-----------------------------------------
Thanks [~abmodi] for the patch.. Couple of comments..
AHSClient.java
# Modifying public method is going to cause back compatible issue in
yarn-client package. I would suggest to add newer constructor
createV2AHSClient() that gives the instance of AHSv2ClientImpl. Make this
constructor as @Evolving as of now
YarnClientImpl.java
# This class should have both i.e v1 and v2 AHSClient instance depending upon
the configuration. Use YarnConfiguration#timelineServiceV15Enabled and
YarnConfiguration#timelineServiceV2Enabled method to check which version is
enabled. Basically look up for both version if both version are enabled.
Probably you can give the preference for v2 client first always. This is
necessary because we support publishing into both versions if enabled.
AHSv2ClientImpl.java
# Annotate this class with Private and Unstable/Evolving
# #getApplications() throw NotImplementedException. Should it be modified to
UnsupportedOperationException? Need to a proper message in exception stating
"ATSv2.0 doesn't support retrieving ALL application entities."
TimelineReaderClient.java
# All the API are defined with String. This can be kept as individual instance
itself like getApplicationAttemptEntities(ApplicationAttemptId
applicationAttemptId). Applicable to all other API also. This avoids misusing
the API with different entityIds.
# This class API contains for YARN entities. The same class could be converted
for generic APIs such as getEntities() and getEntity(). Let the client take
care of providing proper entityId and entityType right? Or To existing APIs add
these two methods which could be used by external client such as Tez.
# Give 1st commend is handled then #getApplicationAttemptEntity
#getContainerEntities and #getApplicationEntity need not to have arguments.
Only one argument could be passed and *Impl can be made change to use toString
to get entityId.
# Method #getApplicationEntity is taking TimelineEntityType as an argument.
This is not necessary to take as argument. *Impl can be implicitly assume to
take YARN_APPLICATION as entity type.
If you want we can pull into separate JIRA for providing java client for
TimelineReader. Given java client exist, then we can make use of it in other
places. And lets discuss this separately. cc:/ [~vrushalic]
TimelineReaderClientImpl.java
# Annotate this class with public/unstable.
# Rename timelineServiceAddress to timelineV2ServiceAddress.
# Second argument in getApplicationEntity(String appId, TimelineEntityType
entityType) is not needed.
# URL construction can be extracted to newer method.
> YarnClient should contact TimelineReader for application/attempt/container
> report
> ---------------------------------------------------------------------------------
>
> Key: YARN-8303
> URL: https://issues.apache.org/jira/browse/YARN-8303
> Project: Hadoop YARN
> Issue Type: Sub-task
> Reporter: Rohith Sharma K S
> Assignee: Abhishek Modi
> Priority: Critical
> Attachments: YARN-8303.001.patch, YARN-8303.poc.patch
>
>
> YarnClient get app/attempt/container information from RM. If RM doesn't have
> then queried to ahsClient. When ATSv2 is only enabled, yarnClient will result
> empty.
> YarnClient is used by many users which result in empty information for
> app/attempt/container report.
> Proposal is to have adapter from yarn client so that app/attempt/container
> reports can be generated from AHSv2Client which does REST API to
> TimelineReader and get the entity and convert it into app/attempt/container
> report.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]