2017-01-25 2 views
1

Мы получаем следующую ошибку после запуска «pio train». Он работает около 20 минут и не на сцене 26.Prediction.io - pio train сбой OutOfMemoryError

[ERROR] [Executor] Exception in task 0.0 in stage 1.0 (TID 3) 
[ERROR] [SparkUncaughtExceptionHandler] Uncaught exception in thread Thread[Executor task launch worker-0,5,main] 
[ERROR] [SparkUncaughtExceptionHandler] Uncaught exception in thread Thread[Executor task launch worker-4,5,main] 
[WARN] [TaskSetManager] Lost task 2.0 in stage 1.0 (TID 5, localhost): java.lang.OutOfMemoryError: Java heap space 
    at com.esotericsoftware.kryo.io.Output.<init>(Output.java:35) 
    at org.apache.spark.serializer.KryoSerializer.newKryoOutput(KryoSerializer.scala:80) 
    at org.apache.spark.serializer.KryoSerializerInstance.output$lzycompute(KryoSerializer.scala:289) 
    at org.apache.spark.serializer.KryoSerializerInstance.output(KryoSerializer.scala:289) 
    at org.apache.spark.serializer.KryoSerializerInstance.serialize(KryoSerializer.scala:293) 
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:239) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Наш сервер о 30GB памяти, но о 10gb принимается HBase + elasticsearch.

Мы пытаемся обработать около 20 миллионов записей, созданных Universal Recommendender.

Я пытался следующую команду, чтобы увеличить память исполнителя/драйвера, но это не помогло:

pio train -- --driver-memory 6g --executor-memory 8g 

Какие варианты могли бы попытаться решить эту проблему? Возможно ли обработать такое количество событий на сервере с таким объемом памяти?

ответ

1

Вертикальное масштабирование может занять вас только до сих пор, но вы можете попытаться увеличить доступную память, если это AWS, остановив и перезапустив более крупный экземпляр.

CF смотрит на множество данных. Поскольку Spark получает скорость, делая вычисления в памяти (по умолчанию), вам потребуется достаточно памяти для хранения всех ваших данных, распространяемых по всем рабочим Spark, и в вашем случае у вас есть только 1.

Другое дело, что приходит на ум, что это ошибка Kryo так что вы можете попробовать увеличить размер буфера Kryo немного, который выполнен в engine.json

Также есть группа Google для сообщества поддержка здесь: https://groups.google.com/forum/#!forum/actionml-user

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