Spark_1 Spark与MapReduce对比

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了,主要就是外部数据源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值