Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
Description
In method RMAppManager#createAndPopulateNewRMApp, appACLsUpdated is sent to timelineserver for every application that get created.
private RMAppImpl createAndPopulateNewRMApp( ApplicationSubmissionContext submissionContext, long submitTime, String user, boolean isRecovery) throws YarnException { // // String appViewACLs = submissionContext.getAMContainerSpec() .getApplicationACLs().get(ApplicationAccessType.VIEW_APP); rmContext.getSystemMetricsPublisher().appACLsUpdated( application, appViewACLs, System.currentTimeMillis()); return application; }
Say if we have 10K completed applications to recover, 30K events will be generated i.e app_created, app_finished and app_acl_updated. For completed applications, I think need not to send app-acl-updated event with which gradually reduce load on the dispatcher.
Eventhough MultiDispatcher is used to publish timeline events, it is bottle neck when max-completed is configured very high value may be 100K.