我正在探索Spark并发现与Spark Standalone(简称SS)不一致。这里有一些关于我的集群的线索:
我通过python和scala运行完全相同的工作。当作为python脚本提交作业时,SS在执行者进程之间共享任务。但是,当作为scala脚本提交作业时,SS会异常共享任务。截图将更好地解释我猜:
的Python:
Scala的:
使用scala,作业运行速度明显加快(约55分钟)。使用python工作大约需要90分钟。我认为这个结果的原因是执行者之间的任务共享。
我的问题是,为什么SS与scala和python表现不同?当我使用python时,我如何使SS表现得像我使用scala时的行为?
答案 0 :(得分:1)
无论使用Python还是Scala,任务调度都完全相同。性能上的差异是由于Python不得不通过套接字将所有内容挑选到一个运行Python代码的单独Python进程。
鉴于上述情况,我认为这是浪费时间试图弄清楚为什么任务号码以某种方式分配。它可以通过排队理论来解释(不同的任务时间分布导致不同的任务计数分布)。如果你想弄清楚,我建议升级到Spark 1.4.0,它提供了有关任务调度时间表的更多细节。 (Spark 1.2.1现在还很老了。)