我最近正在学习Apache Spark。我通过brew在我的Hackintosh (El Capitan)上安装了Hadoop和Apache Spark, CPU为i7-4790S, RAM为16GB。我运行SparkPi示例如下:
/usr/local/Cellar/apache-spark/1.6.1/bin/run-example SparkPi 1000
用了43秒完成。
16/06/27 00:54:05 INFO DAGScheduler: Job 0 finished: reduce at SparkPi.scala:36, took 43.165503 s
我有另一台电脑运行Ubuntu 16.04, CPU为i3-4170T,内存为16GB。我设置了一个Docker容器来运行Hadoop和Spark(与OS X上的版本相同),有趣的是,完成相同的请求只花了18秒。
16/06/28 16:22:49 INFO scheduler.DAGScheduler: Job 0 finished: reduce at SparkPi.scala:36, took 18.264482 s
为什么在OS X上有更快CPU的Spark比在Ubuntu上运行得慢得多?
对于真正的Spark作业,您经常会遇到不同平台上的性能差异,这是由于您使用的任何构建版本中本机库可用性的差异。
在您的特殊情况下,我更怀疑SparkPi示例是否真的以任何有意义的方式依赖于本机库,并且如果您没有多次运行作业,那么它很可能只是被记录为方差,但是仍然可以想象,本机库可能会影响一些昂贵的调度或文件系统访问操作,甚至可以在SparkPi示例中显示出来。