An upper GC limit indicates that your (tiny) heap is full.
This is what often happens in MapReduce operations when you process a lot of data. Try the following:
<property>
<name> mapred.child.java.opts </name>
<value> -Xmx1024m -XX: -UseGCOverheadLimit </value>
</ property>
Also try the following things:
Use combinators; reducers should not receive lists longer than small multiples of the number of cards
At the same time, you can generate heap dumps from OOME and parse using YourKit etc. and analyze it
source share