2015-02-12 9 views
1

Я пытаюсь создать файл с несколькими сот мега байт на передискретизацию небольшого массива в искре и сохранить как файл объекта в систему HDFS, созданной искровой ec2 сценарий:Настройка Java кучи пространства с искрой

//Accepted arguments 
val URI = args(0) 
val repNum = args(1).toInt 

//Create a LabeledPoint array of size 2 
val labelPts = sc.parallelize(Array(LabeledPoint(1.0, Vectors.dense(1.0, 0.0, 3.0, 4.0, 5.0, 7.0, 8.0)), 
    LabeledPoint(1.0, Vectors.dense(3.0, 1.0, 2.0, 8.0, 6.0, 9.0, 9.0)))) 

//Oversampling repNum LabeledPoints from the array above 
val overSample = labelPts.takeSample(true, repNum, 1) 

//output oversampling result as object 
sc.parallelize(overSample).saveAsObjectFile(URI) 

кластер создается скриптом:

spark-ec2 -k spark -i ~/.ssh/spark.pem -s 1 launch my-spark-cluster 

и мой в комплекте с искровым заявление подается сценарий:

./spark-submit \ 
--class SimpleApp \ 
--master spark://ec2-52-1-94-89.compute-1.amazonaws.com:7077 \ 
--executor-memory=4g \ 
--driver-memory=4g \ 
--conf spark.akka.frameSize=10000 \ 
--conf spark.core.connection.auth.wait.timeout=1000 \ 
~/oversample-assembly-1.0.jar \ 
hdfs://ec2-52-1-94-89.compute-1.amazonaws.com:9000/user/root/oversampleOut \ 
70000000 

Затем он выбрасывает EXCEPTION: java.lang.OutOfMemoryError: Java heap space. Я не знаю, что с ним не так, потому что если мой repNum установлен в 6000000, ошибок не будет, и выходной файл будет около 490 м, поэтому я подозреваю, что пространство кучи java все еще ограничено 512 м, однако я set --executor-memory=4g, а рабочая таблица в этом кластере имеет 7,5 ГБ памяти. В чем проблема?

+0

ли его запустить как процесс 64-битной? – sturcotte06

+0

@ sturcotte06 Я не знаю, как проверить, запущен ли он как 64-битный процесс, но это экземпляр ECb Ubuntu 14.04 64 бит, а jvm - это 64-разрядный сервер OpenJDK VM – user3684014

+0

, вы решили это? Я столкнулся с той же проблемой .. мой код хорошо работает в искровой оболочке и в том же наборе данных, но не удается, когда я пытаюсь его упаковать и запускать через spark-submit – Akash

ответ

0

Вы можете предоставить дополнительные опции Java с помощью искры запустить опцию времени spark.executor.extraJavaOptions также уменьшить объем памяти, используемый для кэширования с помощью spark.storage.memoryFraction для получения дополнительной информации следовать этому link

Смежные вопросы