1、MapReduce存在的问题

一个 Hadoop job 通常都是这样的:

1)从 HDFS 读取输入数据;

2)在 Map 阶段使用用户定义的 mapper function, 然后把结果Spill到磁盘;

3)在 Reduce 阶段,从各个处于 Map 阶段的机器中读取 Map 计算的中间结果,使用用户定义的 reduce function, 通常最后把结果写回 HDFS;

Hadoop的问题在于,一个 Hadoop job 会进行多次磁盘读写,比如写入机器本地磁盘,或是写入分布式文件系统中(这个过程包含磁盘的读写以及网络传输)。考虑到磁盘读取比内存读取慢了几个数量级,所以像 Hadoop 这样高度依赖磁盘读写的架构就一定会有性能瓶颈

此外,在实际应用中我们通常需要设计复杂算法处理海量数据, 而且不是一个 Hadoop job 可以完成的。比如机器学习领域,需要大量使用迭代的方法训练机器学习模型。而像 Hadoop 的基本模型就只包括了一个 Map 和 一个 Reduce 阶段,想要完成复杂运算就需要切分出无数单独的 Hadoop jobs, 而且每个 Hadoop job 都是磁盘读写大户,这就让 Hadoop 显得力不从心。

随着业界对大数据使用越来越深入,大家都呼唤一个更强大的处理框架,能够真正解决更多复杂的大数据问题。

2、Spark的优势

2009年,美国加州大学伯克利分校的 AMPLab 设计并开发了名叫 Spark 的大数据处理框架。真如其名,Spark 像燎原之火,迅猛占领大数据处理框架市场。

Spark 没有像 Hadoop 一样使用磁盘读写,而转用性能高得多的内存存储输入数据、处理中间结果、和存储最终结果。在大数据的场景中,很多计算都有循环往复的特点,像 Spark 这样允许在内存中缓存输入输出,上一个 job 的结果马上可以被下一个使用,性能自然要比 Hadoop MapReduce 好得多。

同样重要的是,Spark 提供了更多灵活可用的数据操作,比如 filter, join, 以及各种对 key value pair 的方便操作,甚至提供了一个通用接口,让用户根据需要开发定制的数据操作。

此外,Spark 本身作为平台也开发了 streaming 处理框架 spark streaming, SQL 处理框架 Dataframe, 机器学习库 MLlib, 和图处理库 GraphX. 如此强大,如此开放,基于 Spark 的操作,应有尽有。

Hadoop 的 MapReduce 为什么不使用内存存储?

是历史原因。当初 MapReduce 选择磁盘,除了要保证数据存储安全以外,更重要的是当时企业级数据中心购买大容量内存的成本非常高,选择基于内存的架构并不现实;现在 Spark 真的赶上了好时候,企业可以轻松部署多台大内存机器,内存大到可以装载所有要处理的数据。

Spark之spark VS MR相关推荐

  1. Spark之 spark简介、生态圈详解

    来源:http://www.cnblogs.com/shishanyuan/p/4700615.html 1.简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorith ...

  2. [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:

    [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...

  3. Hive on Spark和Spark sql on Hive,你能分的清楚么

    摘要:结构上Hive On Spark和SparkSQL都是一个翻译层,把一个SQL翻译成分布式可执行的Spark程序. 本文分享自华为云社区<Hive on Spark和Spark sql o ...

  4. spark to mysql date_[Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:

    [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...

  5. spark笔记spark优化

    基本概念(Basic Concepts) RDD - resillient distributed dataset 弹性分布式数据集 Operation - 作用于RDD的各种操作分为transfor ...

  6. Hive on Spark VS Spark on Hive

    Hive on Spark VS Spark on Hive 两者概述 Hive on Spark Hive on Spark是由Cloudera发起,由Intel.MapR等公司共同参与的开源项目, ...

  7. BigData之Spark:Spark计算引擎的简介、下载、经典案例之详细攻略

    BigData之Spark:Spark计算引擎的简介.下载.经典案例之详细攻略 目录 Spark的简介 1.Spark三大特点 Spark的下载 Spark的经典案例 1.Word Count 2.P ...

  8. Spark之Spark角色介绍及运行模式

    Spark之Spark角色介绍及运行模式 集群角色 运行模式 1. 集群模式 从物理部署层面上来看,Spark主要分为两种类型的节点,Master节点和Worker节点: Master节点主要运行集群 ...

  9. Spark之Spark概述

    Spark之Spark概述 什么是Spark Spark内置项目介绍 Spark特点 Spark的用户和用途 1. 什么是Spark Spark是一种快速.通用.可扩展的大数据分析引擎,2009年诞生 ...

  10. 【Spark】Spark基础教程知识点

    第 1 部分 Spark 基础 Spark 概述 本章介绍 Spark 的一些基本认识. Spark官方地址 一:什么是 Spark Spark 是一个快速(基于内存), 通用, 可扩展的集群计算引擎 ...

最新文章

  1. win7计算机睡眠怎么设置方法,win7系统更改(设置)计算机睡眠时间的操作方法...
  2. 【C 语言】数据类型本质 ( 数据类型 | 数据类型本质 | 数组地址 | 数组首元素地址 )
  3. 计算机科学导论第二章,补基础:自学:计算机科学导论 第二章 数字系统
  4. [*leetcode 5] Longest Palindromic Substring
  5. flutter web:lottie jssdk报错处理
  6. 背景图层和普通图层的区别_新手如何在PS中创建图层?不容错过的7种方法,你值得学习...
  7. kafka tool报错:Error fetching datea.Offset out of range
  8. Mysql disk write 高_优化系列|实例解析MySQL性能瓶颈排查定位 导读 排查过程
  9. mysql2008使用教程_sqlserver2008简单使用教程
  10. 第一个go程序: HTTP 服务示例
  11. 802.11介质访问控制——CSMA/CD协议详解
  12. 【视频格式】webm用什么播放
  13. SpringBoot 简易拦截器实现
  14. spellman斯派曼电源维修XRB100N100K4405
  15. android动态壁纸的制作教程,android – 动态壁纸教程
  16. 中国海外文物拍卖天价
  17. python科学记数法转化格式_将科学记数法转换为F
  18. 如何下载Microsoft Edge浏览器新建标签页中好看的壁纸
  19. 怎么把matlab代码输出到word,MATLAB图形输出到word中
  20. FE内容付费系统响应式(带手机版) v5.46

热门文章

  1. 华为2288hv5服务器安装ESXI 6.7(一):远程访问服务器管理口
  2. HTML5超酷新特性WebSockets初体验
  3. 阿里云弹性计算对视觉计算的思考与实践
  4. 优雅的数据库表ID的设计方案
  5. 关于ERP、PLM、APS、MES的数据集成
  6. RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR
  7. linux 读取zip文件内容,如何从linux服务器上的大(30Gb)zip文件中提取文件
  8. java hgetall_redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)
  9. windows 10 python 3.7.9 install rosbag
  10. 对不同的人说不同的话的职场口才分享