廖旺坚,黄永峰,包从开
(1.清华大学电子工程系,北京 100084;2.清华大学信息科学与技术国家实验室(筹),北京 100084)
集群并行计算是指在大量性能较低、可靠性较差的通用计算机上并行完成巨大的计算任务,是大数据时代满足低成本/高计算能力需求的最佳选择。Hadoop是一个开源的集群并行计算框架,包含MapReduce计算模型和Hadoop分布式文件系统HDFS(Hadoop Distributed File System)存储模型,具有硬件要求低、吞吐量大、容错性好的特点,满足了大数据计算的需要,成为当前工业界最流行的计算框架,也是学术界研究热点。但是,随着数据量迅猛增长,计算复杂度不断增加,计算实时性越来越高,Hadoop计算速度较慢的弱点逐渐显现。于是,Zaharia等[1 - 3]基于Hadoop,在前人不断改进的基础上重新实现其调度模型,形成了Spark计算框架。
Spark是一个快速、通用的大规模数据处理引擎[4],具有快速、易用、通用、兼容性好的特点。它使用有向无环图DAG(Directed Acyclic Graph)进行作业调度,根据依赖关系将不同作业分解成大量子任务组成的DAG,减少了不同作业之间的数据传递过程,并且将前后作业间的中间数据使用内存缓存传递,使用线程池运行计算任务,使得计算速度相比传统的Hadoop MapReduce有100倍量级的提升[3]。
目前对Spark性能的研究主要有三类:第一类是在Spark模型层面对作业调度、底层资源管理等方面做改进和优化;第二类是在提交Spark作业时改变不同的参数,找到最优值;第三类是在应用层面,编程时使用不同的实现方法,提高作业运行性能。Ousterhout等[5]对Spark性能做了详尽测试和分析,认为CPU可以优化的地方较少,而网络使用远未达到饱和状态,其优化对性能的影响很小,但该文献关于内存对性能的影响很少提及。……