我已经开始学习Spark并且目前正在运行WordCount实验(统计文本文件中每个单词出现的次数)。 该文件被放置在网络挂载的共享文件系统中。 我有一个集群1主和5执行者(每个都有:处理器AMD Opteron 1.7 Ghz,24核心,48GB RAM,250GB存储)。Apache Spark性能
我已经离开了星火的默认配置为
我已经注意到了,我第一次运行该程序,我得到一个较长的执行时间的时刻(如spark.executor.memory =512米),这降低在第二次,第三次运行。 例如,对于一个40GB的文件的执行时间为:
- 第一次执行:419.769396小号
- 第二次执行:176.242206小号
- 第三个执行:134.411345小号
- 四执行:126.052158小号
- 第五次执行:126.287600 s
我正在运行它:
> ./spark-submit --class com.spark.example.WordCount --master spark://master:7077 wordCountOriginal.jar /data/input40GB
WordCount的代码与Spark提供的示例完全相同。
我不明白为什么第一次执行和下一次执行之间会有如此大的差异。我认为缓存是答案,但从我读的Spark缓存中执行结果中的中间结果,但在这里有不同的执行。
谢谢!
我认为这种差异可能更多地沿着将可重用数据对象进行池化或在活动实例的内存中保持加载类的方式。 (免责声明:我没有与Spark合作过)。 –