第3章 Spark计算模型
创新都是站在巨人的肩膀上产生的,在大数据领域也不例外。微软的Dryad使用DAG执行模式、子任务自由组合的范型。该范型虽稍显复杂,但较为灵活。Pig也针对大关系表的处理提出了很多有创意的处理方式,如flatten、cogroup。经典虽难以突破,但作为后继者的Spark借鉴经典范式并进行创新。经过实践检验,Spark的编程范型在处理大数据时显得简单有效。<Key,Value>的数据处理与传输模式也大获全胜。
Spark站在巨人的肩膀上,依靠Scala强有力的函数式编程、Actor通信模式、闭包、容器、泛型,借助统一资源分配调度框架Mesos,融合了MapReduce和Dryad,最后产生了一个简洁、直观、灵活、高效的大数据分布式处理框架。
与Hadoop不同,Spark一开始就瞄准性能,将数据(包括部分中间数据)放在内存,在内存中计算。用户将重复利用的数据缓存到内存,提高下次的计算效率,因此Spark尤其适合迭代型和交互型任务。Spark需要大量的内存,但性能可随着机器数目呈多线性增长。本章将介绍Spark的计算模型。