MapReduce 原理初学

 
MapReduce 体现一种编程思想,是一种分布式计算模型。Hadoop实现了MapReduce编程模型和计算框架。核心思想:把对大规模的数据集的操作,分发给一个主节点管理下的各分节点共同完成,然后通过整合各分节点的中间结果,得到最终的结果。其核心是要实现map()和reduce()函数,函数的形参是key,value对,map负责把任务分解成多个任务,reduce负责把分解后的多任务处理的结果汇总起来。并行编程中的其他复杂问题,例如分布式存储、工作调度、负载均衡、容错、通信等,均由MapReduce框架处理。
处理流程:
map可并发,reduce也可以并发,但是map和reduce不能并发,必须map执行完,才可以reduce。
把数据拆分成<K1,V1>是由框架完成,是一种粗粒度的分解;<K2,V2>是map函数处理的结果;shuffle 有排序、组合、分组的功能,已经由框架完成,但是也可以去覆盖实现,实现自定义;
◆执行步骤:
1. map任务处理

1.1 读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。
1.2 写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
1.3 对输出的key、value进行分区。
1.4 对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。
1.5 (可选)分组后的数据进行归约。
2.reduce任务处理
2.1 对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。
2.2 对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
2.3 把reduce的输出保存到文件中。
namenode 、datanode、secondaryNamenode、jobtracker、tasktracker的关系:
1、namenode和datanode,从存储的角度来考虑;
2、jobtracker和tasktracker从应用的角度的来考虑,jobtracker负责任务的调度,而tasktracker则是负责任务的执行;所以,tasktracker是运行在datanode的,而Namenode和jobtracker则不一定在同一个机器上;
 
MapReduce运行机制:
1.执行runjob()方法创建一个JobClient实例;
2.向JobTracker请求一个新的作业Id,检查作业的输出说明,计算作业的输入分片;
3.复制作业资源(Jar文件、配置文件和计算所得分片信息)到以作业ID命名的的目录下的Jobtracker的文件系统下
4.调用Jobtracker的submitjob()方法来通知Jobtracker作业准备执行

5.创建一个表示正在运行作业的对象——封装任务和记录信息,以便跟踪任务的状态和进程
6.获取已经计算好的输入分片信息,为每一个分片创建一个map任务(reduce任务的个数由用户配置),将任务放入任务列表

7.TaskTracker定期发送“心跳”给JobTracker.“心跳”告知JobTracker它是否存活,同时也充当两者之间的消息通道。Jobtracker为tasktracker选择任务之前,必须先选定任务所在的作业。选择map任务时,jobtracker会考虑tasktracker的网络位置,选在一个距离其输入分片最近的tasktracker
8.把作业的JAR 文件等资源复制到TaskTracker所在的文件系统; 然后Tasktracker解压JAR文件到本地目录;第三步,新建一个TaskRunner实例来运行该任务
9.TaskRunner启动一个新的JVM
10.在JVM运行任务

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/nwpulisz/p/5333697.html

MapReduce 初学总结相关推荐

  1. 初学Hadoop之图解MapReduce与WordCount示例分析

    Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(GFS) ...

  2. 【Big Data - Hadoop - MapReduce】初学Hadoop之图解MapReduce与WordCount示例分析

    Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(GFS) ...

  3. [转]Hadoop集群_WordCount运行详解--MapReduce编程模型

    Hadoop集群_WordCount运行详解--MapReduce编程模型 下面这篇文章写得非常好,有利于初学mapreduce的入门 http://www.nosqldb.cn/1369099810 ...

  4. 如何在eclipse调试mapreduce程序

    2019独角兽企业重金招聘Python工程师标准>>> 如何在eclipse或myeclipse调试mapreduce程序,这个可能是初学mr程序者碰到的一个难题 在hadoop1. ...

  5. Hadoop之图解MapReduce与WordCount示例分析

    Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(GFS) ...

  6. MapReduce 运行原理(万字长篇 原理 + 案例)

    所有实例都是在本地环境下测试的,无需启动集群! 版本说明: idea:2021.2.2 jdk:1.8 maven:3.8.2(用idea自带的也行) 1. MapReduce 框架原理 运行大致步骤 ...

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

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

  8. mapreduce理解_大数据

    map:对不同的数据进行同种操作 reduce:按keys 把数据规约到一起 看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop 与MapReduce的整体有所了解了. [前言 ...

  9. 2021年大数据Hadoop(二十二):MapReduce的自定义分组

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 MapReduce的自定义分组 需求 分析 实现 第一步: ...

  10. 第2节 mapreduce深入学习:4, 5

    第2节 mapreduce深入学习:4.mapreduce的序列化以及自定义排序 序列化(Serialization)是指把结构化对象转化为字节流. 反序列化(Deserialization)是序列化 ...

最新文章

  1. docker实战部署Javaweb项目
  2. (C++)1031 查验身份证 3难点+3注意点
  3. c++builder Delphi 直接使用剪贴板 Clipboard
  4. 在ashx中使用Session
  5. 成功解决AttributeError: ‘dict_values‘ object has no attribute ‘index‘
  6. 阐述Linux动态库的显式调用
  7. 如何对android菜单,Android菜单构造技巧
  8. 7-37 整数分解为若干项之和(20 分)
  9. 卡通渲染进阶 = toonlighting + outline + rimlighting + hair specular
  10. 判断个十百千位之后是否大于20 java——CSDN博客
  11. java单词查找树_Trie 单词查找树 java实现(来自算法第4版)
  12. python正则表达式中原生字符r的作用
  13. mysql 格式化时间_每天一个常用MySQL函数-from_unixtime等
  14. WPF中INotifyPropertyChanged用法与数据绑定
  15. mysql 部署最佳实践_MySQL安装脚本最佳实践
  16. 我对jeecg-boot项目的理解、使用心得和改进建议
  17. 刚体的转动惯量的c语言题目,刚体的转动惯量题.doc
  18. UBuntu安装CGI环境
  19. python对sqlite增删改查_Python操作sqlite3数据库 增删改查
  20. 计算机启动时为啥总要检测硬盘,每次开机都磁盘检查怎么办_如何关闭硬盘开机自检-win7之家...

热门文章

  1. 信息熵、互信息、KL散度
  2. JavaScript实现动态添加、移除元素或属性的方法分析
  3. Go语言中正则表达式的使用
  4. 关于android资源文件名称的规范
  5. 1.9 Important Themes(一些重要的概念)
  6. jdk AbstractStringBuilder实现
  7. 基于Flume的美团日志收集系统
  8. Ubuntu 12.04 root默认密码? 如何使用root登录?
  9. 阿里P9谈程序员——程序员的青春饭
  10. ZR18提高5解题报告