MapReduce是一种计算模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)“和"Reduce(归约)”,是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

MapReduce的优缺点:

优点:

1.易于编程;
2.良好的扩展性;
3.高容错性;
4.适合PB级别以上的大数据的分布式离线批处理。

尽管MapReduce极大的简化了大数据分析,但是随着大数据需求和使用模式的扩大,用户的需求也越来越多:
1 更复杂的多重处理需求(比如迭代计算, ML, Graph);
2 低延迟的交互式查询需求(比如ad-hoc query)
而MapReduce计算模型的架构导致上述两类应用先天缓慢

缺点:

1.难以实时计算(MapReduce处理的是存储在本地磁盘上的离线数据)
2.不能流式计算(MapReduce设计处理的数据源是静态的)
3.难以DAG计算(有向无环图计算,由于多个任务存在依赖关系,后一个应用的输入是前一个应用的输出。解决这一问题的方式有Apache的Tez计算框架,它是基于hadoop Yarn之上的DAG计算框架,它将MapReduce任务分解为多个子任务同时可以把多个Map/ Reduce任务合并成一个大的DAG任务,这样当前一个任务完成之后,直接将结果输出给下一个任务,不用将结果写到磁盘之上,减少了Map/Reduce之间的文件存储。同时合理的组合其子过程,减少了任务的运行时间。)


MapReduce的代替产物:Spark

Spark弥补了MapReduce的不足,优势:
1.每一个作业独立调度,可以把所有的作业做一个图进行调度,各个作业之间相互依赖,在调度过程中一起调度,速度快。
2.所有过程都基于内存,所以通常也将Spark称作是基于内存的迭代式运算框架。
3.spark提供了更丰富的算子,让操作更方便。
4.更容易的API:支持Python,Scala和Java

MapReduce不会被完全替代

MapReduce是Hadoop1.0的核心,Spark出现慢慢替代Mapreduce。那么为什么Mapreduce还在被使用呢?因为有很多现有的应用还依赖于它,它不是一个独立的存在,已经成为其他生态不可替代的部分,比如pig,hive等。


Hadoop 、Hive、Mapreduce之间的关系

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

这个写的挺好的:教你理解MapReduce与Hadoop

Hive是Hadoop的一个组件,作为数据厂库,Hive的数据是存储在Hadoop的文件系统中的,Hive为Hadoop提供SQL语句,使Hadoop可以通过SQL语句操作文件系统中的数据。Hive是依赖Hadoop而存在的。

MapReduce优劣,理解MapReduce与Hadoop相关推荐

  1. 理解MapReduce哲学

    Google工程师将MapReduce定义为一般的数据处理流程.一直以来不能完全理解MapReduce的真义,为什么MapReduce可以"一般"? 最近在研究Spark,抛开Sp ...

  2. MapReduce通俗理解

    Mapreduce mapreduce通俗理解 举个例子,我们要数图书馆中的所有书.你数1号书架,我数2号书架.这就是"Map".我们人越多,数书就更快.现在我们到一起,把所有人的 ...

  3. mapreduce分组统计_如何优雅的理解MapReduce

    " 导语 自从喵先生之前给小白讲了HDFS的故事,小白听的意犹未尽,整天缠着喵先生,想让他再继续讲讲hadoop框架内另外一个比较重要的MapReduce计算框架是啥. 目录 MapRedu ...

  4. MapReduce快速入门系列(4) | Hadoop序列化

    Hello,大家好,本次为大家带来的是Hadoop的序列化操作. 目录 一. 序列化的简单介绍 1.1. 什么是序列化 1.2. 为什么要序列化 1.3. 为什么不用Java的序列化 二. 自定义be ...

  5. HADOOP |MapReduce篇 (08) MapReduce特性

    1- 计数器 计数器是收集作业统计信息的有效手段, 用于质量控制或应用级统计. 内置计数器 任务计数器 任务计数器由其关联任务维护, 并定期发送给 tasktracker , 再由 tasktrack ...

  6. 【Hadoop】Hadoop生态系列之MapReduce概述及MapReduce任务开发与发布

    上一篇:Hadoop生态系列之HDFS常用Shell命令实践及Java API操作HDFS 这里写目录标题 MapReduce 概述 流程分析 环境搭建 MapReduce任务开发 背景 实现 任务发 ...

  7. 深入理解HDFS:Hadoop分布式文件系统

    深入理解HDFS:Hadoop分布式文件系统 文本详细介绍了HDFS中的许多概念,对于理解Hadoop分布式文件系统很有帮助. 1. 介绍 在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器 ...

  8. Mapreduce和Yarn概念,参数优化,作用,原理,MapReduce计数器 Counter,MapReduce 多job串联之ControlledJob(来自学习资料)

    3.3. MapReduce与YARN 3.3.1 YARN概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运 ...

  9. Mapreduce和Yarn概念,参数优化,作用,原理,MapReduce计数器 Counter,MapReduce 多job串联之ControlledJob(来自学习资料)...

    3.3. MapReduce与YARN 3.3.1 YARN概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运 ...

最新文章

  1. Java设计模式(20)——行为模式之命令模式(Command)
  2. Apache经常使用配置
  3. 实时SLAM的未来及与深度学习的比较The Future of Real-Time SLAM and “Deep Learning vs SLAM”
  4. 计算机程序是怎样运行的-hello world程序运行原理
  5. win10电脑pppoe拨号模块损坏_电脑维修免费在线咨询
  6. python数据库self函数_Python常用功能函数系列总结(四)之数据库操作
  7. java的3个初始化_通过实例解析Java类初始化和实例初始化
  8. NodeJS-queryString
  9. 71道经典Android面试题,涵盖了所有android知识点,值得学习和思考
  10. C#LeetCode刷题-线段树
  11. (50)FPGA面试技能提升篇(版本控制工具Clearcase、Git)
  12. PyTorch系列入门到精通——张量简介及创建
  13. 为VSCode 设置好看的字体:Operator Mono
  14. 什么是QCIF? CIF?2CIF?4CIF?DCIF?
  15. 数独大师级技巧_数独高级解法技巧,数独高手教你如何玩转数独
  16. python中跳过本次循环的语句是_Python跳过for循环
  17. 领导最不赏识这5类下属
  18. 搜索战火重燃,夸克升级个人云服务做网盘的逻辑是什么?
  19. zabbix5.0监控esxi和vcenter
  20. SDUT java 单词和字符鉴别器

热门文章

  1. ViewPage2简单使用
  2. mysql建库、建表命令、sql语句大全
  3. 2345王牌浏览器怎么恢复网站
  4. Mycat 1.6日志分类-Sequoia数据库相关日志
  5. datax数据迁移之从oracle往Mysql迁移
  6. Cadence allegro小技巧总结
  7. funcode游戏实训,java及C/C++,网上整理
  8. HDFS——JN扩容的正确姿势
  9. 安卓中的hander
  10. 课程设计:经验以及答辩情况汇总