[ 
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]

Reply via email to