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

Eric Payne commented on MAPREDUCE-6473:
---------------------------------------

[~kshukla], Thanks for documenting this problem and providing the patch for it.

It looks like the following could happen in {{Cluster.java}}:
- thread 1 enters {{initProviderList}} and begins to process the entries in 
{{frameworkLoader}}
- thread 2 enters {{initProviderList}}, sees that {{providerList}} is null, and 
exits. Then, in {{initialize}}, no processing for {{providerList}} would happen 
and it would throw an IOE when {{clientProtocolProvider}} is null. Am I missing 
something?


> Job submission can take a long time during Cluster initialization
> -----------------------------------------------------------------
>
>                 Key: MAPREDUCE-6473
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-6473
>             Project: Hadoop Map/Reduce
>          Issue Type: Improvement
>          Components: performance
>            Reporter: Kuhu Shukla
>            Assignee: Kuhu Shukla
>         Attachments: 99%ile.png, MAPREDUCE-6473-PerfTest.txt, 
> MAPREDUCE-6473-v1.patch, MAPREDUCE-6473-v2.patch, MAPREDUCE-6473-v3.patch, 
> MAPREDUCE-6473-v4.patch, MAPREDUCE-6473-v5.patch, MAPREDUCE-6473-v6.patch, 
> avgtime.png
>
>
> During initialization in Cluster.java, the framework provider classes are 
> loaded inside a sync block which can considerably increase job submission 
> time when the number of submissions are high. The motive is to reduce time 
> spent in this sync block safely to improve performance.
> {noformat}
> synchronized (frameworkLoader) {
>       for (ClientProtocolProvider provider : frameworkLoader) {
>         LOG.debug("Trying ClientProtocolProvider : "
>             + provider.getClass().getName());
> {noformat}



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

Reply via email to