Prediction.io - pio列车因OutOfMemoryError而失败

时间:2017-01-25 16:41:51

标签: apache-spark predictionio

运行" pio train"后,我们收到以下错误。它工作大约20分钟,并在第26阶段失败。

[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的内存,但hbase + elasticsearch大约需要10GB。

我们正在尝试处理由Universal Recommender创建的大约2千万条记录。

我已经尝试了以下命令来增加执行程序/驱动程序内存,但它没有帮助:

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

我们可以尝试哪些方案来解决问题?是否可以在具有该内存量的服务器上处理该数量的事件?

1 个答案:

答案 0 :(得分:1)

垂直扩展只能到目前为止,但您可以通过停止并使用更大的实例重新启动来尝试增加可用内存(

)。 CF看了很多数据,因为Spark通过内存计算(默认情况下)获得了它的速度,你将需要足够的内存来保存你所有的数据传播到所有Spark工作者和你的情况你只有1个。

我想到的另一件事是这是一个Kryo错误,所以你可能会尝试增加一点Kryo缓冲区大小,这是在engine.json中配置的

此处还有一个Google社区支持社区:https://groups.google.com/forum/#!forum/actionml-user