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

Vitthal Gogate commented on MAPREDUCE-5649:
-------------------------------------------

I changed the code to make it long and it lowered the disk spills considerably 
when enough memory is given to reducers. There are some other places where 
Interger.MAX_VALUE is used which need be corrected. 

In MergeManagerImpl.java following code is changed to use Long value,

- int maxInMemReduce = (int)Math.min(
-        Runtime.getRuntime().maxMemory() * maxRedPer, Integer.MAX_VALUE);

+long maxInMemReduce = Math.min(
+        (long)(Runtime.getRuntime().maxMemory() * maxRedPer), Long.MAX_VALUE);

I will submit the patch soon. 




> Reduce cannot use more than 2G memory  for the final merge
> ----------------------------------------------------------
>
>                 Key: MAPREDUCE-5649
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5649
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: mrv2
>    Affects Versions: trunk
>            Reporter: stanley shi
>
> In the org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl.java file, in 
> the finalMerge method: 
>  int maxInMemReduce = (int)Math.min(
>         Runtime.getRuntime().maxMemory() * maxRedPer, Integer.MAX_VALUE);
>  
> This means no matter how much memory user has, reducer will not retain more 
> than 2G data in memory before the reduce phase starts.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Reply via email to