谁能讲清楚Spark之与MapReduce的对比

我们已经知道Spark是如何设计和实现数据处理流程的,这里我们 再深入思考一下,为什么Spark能够替代MapReduce成为主流的大数据处理框架呢?对比MapReduce,Spark究竟有哪些优势?

一 优势

1 通用性:

        基于函数式编程思想,MapReduce将数据类型抽象为,k,v格式,并将数据处理操作抽象为map()和 reduce()两个算子,这两个算子可以表达一大部分数据处理任务。因 此,MapReduce为这两个算子设计了固定的处理流程map—Shuffle—reduce。
        但到数据处理流程其实多种多样,map—Shuffle—reduce模式只适用于表达类似foldByKey()、 reduceByKey()、aggregateByKey()的处理流程,而像cogroup()、join()、cartesian()、coalesce()的流程需要更灵活的表达方式。

Spark在两方面进行 了优化改进:

1)将输入/输出、中间数据抽象表达为一个数据结构RDD,相当于在Java中定义了class,然后可以根据不同类型的中间数据,生成不同的RDD(相当于Java中生成不同类型的object)。中间数据变得可定义、可表示、可操作、可连接。

2)通过可定义的数据依赖关系来灵活连接中间数据。在MapReduce中,数据依赖关系只有ShuffleDependency。而Spark数据处理操作包含了多种多样的数据依赖关系,Spark对这些数据依赖关系进行了分类&

你可能感兴趣的:(大数据之路,spark,mapreduce,大数据)