小编说:一提到大数据处理,相信很多人第一时间想到的是 Hadoop MapReduce。没错,Hadoop MapReduce 为大数据处理技术奠定了基础。近年来,随着 Spark 的发展,越来越多的声音提到了 Spark。而Spark相比Hadoop MapReduce有哪些优势?
本文选自《大数据处理之道》

Spark与Hadoop MapReduce在业界有两种说法 :一是 Spark 将代替 Hadoop MapReduce,成为未来大数据处理发展的方向 ;二是 Spark 将会和 Hadoop 结合,形成更大的生态圈。其实 Spark 和 Hadoop MapReduce 的重点应用场合有所不同。相对于 Hadoop MapReduce 来说,Spark 有点“青出于蓝”的感觉,Spark 是在Hadoop MapReduce 模型上发展起来的,在它的身上我们能明显看到 MapReduce的影子,所有的 Spark 并非从头创新,而是站在了巨人“MapReduce”的肩膀上。千秋功罪,留于日后评说,我们暂且搁下争议,来看看相比 Hadoop MapReduce,Spark 都有哪些优势。

1计算速度快
大数据处理首先追求的是速度。Spark 到底有多快?用官方的话说,“Spark 允许 Hadoop 集群中的应用程序在内存中以 100 倍的速度运行,即使在磁盘上运行也能快 10 倍”。可能有的读者看到这里会大为感叹,的确如此,在有迭代计算的领域,Spark 的计算速度远远超过 MapReduce,并且迭代次数越多,Spark 的优势越明显。这是因为 Spark 很好地利用了目前服务器内存越来越大这一优点,通过减少磁盘 I/O 来达到性能提升。它们将中间处理数据全部放到了内存中,仅在必要时才批量存入硬盘中。或许读者会问 :如果应用程序特别大,内存能放下多少 GB ?答曰 :什么? GB ?目前 IBM 服务器内存已经扩展至几 TB 了。

2应用灵活,上手容易
知道 AMPLab 的 Lester 为什么放弃 MapReduce 吗?因为他需要把很多精力放到Map和Reduce的编程模型上,极为不便。 Spark在简单的Map及Reduce操作之外,还支持 SQL 查询、流式查询及复杂查询,比如开箱即用的机器学习算法。同时,用户可以在同一个工作流中无缝地搭配这些能力,应用十分灵活。
Spark 核心部分的代码为 63 个 Scala 文件,非常的轻量级。并且允许 Java、Scala、Python 开发者在自己熟悉的语言环境下进行工作,通过建立在 Java、Scala、Python、SQL(应对交互式查询)的标准 API 以方便各行各业使用,同时还包括大量开箱即用的机器学习库。它自带 80 多个高等级操作符,允许在 Shell中进行交互式查询。即使是新手,也能轻松上手应用。

3兼容竞争对手
Spark 可以独立运行,除了可以运行在当下的 YARN 集群管理外,还可以读取已有的任何 Hadoop 数据。它可以运行在任何 Hadoop 数据源上,比如 HBase、HDFS 等。有了这个特性,让那些想从 Hadoop 应用迁移到 Spark 上的用户方便了很多。Spark 有兼容竞争对手的胸襟,何愁大事不成?

4实时处理性能非凡
MapReduce 更 加 适 合 处 理 离 线 数 据( 当 然, 在 YARN 之 后,Hadoop 也可以借助其他工具进行流式计算)。Spark 很好地支持实时的流计算,依赖Spark Streaming 对数据进行实时处理。Spark Streaming 具备功能强大的 API,允许用户快速开发流应用程序。而且不像其他的流解决方案,比如 Storm,Spark Streaming 无须额外的代码和配置,就可以做大量的恢复和交付工作。

5社区贡献力量巨大
从 Spark 的版本演化来看,足以说明这个平台旺盛的生命力及社区的活跃度。尤其自 2013 年以来,Spark 一度进入高速发展期,代码库提交与社区活跃度都有显著增长。以活跃度论,Spark 在所有的 Apache 基金会开源项目中位列前三,相较于其他大数据平台或框架而言,Spark 的代码库最为活跃。
Spark 非常重视社区活动,组织也极为规范,会定期或不定期地举行与 Spark相关的会议。会议分为两种 :一种是 Spark Summit,影响力极大,可谓全球 Spark顶尖技术人员的峰会,目前已于 2013—2015 年在 San Francisco 连续召开了三届Summit 大会 ;另一种是 Spark 社区不定期地在全球各地召开的小型 Meetup 活动。Spark Meetup 也会在我国的一些大城市定期召开,比如北京、深圳、西安等地,读者可以关注当地的微信公众号进行参与。

