首页 > 编程知识 正文

Spark和Hadoop的区别(与Mapreduce的对比)

时间:2023-05-06 01:54:59 阅读:284473 作者:3524

Spark和Hadoop的优缺点(Mapreduce的对比)

Spark是一个可用于大规模数据处理的一个通用的引擎(核心),且支持多种语言(Java、Scala、python等),而Hadoop中使用的Mapreduce也是用于大规模数据的并行处理,但计算延迟较高,实时性差,满足不了快速计算。更适合离线大规模数据处理。
Hadoop是一个生态系统,所以一般我们所说的Spark和Hadoop的对比,是指spark和Hadoop中计算框架mapreduce的对比。 Hadoop中的其他组件依然是十分优秀的。
这里我们对Mapreduce和Spark进行一个简单的对比和优缺点分析。

1.Mapreduce操作类型较为局限

mapreduce每次处理任务时都要将任务划分为MapReduce两个操作。数据操作类型较为局限,而对于实际要处理的数据中,许多数据较为复杂,难以用两个操作进行处理。而Spark提供了多种操作类型(包括Map和Reduce操作)

2.Mapreduce IO开销大

mapreduce在处理数据时的操作是基于磁盘处理的,包括执行时读取数据和执行完成往磁盘写入数据,非常消耗资源。而Spark是内存计算机制,在spark工作时是将处理中间结果放入内存中,避免了频繁地从磁盘中读取数据。可想而知,spark 的运算速率会远远大于mapreduce(这就好比固态硬盘和机械硬盘);

3.Mapreduce高延迟

mapreduce处理任务时会将计算分成一系列需要按顺序执行的处理任务,前一个任务未完成下一个任务就无法开始,而且在mapreduce处理任务时,任务衔接时由于涉及到从硬盘读取或者存储数据的操作,会产生较高的延迟。使得mapreduce无法很好地处理较为复杂且任务多的项目。而Spark的任务调度执行机制是基于有向无环图(DAG),其任务调度执行机制优于mapreduce的迭代任务运算机制。

Spark最大的特点就是在计算数据时,将中间结果存在内存中,大大地减少了io开销,所以其更适合迭代运算数据量较大的机器学习运算之类的处理。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。