随着数据量的增加,在EMR上使用苏打水进行GBM培训失败

时间:2017-02-14 18:24:05

标签: apache-spark yarn emr h2o sparkling-water

我正在尝试使用Sparkling Water在具有60个c4.8xlarge节点的EMR群集上训练GBM。该过程可成功运行到特定数据大小。一旦我达到某个数据大小(训练样例的数量),该过程就会在SpreadRDDBuilder.scala的收集阶段冻结,并在一小时后死亡。在发生这种情况时,网络内存继续增长,而Spark阶段(见下文)没有进展,CPU使用率和网络流量也很少。我已经尝试增加执行程序和驱动程序内存和num-executors,但我在所有配置下都看到完全相同的行为。

感谢您查看此内容。这是我第一次在这里发帖,如果您需要更多信息,请告诉我。

参数

curses

我尝试过的其他参数没有成功:

spark-submit --num-executors 355 --driver-class-path h2o-genmodel-3.10.1.2.jar:/usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/* --driver-memory 20G --executor-memory 10G --conf spark.sql.shuffle.partitions=10000 --conf spark.serializer=org.apache.spark.serializer.KryoSerializer --driver-java-options -Dlog4j.configuration=file:${PWD}/log4j.xml --conf spark.ext.h2o.repl.enabled=false --conf spark.dynamicAllocation.enabled=false --conf spark.locality.wait=3000 --class com.X.X.X.Main X.jar -i s3a://x

Spark UI

 conf spark.ext.h2o.topology.change.listener.enabled=false
 conf spark.scheduler.minRegisteredResourcesRatio=1
 conf spark.task.maxFailures=1
 conf spark.yarn.max.executor.failures=1

驱动程序日志

collect at SpreadRDDBuilder.scala:105 118/3551
collect at SpreadRDDBuilder.scala:105 109/3551
collect at SpreadRDDBuilder.scala:105 156/3551
collect at SpreadRDDBuilder.scala:105 151/3551
collect at SpreadRDDBuilder.scala:105 641/3551

纱线容器的stderror

17/02/13 22:43:39 WARN LiveListenerBus: Dropped 49459 SparkListenerEvents since Mon Feb 13 22:42:39 UTC 2017
 [Stage 9:(641 + 1043) / 3551][Stage 10:(151 + 236) / 3551][Stage 11:(156 + 195) / 3551]

1 个答案:

答案 0 :(得分:0)

问题在于将非常高的基数(数亿个唯一值)字符串列转换为枚举。从数据框中删除这些列解决了该问题。有关详细信息,请参阅此处:https://community.h2o.ai/questions/1747/gbm-training-with-sparkling-water-on-emr-failing-w.html