Spark的性能瓶颈

Performance bottleneck of Spark

发表于NSDI 2015的一篇论文"Making Sense of Performance in Data Analytics Frameworks"给出的结论是CPU(不是IO或网络)是Spark的性能瓶颈。 Kay 在 Spark 上做了一些实验,包括 BDbench、TPC-DS 和一个生产工作负载(仅使用 Spark SQL?)在本文中。我想知道这个结论是否适用于一些基于Spark构建的框架(比如Streaming,通过网络接收连续的数据流,网络IO和磁盘都会承受很高的压力)。

这实际上取决于您执行的作业。你需要分析你写的作业,看看压力和瓶颈在哪里。 例如,我最近有一份工作没有足够的工作内存,所以它也不得不溢出到磁盘,这大大增加了它的整体 IO。当我删除内存问题时,CPU 是下一个问题。更严格的代码将问题转移到 IO 等

网络和磁盘在 Spark Streaming 中可能承受的压力较小,因为流通常是 checkpointed,这意味着所有数据通常不会永远保留。

但归根结底,这是一个研究问题:解决这个问题的唯一方法是进行基准测试。凯的密码是 open-source.