我正在一臺機器上運行spark,有24個內核,48G Ram。Spark ALS:用完Java堆空間:java.lang.OutOfMemoryError:Java堆空間
我能夠訓練一個隱含的模型,用6M的用戶,1.2M項目,216M的行動(意見/買入)
現在,我嘗試運行7M用戶的建議和1.5M項目和440M的用戶操作項目上。
我使用20個執行程序,驅動程序內存15G,執行程序內存4G。
訓練等級8,15迭代。
在使用ALS.trainImplicit訓練模型時,我得到的java堆空間內存不足錯誤。
model = ALS.trainImplicit(training_RDD, rank, seed=seed, iterations=iterations, lambda_=regularization_parameter, alpha=config.alpha)
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/mllib/recommendation.py", line 314, in trainImplicit
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/mllib/common.py", line 130, in callMLlibFunc
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/mllib/common.py", line 123, in callJavaFunc
File "/usr/local/spark/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py", line 1133, in __call__
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 63, in deco
File "/usr/local/spark/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py", line 319, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o86.trainImplicitALSModel.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 4.0 failed 1 times, most recent failure: Lost task 0.0 in stage 4.0 (TID 44, localhost, executor driver): java.lang.OutOfMemoryError: Java heap space
at scala.collection.mutable.ArrayBuilder$ofInt.mkArray(ArrayBuilder.scala:323)
我無法得到如何解決此錯誤。 錯誤代碼:在階段4.0(TID 44,localhost,executor driver)中丟失的任務0.0:java.lang.OutOfMemoryError:Java堆空間,我可以得知執行器內存不足。
我曾嘗試增加執行程序內存,減少驅動程序內存,但它沒有幫助,我仍然收到相同的錯誤。錯誤的
堆棧跟蹤:https://www.dropbox.com/s/g2vlmtjo8bb4gd1/javaheapspaceerror.txt?dl=0
我已經設置了這個屬性,但是我仍然得到相同的java堆空間錯誤。 –
然後,您應該嘗試更新作業的配置。你所說的那個在你的機器上實際上是不可能的(20個執行器,4G = 80G--你只有48個,這是在包括驅動器RAM和容器開銷之前)。 Spark將僅僅使用配置作爲指導,並盡其所能。爲什麼你需要這麼多的驅動器內存? ALS根本不使用這個,所以我會考慮減少這個。試試10個執行器,每個執行器有2個內核,1G RAM,驅動器內存3G。記住你的操作系統和任何其他應用程序也需要RAM! –
嗨,本,感謝您幫助我在這裏,我嘗試了推薦的配置,但我仍然得到相同的錯誤。 https://www.dropbox.com/s/3ph9etmjl6tylib/javaheapspaceerror_2.txt?dl=0 –