怎样提升 Spark 中排序的性能?

Cloudera和Intel的工程师们正在就提升Spark shuffle过程的可扩展性和可靠性方面展开合作。下面是该方案设计上的细节:

像MapReduce和Apache Spark(Apache Hadoop的下一代数据处理引擎)这样的计算引擎,和高度并行系统之间的主要区别就是对”多对多”操作的支持。作为分布式引擎,MapReduce和Spark要对分区会跨越集群的数据集合的子分片进行操作。很多操作一次只处理集中的数据,可以完全在分区内部完成。多对多的操作必须把整个数据集视作整体;每个输出记录的内容可能依赖于来自于不同分区的记录。对Spark而言,groupByKey, sorbByKey, 以及 reduceByKey  就是常见的这类操作。

对分布式计算引擎而言,”shuffle”指的是多对多操作中数据的重新分区和汇聚。很容易理解,我们在实际生产环境的Spark部署中观察到的大多的性能、可伸缩性和可靠性问题,都出现在shuffle过程之中。

Cloudera和Intel的工程师们正在就提升Spark的shuffle过程展开合作,以保证可以更快、更可靠地处理大量数据集。尽管Spark在许多方面都拥有对MapReduce的优势,但是在可伸缩性和可靠性方面它还是追赶者。我们从经