【发布时间】:2015-06-24 13:16:16
【问题描述】:
我正在探索 Spark,发现与 Spark Standalone(简称 SS)不一致。这里有一些关于我的集群的线索:
- d125.dtvhadooptest -> 最佳数据节点
- d124.dtvhadooptest
- d211.dtvhadooptest -> 最差数据节点
我正在通过 python 和 scala 运行完全相同的工作。当作业作为 python 脚本提交时,SS 在执行程序进程之间几乎平等地共享任务。但是,当作业作为 scala 脚本提交时,SS 会异构地共享任务。我猜屏幕截图会更好地解释它:
Python:
斯卡拉:
使用 scala,作业运行速度明显加快(大约 55 分钟)。使用 python 作业时大约需要 90 分钟。而且我认为造成这种结果的原因是执行者之间的任务共享。
我的问题是,为什么 SS 与 scala 和 python 的行为不同?以及如何让 SS 在我使用 python 时表现得像我在使用 scala 时一样?
【问题讨论】:
-
我不知道为什么它分配任务的方式不同,但至于时间差异,由于Spark是用scala编写的,所以scala总是会比python执行得更好。
-
我明白你的意思,但我认为让集群管理器(在我的例子中为 Spark Standalone)执行类似的任务分配可以减少 python 和 scala 之间的性能差异。
标签: hadoop apache-spark pyspark