V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
anonymoustian
V2EX  ›  Hadoop

MapReduce 和 Spark 的关系是什么? 看了很多资料都讲不明白,能不能通俗一点,谢谢

  •  
  •   anonymoustian · 2016-02-24 16:31:28 +08:00 · 6215 次点击
    这是一个创建于 3180 天前的主题,其中的信息可能已经有所发展或是发生改变。
    17 条回复    2016-02-25 16:46:35 +08:00
    newton108
        1
    newton108  
       2016-02-24 17:03:56 +08:00   ❤️ 1
    菜鸟来回答: Spark 用内存,比 MapReduce 用硬盘速度快。
    est
        2
    est  
       2016-02-24 17:06:40 +08:00   ❤️ 1
    mapreduce 是基于 hdfs 的一种姿势。本质就是处理文件。

    spark 是基于 rdd 的另一种姿势。本质是处理 data frame 。
    HunterPan
        3
    HunterPan  
       2016-02-24 17:10:46 +08:00   ❤️ 1
    spark 可以自动串联多个 job ,普通的 mapreduce 则需要人工
    Valyrian
        4
    Valyrian  
       2016-02-24 17:14:23 +08:00 via iPhone   ❤️ 1
    Spark 就是自动化 MapReduce
    anonymoustian
        5
    anonymoustian  
    OP
       2016-02-24 17:22:34 +08:00
    @est mapreduce 是 hadoop 吗?
    est
        6
    est  
       2016-02-24 17:28:14 +08:00   ❤️ 1
    @anonymoustian 蛤蛤,指正得对!
    swolf119
        7
    swolf119  
       2016-02-24 17:54:12 +08:00
    mapreduce 传教士
    spark 后入, 69 ,刚等
    zluyuer
        8
    zluyuer  
       2016-02-24 17:59:38 +08:00   ❤️ 1
    MapReduce 是一种处理数据的思路,经典实现是 Hadoop 框架,实现方式是离线批处理,也就是中间结果会写入磁盘,然后由框架的不同部分读取。 Spark 的思路与此类似,不同的是尽量在内存中存储中间结果(内存不足时也会写入磁盘),加速了计算过程。由于内存越来越廉价, Spark 代表了未来的一种趋势。另外一个区别的地方在于 Hadoop 主力语言是 Java ,而 Spark 平等兼容 Java / Scala / Python 。
    min
        9
    min  
       2016-02-24 20:46:34 +08:00   ❤️ 1
    google 出了个 paper 说明了 mr 的原理,但是没有放出内部的 mr 框架实现
    yahoo 按照 paper 做了 hadoop ,实现了 mr ,不过效率一般
    spark 提供了一系列 api 用来处理数据,包括了 mr , spark 做 mr 效率比 hadoop 高

    #2 楼说得不是很准确
    hdfs 是 hadoop 框架下用来存超大数据的分布式存储系统实现, spark 也可以存取 hdfs 中的数据
    spark data frame 是基于 spark rdd 的
    Landarky
        10
    Landarky  
       2016-02-24 22:05:40 +08:00
    spark 官网首页就是对比。。没有什么比它更直接了
    del1214
        11
    del1214  
       2016-02-25 09:25:12 +08:00
    @swolf119 老司机求带
    wwttc
        12
    wwttc  
       2016-02-25 10:18:49 +08:00   ❤️ 1
    1. MapReduce 是一个编程模型,也是一个处理超大规模数据集的算法模型实现。使用 Mapreduce 模型,用户只需实现 Map 和 Reduce 函数,就可以轻松的实现大规模并行化计算。

    2. Spark 与 Hadoop 都是大数据框架。 Spark 的大部分操作都是在内存中,而 Hadoop 的 MapReduce 任务会在每次操作之后都将数据写回到物理存储介质中。因此, Spark 的速度会比 Hadoop 快很多。 Spark 除了提供 Map 和 Reduce 操作之外,还支持 SQL 查询、流数据 Spark Streaming 、图处理 GraphX 以及常用的机器学习库 MLib 等。

    Spark 经常运行于 Hadoop 上(因为 Spark 本身并没有分布式存储系统,需要 Hadoop 的 HDFS ),可以简单理解为 Spark 可以取代 Hadoop 中的 MapReduce 。
    anonymoustian
        13
    anonymoustian  
    OP
       2016-02-25 11:28:54 +08:00
    @wwttc 请问这句话怎么理解? Spark 经常运行于 Hadoop 上 ? 既然 Spark 与 Hadoop 都是大数据框架,那么 Spark 是如何在一个大数据框架上运行另外一个大数据框架的?
    qqzj
        14
    qqzj  
       2016-02-25 12:25:25 +08:00
    @anonymoustian Hadoop 是一个数据处理框架,包含很多组件, Mapreduce 是数据处理的模型,本质上是函数式编程, HDFS 是 Hadoop 框架下的大数据存储组件,用来存储海量数据的。 Spark 是一种新的数据处理模型,在 MR 的基础上做了很多改进,但在某些情况下,如内存不足其也会退化到 MR 。 Hadoop 2.0 之后采用 Yarn 来做资源管理,将资源管理和数据计算进一步组件化,既然 MR 是一个组件,当然可以用 Spark 来替换 MR 做数据处理,所以说 Spark 运行在 Hadoop 上。现在 Spark 社区很火热,出了很多东西,做大数据的得跟进下
    m8syYID5eaas8hF7
        15
    m8syYID5eaas8hF7  
       2016-02-25 13:47:06 +08:00
    @zluyuer hadoop 不是也有其他语言的 api 的吗
    zluyuer
        16
    zluyuer  
       2016-02-25 14:52:15 +08:00
    @LINEX 只能用 Hadoop Streaming 通过 std io 桥接数据流,不是原生语言支持
    m8syYID5eaas8hF7
        17
    m8syYID5eaas8hF7  
       2016-02-25 16:46:35 +08:00
    @zluyuer 额,我一直还以为 spark 的 python api 也是用的 std io 桥接的。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2907 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 02:39 · PVG 10:39 · LAX 18:39 · JFK 21:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.