Spark_1 Spark与MapReduce对比

本文指出MapReduce存在操作复杂、计算效率低、不适合迭代和实时流式处理等缺陷,且各框架独立造成资源浪费。同时介绍了Spark的特点,如计算速度快,基于内存、线程和DAG;易于使用,支持多语言和交互式命令行;具有通用性,可一站式处理;能在多种环境运行并访问多样数据源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MapReduce的缺陷

操作复杂

开发起来:因为MapReduce只有map、reduce两种算子。
1. low-level 低级别的。
2. constrained 有很多限制 (虽然可以使用一些类似Hive之类的框架来弥补)
并且单元测试也很麻烦

计算效率低

  1. MapReduce是属于进程级别:MapTask ReduceTask
    虽然有JVM复用,但还是效率不高

  2. 频繁的IO: 因为MapReduce的作业一般都是串起来的作业,chain,一个作业的输出作为下一个作业的输入…并且作业的数据一般都会存储在HDFS上,这样会有频繁的磁盘和网络的IO。数据落地的话,是需要三个副本的。

  3. MapReduce的所有任务都需要序列化
    排序:MapReduce每个场景都需要排序的,但是很多时候都是没有必要的
    面试题:key类型是实现什么接口?
    writable 要执行序列化的 read方法和wirte方法
    writablecomparable 排序比较的

  4. Memory:MapReduce基于内存做处理,但是是有限的

所以说MapReduce性能是很低的,迭代次数比较多的话,性能会不好

不适合迭代处理

数据挖掘,机器学习,图计算之类的,都需要很多迭代操作,所以不适合用 MapReduce 去做

不适合实时流式处理,只能离线处理

很多框架都各自为战,浪费了很多资源,开发也慢,运维也不方便

Spark的特点

综述:Spark is a fast and general engine for large-scale data processing(数据处理)
fast + general engine
fast体现在:
write code fast :Java/Scala/Python/R并支持interactive shell;
run fast : memory / DAG / Thread Model /sort可以设置成无。

计算速度快

  1. memory RDD cash
  2. thread 基于线程
  3. sort 可以设置的
  4. pipeline(流水线) rdd.map.fliter…collect
    如果是MapReduce,maptask reducetask 遇到就执行,是立刻执行的
    而 spark 是将很多操作串起来,就是一张DAG图(有向无环图)
    rdd.map.fliter…这些操作再多是不会执行的,需要触发action操作才可以来执行。
    例如:rdd.map.fliter…collect
    遇见就执行,先执行map,读取写入操作完了,执行fliter,读取写入…
    而对于Spark来说,是基于rdd来计算的
    rdd里有分区,每一个操作都是载依赖,有action了,直接在这个分区(partition)中kaka就执行,就减少很多中间数据落地的操作(写入读取)

易于使用

使用Java,Scala,Python,R开发代码块+测试块

80+ high-level operator:80多种高级别的算子

nteractively 交互式命令行(测试快)

通用性

一站式处理(但是也不是万能的,只能解决一定场景的)
Combine SQL,streaming,and complex analytics
spark powers a stack of libraries including SQL and DataFrams,MLlib for machine learning,GraphX,and Spark Streaming.

Runs Everywhere

on Hadoop(Yarn),Mesos,standalone,or in the cloud
can access diverse data sources(访问各种数据源)
including HDFS,Cassdandra,HBase,S3(Amazon)
这些都是外部数据源,如果只是跑一个SQL在Spark之上,就太low了,主要就是外部数据源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值