Spark 的适用场景
从大数据处理需求来看,大数据的业务大概可以分为以下三类 :
(1)复杂的批量数据处理,通常的时间跨度在数十分钟到数小时之间。
(2)基于历史数据的交互式查询,通常的时间跨度在数十秒到数分钟之间。
(3)基于实时数据流的数据处理,通常的时间跨度在数百毫秒到数秒之间。
目前已有很多相对成熟的开源和商业软件来处理以上三种情景 :第一种业务,可以利用 MapReduce 来进行批量数据处理 ;第二种业务,可以用 Impala 来进行交互式查询 ;对于第三种流式数据处理,可以想到专业的流数据处理工具 Storm。但是这里有一个很重要的问题 :对于大多数互联网公司来说,一般会同时遇到以上三种情景,如果采用不同的处理技术来面对这三种情景,那么这三种情景的输入/ 输出数据无法无缝共享,它们之间可能需要进行格式转换,并且每个开源软件都需要一支开发和维护团队,从而提高了成本。另外一个不便之处就是,在同一个集群中对各个系统协调资源分配比较困难。
那么,有没有一种软件可以同时处理以上三种情景呢? Spark 就可以,或者说有这样的潜力。Spark 同时支持复杂的批处理、互操作和流计算,而且兼容支持HDFS 和 Amazon S3 等分布式文件系统,可以部署在 YARN 和 Mesos 等流行的集群资源管理器上。
从 Spark 的设计理念(基于内存的迭代计算框架)出发,其最适合有迭代运算的或者需要多次操作特定数据集的应用场合。并且迭代次数越多,读取的数据量越大,Spark 的应用效果就越明显。因此,对于机器学习之类的“迭代式”应用,Spark 可谓拿手好戏,要比 Hadoop MapReduce 快数十倍。另外,Spark Streaming因为内存存储中间数据的特性,处理速度非常快,也可以应用于需要实时处理大数据的场合。
当然,Spark 也有不适用的场合。对于那种异步细粒度更新状态的应用,例如 Web 服务的存储或增量的 Web 爬虫和索引,也就是对于那种增量修改的应用模型不适合。Spark 也不适合做超级大的数据量的处理,这里所说的“超级大”是相对于这个集群的内存容量而言的,因为 Spark 要将数据存储在内存中。一般来说,10TB 以上(单次分析)的数据就可以算是“超级大”的数据了。
一般来说,对于中小企业的数据中心而言,在单次计算的数据量不大的情况下,Spark 都是很好的选择。另外,Spark 也不适合应用于混合的云计算平台,因为混合的云计算平台的网络传输是很大的问题,即便有专属的宽带在云端 Cluster 和本地 Cluster 之间传输数据,相比内存读取速度来说,依然不抵。

