在纱线群集模式下,Spark应用程序需要花费多少时间

时间:2016-08-31 07:33:49

标签: scala apache-spark apache-spark-mllib

我有一个Spark应用程序,它在libsvm格式的稀疏矩阵上使用Gradient Boosting Trees。

val model = GradientBoostedTrees.train(trainingData, boostingStrategy)
这里trainingData是RDD [LabeledPoint]。 hadoop上的大小约为37 MB。

另见两张图片 Start After some time

第一个是从它开始的时候开始的。然后我拍了一段时间的屏幕截图。

如果你看一下个别任务 - 你会看到毫秒和秒。如果我把它们加起来,它们会给我一些时间。但是我的应用程序在第二次屏幕截图时运行了1.5小时。

所以我的问题是

  1. 我怎么知道90%的时间(不在用户界面上)被带到哪里?

  2. 如何在Spark上强化Gradient Boosting的这个过程。如果你看到大部分任务都是ML Lib和Decision Trees中发生的事情。我使用了5个分区 - 我应该增加它吗?还有多少?

  3. 数据不断增加,从37MB增加到19GB。为什么呢? - 这是一个问题吗?

  4. 经过一段时间,当我完成训练并尝试写出预测(折叠之外) - 我得到一个超过INT Max_Value的大小错误。原因是 - 似乎有太多的线被写出来了?是每个分区?

  5. 我必须训练GBT 300轮。我在3-4个小时的时间里进行了3轮的POC。是否可以使用MLLib在Spark中进行300轮Gradient Boosting?

  6. 我在scala 2.10.4和mllib 1.5.2

1 个答案:

答案 0 :(得分:0)

问题2:

GBT只迭代地训练一棵树。如果您想加快这个过程,请尝试使用随机森林。 RF以平行方式训练一组树木,这比GBT快。