前言:中秋节有事外加休息了一天,今天晚上重新拾起Hadoop,但感觉自己有点烦躁,不知后续怎么选择学习Hadoop的方法。

干脆打开电脑,决定:

1、先将Hadoop的MapReduce和Yarn基本原理打扎实了再说,网上说的边画图边记得效果好点;

2、有时间就多看看Java和Python的基础知识,牢固牢固;

3、开始学习hive以及spark

正文:

MapReduce如何分而治之?

Map阶段:

a.拆分输入数据(Split):逐行读取数据,得到一系列(key/value)

注:Split个数根据文件多少来分配,key值包括回车符

b.执行用户自定义的Map方法

c.Mapper按输出的key值对输出的(key,value)进行排序,并执行combine过程,将key值相同的value累加

注1:combine不能取代reduce,但combine可以减少map和reduce之间数据传输量

注2:在map和cobine之间还有两个过程:collect和spill

collect:是map方法处理完数据后,一般调用OutputCollector。collect()收集结果,并在该内部形成(key/value)分片,并写入一个环形缓冲区

spill:当环形缓冲区填满后,MapReduce会将数据写入本地磁盘,生成临时文件

Reduce阶段:

对Map阶段输出的值进行自定义的reduce函数处理,并输出新的(key/value),并作为结果输出。

Reduce阶段分5个步骤:shuffle(复制)——merge(合并)——sort(排序)——reduce(执行函数)——write(写入结果)

【hadoop】细读MapReduce的工作原理的更多相关文章

  1. Hadoop基础-MapReduce的工作原理第二弹

    Hadoop基础-MapReduce的工作原理第二弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Split(切片)  1>.MapReduce处理的单位(切片) 想必 ...

  2. Hadoop基础-MapReduce的工作原理第一弹

    Hadoop基础-MapReduce的工作原理第一弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在本篇博客中,我们将深入学习Hadoop中的MapReduce工作机制,这些知识 ...

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

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

  4. Hadoop生态圈-Zookeeper的工作原理分析

    Hadoop生态圈-Zookeeper的工作原理分析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   无论是是Kafka集群,还是producer和consumer都依赖于Zoo ...

  5. 一图看懂hadoop Spark On Yarn工作原理

    hadoop Spark On Yarn工作原理

  6. hadoop之hdfs及其工作原理

    hadoop之hdfs及其工作原理 (一)hdfs产生的背景 随着数据量的不断增大和增长速度的不断加快,一台机器上已经容纳不下,因此就需要放到更多的机器中,但这样做不方便维护和管理,因此需要一种文件系 ...

  7. MapReduce的工作原理

    MapReduce简介 MapReduce是一种并行可扩展计算模型,并且有较好的容错性,主要解决海量离线数据的批处理.实现下面目标 ★ 易于编程 ★ 良好的扩展性 ★ 高容错性   MapReduce ...

  8. MapReduce 1工作原理图文详解

    MapReduce工作原理图文详解 一 MapReduce程序执行流程 程序执行流程图如下: 流程分析:1.在客户端启动一个作业.2.向JobTracker请求一个Job ID.3.将运行作业所需要的 ...

  9. MapReduce工作原理图文详解

    目录:1.MapReduce作业运行流程2.Map.Reduce任务中Shuffle和排序的过程 1.MapReduce作业运行流程 流程示意图: 流程分析: 1.在客户端启动一个作业. 2.向Job ...

随机推荐

  1. Ubuntu 16.04 haproxy + keeplive

    WEB架构

  2. 【Leetcode_easy】788. Rotated Digits

    problem 788. Rotated Digits solution1: class Solution { public: int rotatedDigits(int N) { ; ; i< ...

  3. charles 批量重复请求/重复发包工具

    本文参考:charles 批量请求 重复发包工具/repeat Charles 让你选择一个请求并重复,在测试后端接口的时候非常有用: Charles将请求重新发送到服务器,并将响应显示为新请求. 如 ...

  4. Kotlin教程

    Kotlin是一种静态类型的编程语言,由JetBrains开发.如果你有Java的基础知识,你很快就能学会Kotlin.这个Kotlin教程是为初学者设计的,因此即使您不了解Java,也可以理解Kot ...

  5. Django_03_模板的使用

    {{ }} 变量 list类型用 'lst.索引',且不支持倒序索引,即不能识别lst.-1 dic类型用 'dic.key',去取对应的value,不支持{} 对于实例对象,通常自己重写__str_ ...

  6. 25.Spark下载源码和安装和使用

    安装scala 上传安装包 解压 配置scala相关的环境变量 export SCALA_HOME=/opt/modules/scala-2.11.4 export PATH=$PATH:$SCALA ...

  7. [转帖]Linux系统下x86和ARM的区别有哪些?

    Linux系统下x86和ARM的区别有哪些? https://www.cnblogs.com/alantu2018/p/9209143.html 其实界限 越来越小了.. 问题: 最近在用三星的一款i ...

  8. oracle管道函数的用法(一行拆为多行)

    oracle管道函数是一类特殊的函数,oracle管道函数返回值类型必须为集合 如果需要在客户端实时的输出函数执行过程中的一些信息,在oracle9i以后可以使用管道函数(pipeline funct ...

  9. WebElement的方法:

    这个类代表HTML页面元素 id_ #当前元素的ID tag_name #获取元素标签名的属性 text #获取该元素的文本. click() #单击(点击)元素 submit() #提交表单 cle ...

  10. 订单服务,使用feign调用服务

    通过feign实现订单中心(feign调用服务,在orderservice中调用product-server)     1.copy orderserver 为orderserverfeign     ...