Spark 和 Hadoop MapReduce 对比相关推荐

  1. Spark与Hadoop MapReduce相比,有哪些优点你知道吗?

    一提到大数据处理,相信很多人第一时间想到的是 Hadoop MapReduce.没错,Hadoop MapReduce 为大数据处理技术奠定了基础.近年来,随着 Spark 的发展,越来越多的声音提到 ...

  2. Spark初识-Spark与Hadoop的比较

    Spark,是分布式计算平台,是一个用scala语言编写的计算框架,基于内存的快速.通用.可扩展的大数据分析引擎 Hadoop,是分布式管理.存储.计算的生态系统:包括HDFS(存储).MapRedu ...

  3. 大数据各组件理论性总结---spark和hadoop(将持续更新)

    Hadoop和spark的起源 Hadoop起源 1998年9月4日,Google公司在美国硅谷成立.正如大家所知,它是一家做搜索引擎起家的公司 无独有偶,一位名叫Doug Cutting的美国工程师 ...

  4. Storm与Spark、Hadoop三种框架对比

    目录 Storm与Spark.Hadoop三种框架对比 一.Storm与Spark.Hadoop三种框架对比 二.hadoop的应用业务分析 二.浅谈Hadoop的基本原理 Hadoop与Storm的 ...

  5. HADOOP MapReduce 处理 Spark 抽取的 Hive 数据【解决方案一】

    开端: 今天咱先说问题,经过几天测试题的练习,我们有从某题库中找到了新题型,并且成功把我们干趴下,昨天今天就干了一件事,站起来. 沙问题? java mapeduce 清洗 hive 中的数据 ,清晰 ...

  6. 【Big Data - Hadoop - MapReduce】通过腾讯shuffle部署对shuffle过程进行详解

    摘要: 通过腾讯shuffle部署对shuffle过程进行详解 摘要:腾讯分布式数据仓库基于开源软件Hadoop和Hive进行构建,TDW计算引擎包括两部分:MapReduce和Spark,两者内部都 ...

  7. Spark与Flink:对比与分析

    Spark是一种快速.通用的计算集群系统,Spark提出的最主要抽象概念是弹性分布式数据集(RDD),它是一个元素集合,划分到集群的各个节点上,可以被并行操作.用户也可以让Spark保留一个RDD在内 ...

  8. 每周一书《Spark与Hadoop大数据分析》分享!

    Spark与Hadoop大数据分析比较系统地讲解了利用Hadoop和Spark及其生态系统里的一系列工具进行大数据分析的方法,既涵盖ApacheSpark和Hadoop的基础知识,又深入探讨所有Spa ...

  9. Ignite与Spark内存计算平台对比分析

    为什么80%的码农都做不了架构师?>>>    经常有人拿Ignite和Spark进行比较,然后搞不清两者的区别和联系.Ignite和Spark,如果笼统归类,都会归类于内存计算平台 ...

  10. Spark和Hadoop大决战

    Spark作为数据处理的核心应用,有着重要的作用和地位,那么spark能不能取代Hadoop而存在呢? Spark只是分布式计算平台,而hadoop已经是分布式计算.存储.管理的生态系统. 与Spar ...

最新文章

  1. IDEA那些既好用又好玩的30多款宝贝插件,你知道多少?
  2. 中部四省会打造人才信息云平台
  3. 结构指针的坑之(定义结构体指针时并没有分配存储空间,所以要用malloc()申请空间)
  4. 【Pygame小游戏】《坦克大战》,那些童年的游戏你还记得几个呢?
  5. webkit的几个属性
  6. 百度地图api 去左下角百度地图logo的方法
  7. 前端开发课件 202002
  8. 华为Mate 40 Pro最新渲染图曝光:后置相机模组有变化
  9. C++基础——用C++实例理解UML类图
  10. 问题四十四:怎么用ray tracing画空间任意位置的圆环的任意片段
  11. 光储直流微电网simulink仿真模型 双向变换器 ,独立光伏系统能量管理,最大功率点跟踪mppt
  12. Pygame详解(十):mouse 模块
  13. python11_python11:函数
  14. linux nfs共享目录访问速度慢,linux之间共享文件夹选nfs还是选samba--
  15. STM8S系列基于STVD标准库外设库开发,PWM输出实现LED呼吸灯效果
  16. 华为首部鸿蒙手机,液态镜头首次亮相亚美AM8探秘华为首部鸿蒙手机P50
  17. Android 10 SystemUI 如何隐藏状态栏耳机图标和定位图标
  18. QDataTime格式互转
  19. 直线段检测法(LSD)
  20. C / C++头文件大全

热门文章

  1. 关于通用框架的一些想法
  2. 没有upcast 也不会发生多态
  3. Java学习之反射机制及应用场景
  4. oracle中nvarchar2查询结果显示总是少一位
  5. java -- 对Map按键排序、按值排序
  6. MySQL中的isnull、ifnull和nullif函数用法
  7. WinForm与WPF下跨线程调用控件
  8. 体验Joomla2.5,从joomla1.5说起【转】
  9. gin 打linux环境包问题解决
  10. 局域网从另一台电脑copy文件(Linux系统下)