2017-04-26 21 views
0

私は、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、ローカルホスト、エグゼキュータドライバ)でタスク0.0を失った:java.lang.OutOfMemoryError:Javaヒープスペース、そのエグゼキュータのメモリが不足している可能性があります。

私は、実行メモリを増やして、ドライバメモリを減らそうとしましたが、助けにならなかった、私はまだ同じエラーが発生しています。エラーの

スタックトレース:https://www.dropbox.com/s/g2vlmtjo8bb4gd1/javaheapspaceerror.txt?dl=0

答えて

0

あなたはアルゴリズムの多く:-)チェックポイントディレクトリを設定する必要があり、彼らは集中的なステージング・データが非常にあるときにRDD系統は、そうでない場合はクレイジーになり、これらの問題を引き起こしているので、これを使用しています。

+0

このプロパティを設定しましたが、引き続き同じJavaヒープスペースエラーが発生しています。 –

+0

ジョブの設定を更新してください。あなたが述べたものはあなたのマシン上では物理的に不可能です(4G = 80Gのエグゼクティブ20人 - ドライバーのRAMとコンテナのオーバーヘッドを含む前に48個しかありません)。 Sparkは設定をガイドとして使用し、可能な限りベストを尽くします。なぜあなたはそんなにドライバーメモリーを必要としますか? ALSはこれをまったく使用しないので、これを減らすことを検討したいと思います。 2つのコアと1GのRAMを持つ10人のエグゼキュータを、ドライバメモリ3Gで試してみてください。お使いのOSや他のアプリもRAMが必要です。 –

+0

こんにちはベン、ここで私を助けてくれてありがとう、私は推奨された設定を試みたが、私はまだ同じエラーが発生しています。 https://www.dropbox.com/s/3ph9etmjl6tylib/javaheapspaceerror_2.txt?dl=0 –

関連する問題