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