MapReduce起源

1、Hadoop的思想来源于Google的几篇论文,论文中写道,MapReduce的灵感来源于函数式语言(Lisp)中的内置函数Map和Reduce。简单来说,在函数式语言里,Map表示对一张列表(List)中的每个元素进行计算,Reduce表示对一张列表中的每个元素进行迭代计算。它们具体的计算是通过传入的函数实现的,而Map和Reduce提供的是计算的框架。不过,从这样的解释到现实中的MapReduce相差太远,仍然需要一个跳跃。再仔细看,Reduce既然能做迭代计算,那就表示列表中的元素是相关的;而Map则对列表中的每个元素做单独处理,这表示列表中的数据是杂乱无章的。这样看来,就有点联系了。在MapReduce里,Map处理的是原始数据,自然是杂乱无章的,各条数据之间没有联系;到了Reduce阶段,数据是以Key后面跟着若干个Value来组织的,这些Value有相关性,符合函数式语言里Map和Reduce的基本思想。

2、这样就可以把MapReduce理解为:把一堆杂乱无章的数据按照某种特征归纳起来,然后处理并得到最后的结果。Map面对的是杂乱无章的、互不相关的数据,它解析每个数据,从中提取出Key和Value,也就是提取数据的特征。经过MapReduce的shuffle阶段之后,在Reduce阶段看到的是已经归纳好的数据,在此基础上可以作进一步处理以便得到结果。

MapReduce原理

1、MapReduce是一种云计算的核心计算模式,是一种分布式运算技术,也是简化的分布式并行编程模式,主要用于大规模并行程序并行问题。

2、MapReduce模式的主要思想是自动将一个大的计算(如程序)拆解成Map(映射)和Reduce(化解)的方式,流程图如图所示。

input map shuffle reduce output

3、数据被分割后,通过Map函数将数据映射成不同的区块,分配给计算机集群进行处理,已达到分布式运算的效果,再通过Reduce函数将结果汇整,从而输出开发者所需的结果。

4、MapReduce借鉴了函数式程序设计语言的设计思想,其软件实现是指定一个Map函数,把键值对(Key/Value)映射成新的键值对(Key/Value),形成一系列中间结果形式的键值对(Key/Value),然后把它们传递给Reduce(规约)函数,把具有相同中间形式Key的Value合并在一起。Map和Reduce函数具有一定的关联性。

5、致力于解决大规模数据处理的问题,因此在设计之初就考虑了数据的局部性原理,将整个问题分而治之。MapReduce集群由普通PC构成,为无共享式架构。在处理之前,将数据集分布至各个节点;在处理时,每个节点就近读取本地存储的数据处理(Map),将处理后的数据进行合并(Combine)、排序(Shuffle and Sort)后再分发(至Reduce节点),从而避免了大量数据的传输,提高了处理效率。无共享式架构的另一个好处是配合复制(Replication)策略,集群可以具有良好的容错性,一部分节点宕机不会影响整个集群的正常工作。

MapReduce起源 and原理相关推荐

  1. Hadoop 4、Hadoop MapReduce的工作原理

    一.MapReduce的概念 MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是分布式文件系统hdfs,一部是分布式计算框就是mapreduce,两者缺一不可,也就是 ...

  2. 《Hadoop MapReduce性能优化》一1.3 Hadoop MapReduce的工作原理

    本节书摘来异步社区<Hadoop MapReduce性能优化>一书中的第1章,第1.3节,作者: [法]Khaled Tannir 译者: 范欢动 责编: 杨海玲,更多章节内容可以访问云栖 ...

  3. MapReduce的工作原理,详细解释WordCount程序

    本篇文章主要说两部分:简单介绍MapReduce的工作原理:详细解释WordCount程序. MapReduce的工作原理 在<Hadoop in action>一书中,对MapReduc ...

  4. Hive mapreduce SQL实现原理——SQL最终分解为MR任务,而group by在MR里和单词统计MR没有区别了...

    转自:http://blog.csdn.net/sn_zzy/article/details/43446027 SQL转化为MapReduce的过程 了解了MapReduce实现SQL基本操作之后,我 ...

  5. hive底层原理 sql执行过程_Hive mapreduce SQL实现原理——SQL最终分解为MR任务,而group by在MR里和单词统计MR没有区别了-阿里云开发者社区...

    转自:http://blog.csdn.net/sn_zzy/article/details/43446027 SQL转化为MapReduce的过程 了解了MapReduce实现SQL基本操作之后,我 ...

  6. Hadoop 之 MapReduce 的工作原理及其倒排索引的建立

    一.Hadoop 简介 下面先从一张图理解MapReduce得整个工作原理 下面对上面出现的一些名词进行介绍 ResourceManager:是YARN资源控制框架的中心模块,负责集群中所有的资源的统 ...

  7. 区块链:起源、原理及应用

    近年来,区块链技术正在经历快速发展,并吸引了超过10亿美元的投资规模.而我们认为,最值得重视的是,区块链正在走进金融机构.大型企业.政府决策层的视野,大有从"草根力量"引发经济变革 ...

  8. 从MapReduce的Shuffle原理 进行 生产参数调优

    文章目录 1.mapreduce的过程上图 2.map 切分输入文件 3.环形缓冲区 3.1 原理 3.2 生产调优 3.2.1 mapreduce.task.io.sort.mb(default:1 ...

  9. 彻底理解MapReduce shuffle过程原理

    MapReduce的Shuffle过程介绍 Shuffle的本义是洗牌.混洗,把一组有一定规则的数据尽量转换成一组无规则的数据,越随机越好.MapReduce中的Shuffle更像是洗牌的逆过程,把一 ...

最新文章

  1. 嵌入式 Hi3515视频编码(H.264)笔记
  2. Delphi中的时间操作技术(1)
  3. Python核心编程(第九章)--文件和输入输出
  4. 全链路追踪竟然如此简单? bytebuddy搭建全链路追踪的demo 附代码
  5. LintCode 207. 区间求和 II(线段树)
  6. C语言在STM32中的内存分配
  7. SQL 2005 Reporting Services:物理分页和逻辑分页 SSRS 2008 report export to PDF - Cannot get size to work...
  8. apo打印接口json参数_接口测试大全
  9. Android ViewPropertyAnimator:让动画变得简单起来!
  10. Redis压力测试(详细)
  11. Mysql(多级分销)无限极数据库表设计方法
  12. python情绪识别_使用百度对话情绪识别api分析文本
  13. python实现一个web服务器
  14. 瓦片地图 cocos
  15. Bootstrap抽样和Monte Carlo思想
  16. 激光打印机,保留打印记录的文档
  17. 「通过Docs学Python」(一)前言
  18. android异步加载视频缩略图,Android 视频缩略图的缓存机制和异步加载
  19. selenium 处理多浏览器测试
  20. hazelcast mysql_HAZELCAST 客户端命令 可用于简单调试

热门文章

  1. 动力节点Dubbo学习笔记
  2. 经典iframe后台系统框架
  3. Java并发编程(四)- 资源分配(互斥)
  4. 如何在label上显示字_如何地图上标注店面_新开的店铺要怎样上地图显示_怎么将公司标记在地图...
  5. linux下运行omnet,Linux下OMNet++安装步骤[原创]
  6. 关于《k-means算法在流式细胞仪中细胞分类的应用》的学习笔记总结
  7. C语言程序设计精髓第四周编程
  8. SAP入门 - 配置中文界面
  9. 知识进步的阶梯--书
  10. redis watch使用场景_redis使用watch完成秒杀抢购