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

Jason Lowe commented on YARN-3491:
----------------------------------

Could you elaborate a bit on why the submit is time consuming?  Unless I'm 
mistaken, the FSDownload constructor is very cheap and queueing should be 
simply tacking an entry on a queue.

> Improve the public resource localization to do both FSDownload submission to 
> the thread pool and completed localization handling in one thread 
> (PublicLocalizer).
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: YARN-3491
>                 URL: https://issues.apache.org/jira/browse/YARN-3491
>             Project: Hadoop YARN
>          Issue Type: Improvement
>          Components: nodemanager
>    Affects Versions: 2.7.0
>            Reporter: zhihai xu
>            Assignee: zhihai xu
>            Priority: Critical
>
> Improve the public resource localization to do both FSDownload submission to 
> the thread pool and completed localization handling in one thread 
> (PublicLocalizer).
> Currently FSDownload submission to the thread pool is done in 
> PublicLocalizer#addResource which is running in Dispatcher thread and 
> completed localization handling is done in PublicLocalizer#run which is 
> running in PublicLocalizer thread.
> Because FSDownload submission to the thread pool at the following code is 
> time consuming, the thread pool can't be fully utilized. Instead of doing 
> public resource localization in parallel(multithreading), public resource 
> localization is serialized most of the time.
> {code}
>             synchronized (pending) {
>               pending.put(queue.submit(new FSDownload(lfs, null, conf,
>                   publicDirDestPath, resource, 
> request.getContext().getStatCache())),
>                   request);
>             }
> {code}
> Also there are two more benefits with this change:
> 1. The Dispatcher thread won't be blocked by above FSDownload submission. 
> Dispatcher thread handles most of time critical events at Node manager.
> 2. don't need synchronization on HashMap (pending).
> Because pending will be only accessed in PublicLocalizer thread.



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

Reply via email to