Try setting SPARK_EXECUTOR_MEMORY=5g (not sure how many workers you are having), You can also set the executor memory while creating the sparkContext (like *sparkContext.set("spark.executor.memory","5g")* )
Thanks Best Regards On Mon, Oct 20, 2014 at 5:01 PM, Arian Pasquali <ar...@arianpasquali.com> wrote: > Hi Akhil, > thanks for your help > > but I was originally running without xmx option. With that I was just > trying to push the limit of my heap size, but obviously doing it wrong. > > > > > Arian Pasquali > http://about.me/arianpasquali > > 2014-10-20 12:24 GMT+01:00 Akhil Das <ak...@sigmoidanalytics.com>: > >> Hi Arian, >> >> You will get this exception because you are trying to create an array >> that is larger than the maximum contiguous block of memory in your Java VMs >> heap. >> >> Here since you are setting Worker memory as *5Gb* and you are exporting >> the *_OPTS as *8Gb*, your application actually thinks it has 8Gb of >> memory where as it only has 5Gb and hence it exceeds the VM Limit. >> >> >> >> Thanks >> Best Regards >> >> On Mon, Oct 20, 2014 at 4:42 PM, Arian Pasquali <ar...@arianpasquali.com> >> wrote: >> >>> Hi, >>> I’m using Spark 1.1.0 and I’m having some issues to setup memory options. >>> I get “Requested array size exceeds VM limit” and I’m probably missing >>> something regarding memory configuration >>> <https://spark.apache.org/docs/1.1.0/configuration.html>. >>> >>> My server has 30G of memory and this are my current settings. >>> >>> ##this one seams that was deprecated >>> export SPARK_MEM=‘25g’ >>> >>> ## worker memory options seams to be the memory for each worker (by >>> default we have a worker for each core) >>> export SPARK_WORKER_MEMORY=‘5g’ >>> >>> I probably need to specify some options using SPARK_DAEMON_JAVA_OPTS, >>> but I’m not quite sure how. >>> I have tried some different options like the following, but I still >>> couldn’t make it right: >>> >>> export SPARK_DAEMON_JAVA_OPTS='-Xmx8G -XX:+UseCompressedOops' >>> export JAVA_OPTS='-Xmx8G -XX:+UseCompressedOops' >>> >>> Does anyone has any idea how can I approach this? >>> >>> >>> >>> >>> 14/10/11 13:00:16 INFO BlockFetcherIterator$BasicBlockFetcherIterator: >>> maxBytesInFlight: 50331648, targetRequestSize: 10066329 >>> 14/10/11 13:00:16 INFO BlockFetcherIterator$BasicBlockFetcherIterator: >>> Getting 1566 non-empty blocks out of 1566 blocks >>> 14/10/11 13:00:16 INFO BlockFetcherIterator$BasicBlockFetcherIterator: >>> Started 0 remote fetches in 4 ms >>> 14/10/11 13:02:06 INFO ExternalAppendOnlyMap: Thread 63 spilling >>> in-memory map of 3925 MB to disk (1 time so far) >>> 14/10/11 13:05:17 INFO ExternalAppendOnlyMap: Thread 63 spilling >>> in-memory map of 3925 MB to disk (2 times so far) >>> 14/10/11 13:09:15 ERROR Executor: Exception in task 0.0 in stage 0.0 >>> (TID 1566) >>> java.lang.OutOfMemoryError: Requested array size exceeds VM limit >>> at java.util.Arrays.copyOf(Arrays.java:2271) >>> at >>> java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113) >>> at >>> java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93) >>> at >>> java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140) >>> at >>> java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1876) >>> at >>> java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1785) >>> at >>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1188) >>> at >>> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) >>> at >>> org.apache.spark.serializer.JavaSerializationStream.writeObject(JavaSerializer.scala:42) >>> at >>> org.apache.spark.serializer.JavaSerializerInstance.serialize(JavaSerializer.scala:73) >>> at >>> org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:187) >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) >>> at java.lang.Thread.run(Thread.java:745) >>> 14/10/11 13:09:15 ERROR ExecutorUncaughtExceptionHandler: Uncaught >>> exception in thread Thread[Executor task launch worker-2,5,main] >>> java.lang.OutOfMemoryError: Requested array size exceeds VM limit >>> at java.util.Arrays.copyOf(Arrays.java:2271) >>> at >>> java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113) >>> at >>> java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93) >>> at >>> java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140 >>> >>> >>> Arian >>> >> >> >