簡體   English   中英

使用Spark配置Java堆空間

[英]Configure Java heap space with Spark

我正在嘗試通過在spark中對一個小的數組進行過采樣來創建一個具有數百兆字節的文件,並將其另存為對象文件到spark-ec2腳本創建的hdfs系統中:

//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應用程序是通過腳本提交的:

./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,就不會有錯誤,並且輸出文件在490m左右,所以我懷疑Java堆空間仍然受512m的限制,但是我已經設置--executor-memory=4g ,此集群中的工作節點具有7.5GB內存。 這是什么問題

您可以使用火花運行時間選項提供額外的Java選項spark.executor.extraJavaOptions也減少使用用於緩存內存spark.storage.memoryFraction更多信息,遵循這個鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM