我的应用程序有效运行吗?

时间:2016-01-19 08:43:31

标签: performance apache-spark apache-spark-mllib

这个问题是通用的,可以扩展到除Spark&之外的其他框架或上下文。机器学习算法。

无论细节如何,从高级别的角度来看,代码都应用于标记文本文档的大型数据集。它通过9次迭代的交叉验证来调整Logistic回归多类分类器的一些参数。

预计这种机器学习处理在时间和资源方面会很昂贵。

我现在正在运行代码,一切似乎都没问题,除了我不知道我的应用程序是否有效运行

我无法找到指导说明对于某种类型和数量的数据,对于某些类型的处理和计算资源,处理时间应该大致为......

是否有任何方法可以帮助判断我的应用程序运行缓慢或快速,还是纯粹是经验问题?

2 个答案:

答案 0 :(得分:1)

我有同样的问题,我没有找到真正的答案/工具/方式来测试我的表现只是“只在我的应用程序内部”的表现。

我的意思是,据我所知,没有像速度测试或互联网连接之类的工具: - )

我找到的唯一方法是用另一个堆栈重新编写我的应用程序(如果可能的话),以查看差异(就时间而言)是否太大。

否则,我发现非常有趣的2个主要资源,即使很老:

1)记住编码的一种4点指南:

Understanding the Performance of Spark Applications, SPark Summit 2013

2)来自Cloudera博客的2集文章,充分调整你的工作: episode1 episode2

希望它可以提供帮助

FF

答案 1 :(得分:1)

您的问题非常通用,因此我还要强调几个可以寻求性能优化的通用领域: -

  1. 调度延迟 - 在安排任务时是否存在重大的调度延迟?如果是,则可以分析原因(可能是您的群集需要更多资源等)。
  2. 群集利用率 - 您的工作是否利用可用的群集资源(如CPU,内存)?如果没有,那么再看看原因。 可能创建更多分区有助于加快执行速度。可能是序列化需要花费大量时间,因此您可以切换到Kyro Serialization
  3. JVM调整 - 如果发现异常,请考虑分析GC日志并进行调整。
  4. 执行程序配置 - 分析提供给执行程序的内存/核心。保存任务/作业处理的数据应该足够了。 你的DAG和
  5. 驱动程序配置 - 与执行程序相同,驱动程序还应具有足够的内存来保存某些功能的结果,例如collect()
  6. 改组 - 查看Shuffling花费的时间以及您的任务使用的数据位置。
  7. 初步调查需要以上所有内容,在某些情况下,它还可以在一定程度上提高您的工作绩效,但可能存在复杂的问题,解决方案将视具体情况而定。

    另请参阅Spark Tuning Guide