  Spark has been established as an attractive platform for big data analysis,
since it manages to hide most of the complexities related to parallelism, fault
tolerance and cluster setting from developers. However, this comes at the
expense of having over 150 configurable parameters, the impact of which cannot
be exhaustively examined due to the exponential amount of their combinations.
The default values allow developers to quickly deploy their applications but
leave the question as to whether performance can be improved open. In this
work, we investigate the impact of the most important of the tunable Spark
parameters on the application performance and guide developers on how to
proceed to changes to the default values. We conduct a series of experiments
with known benchmarks on the MareNostrum petascale supercomputer to test the
performance sensitivity. More importantly, we offer a trial-and-error
methodology for tuning parameters in arbitrary applications based on evidence
from a very small number of experimental runs. We test our methodology in three
case studies, where we manage to achieve speedups of more than 10 times.
