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

Vinod Kumar Vavilapalli commented on YARN-4183:
-----------------------------------------------

Getting the obvious out of the way: It's a mess.

h4. How things worked before this JIRA
 - RM uses {{generic-application-history.enabled}} to activate 
RMApplicationHistoryWriter (RM sending app events to the 
now-dead-but-kept-for-compat APPLICATION_HISTORY_STORE)
 - RM uses {{yarn.timeline-service.enabled}} + 
{{yarn.resourcemanager.system-metrics-publisher.enabled}} to write 
app/app-attempt/container events to Timeline Service
 - YarnClient uses {{generic-application-history.enabled}} to talk to the 
_history_ server irrespective of where the historic data gets stored
 - TimelineClient (embedded inside YarnClient) uses 
{{yarn.timeline-service.enabled}} to get tokens and populate during 
app-submission.

h4. Quick general context
 - Nobody is expected to use RMApplicationHistoryWriter
 - {{yarn.timeline-service.generic-application-history.enabled}} is also 
supposed to be dead for all purposes. But it is today used beyond the RM using 
it to activate RMApplicationHistoryWriter
 - SystemMetricsPublisher only writes events to TimelineService (v1, v1.5)

Given the above, I can't but conclude that the existing configuration is not 
modeled correctly.

h4. The right thing to do
 - Make SystemMetricsPublisher only respect 
{{yarn.resourcemanager.system-metrics-publisher.enabled}}
 - Leave {{yarn.timeline-service.generic-application-history.enabled}} as a 
dead property only to activate RMApplicationHistoryWriter.
 - We can leave {{yarn.timeline-service.generic-application-history.enabled}} 
to also activate client -> RM for historical data or make RM always proxy these 
calls for the client
 - There should be an explicit {{yarn.timeline-service.version}} which tells 
YarnClient to get tokens or not - yes for non-present version (default), v1, v2 
but no for v1.5.
 - We should also use the same property in the new API calls proposed for V1.5 
YARN-4233 / V2 YARN-2928, lest the users think they can call any API 
independent of what is supported on server side. The version field has 
semantics on both client *and* server side at the same time - it's picking a 
solution end-to-end.

h4. Immediate step
All of this needs more work, so unless I hear strongly otherwise I am going to 
revert this patch in the interest of 2.7.2's progress.
 
/cc [~hitesh] [~gtCarrera9] [~xgong] [~sjlee0]

> Enabling generic application history forces every job to get a timeline 
> service delegation token
> ------------------------------------------------------------------------------------------------
>
>                 Key: YARN-4183
>                 URL: https://issues.apache.org/jira/browse/YARN-4183
>             Project: Hadoop YARN
>          Issue Type: Bug
>    Affects Versions: 2.7.1
>            Reporter: Mit Desai
>            Assignee: Mit Desai
>             Fix For: 3.0.0, 2.8.0, 2.7.2
>
>         Attachments: YARN-4183.1.patch
>
>
> When enabling just the Generic History Server and not the timeline server, 
> the system metrics publisher will not publish the events to the timeline 
> store as it checks if the timeline server and system metrics publisher are 
> enabled before creating a timeline client.
> To make it work, if the timeline service flag is turned on, it will force 
> every yarn application to get a delegation token.
> Instead of checking if timeline service is enabled, we should be checking if 
> application history server is enabled.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to