Настройте пространство кучи Java с помощью Spark

1

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

//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-битный процесс?
  • 0
    @ sturcotte06 Я не знаю, как проверить, работает ли он как 64-битный процесс, но это экземпляр Ubuntu 14.04 64-битный EC2, а jvm - это виртуальная машина OpenJDK 64-битный сервер
Показать ещё 1 комментарий
Теги:
apache-spark
hadoop

1 ответ

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню