Apache spark pyspark中的Java内存不足错误

Apache spark pyspark中的Java内存不足错误,apache-spark,pyspark,Apache Spark,Pyspark,我的问题相当简单:当我在pyspark中运行RandomForest.trainRegressor时,JVM内存不足。我使用了大约3GB的训练数据、77个功能,并将numTrees设置为15。如果我将numTrees设置为15或更多,则训练将失败,并出现内存不足错误(如下所示): 我使用的是spark1.5,我的参数是: spark-submit --master yarn-client --conf spark.cassandra.connection.host=x.x.x.x \ -

我的问题相当简单:当我在
pyspark
中运行
RandomForest.trainRegressor
时,JVM内存不足。我使用了大约3GB的训练数据、77个功能,并将
numTrees
设置为15。如果我将
numTrees
设置为15或更多,则训练将失败,并出现内存不足错误(如下所示):

我使用的是
spark
1.5,我的参数是:

spark-submit --master yarn-client --conf spark.cassandra.connection.host=x.x.x.x \
    --jars /home/retail/packages/spark_cassandra_tool-1.0.jar,/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hive/lib/HiveAuthHook.jar,/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hbase/hbase-common.jar,/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hbase/hbase-client.jar,/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hbase/hbase-server.jar,/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/spark/lib/spark-examples.jar \
    --num-executors 30 --executor-cores 4 \
    --executor-memory 20000M --driver-memory 200g \
    --conf spark.yarn.executor.memoryOverhead=5000 \
    --conf spark.kryoserializer.buffer.max=2000m \
    --conf spark.kryoserializer.buffer=40m \
    --conf spark.driver.extraJavaOptions=\"-Xms2048m -Xmx2048m -XX:+DisableExplicitGC -Dcom.sun.management.jmxremote -XX:PermSize=512m -XX:MaxPermSize=2048m -XX:MaxDirectMemorySize=5g\" \
    --conf spark.driver.maxResultSize=10g \
    --conf spark.port.maxRetries=100
  • 在我看来,这些树应该按系列进行训练,那么为什么它们的数量会产生更高的内存负载呢

  • 如果我想成功训练300棵树,我应该如何设置
    spark
    参数以正确使用
    RandomForest.trainRegressor
    功能


  • 树需要聚合,因此更多的树可能导致OOM。您的集群并不小。您的模型的深度是多少?参数maxDepth设置为20,我将训练集减少为300M,运行很长时间后仍然失败。并且我将java堆的参数更改为:-xms1000m-xmx1000mtree num设置为300
    spark-submit --master yarn-client --conf spark.cassandra.connection.host=x.x.x.x \
        --jars /home/retail/packages/spark_cassandra_tool-1.0.jar,/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hive/lib/HiveAuthHook.jar,/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hbase/hbase-common.jar,/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hbase/hbase-client.jar,/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hbase/hbase-server.jar,/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/spark/lib/spark-examples.jar \
        --num-executors 30 --executor-cores 4 \
        --executor-memory 20000M --driver-memory 200g \
        --conf spark.yarn.executor.memoryOverhead=5000 \
        --conf spark.kryoserializer.buffer.max=2000m \
        --conf spark.kryoserializer.buffer=40m \
        --conf spark.driver.extraJavaOptions=\"-Xms2048m -Xmx2048m -XX:+DisableExplicitGC -Dcom.sun.management.jmxremote -XX:PermSize=512m -XX:MaxPermSize=2048m -XX:MaxDirectMemorySize=5g\" \
        --conf spark.driver.maxResultSize=10g \
        --conf spark.port.maxRetries=100