Hadoop学习——MapReduce的简单介绍及执行步骤

MapReduce概述

  MapReduce是一个分布式的计算框架(编程模型),最初由由谷歌的工程师开发,基于GFS的分布式计算框架。后来Cutting根据《Google Mapreduce》,设计了基于HDFSMapreduce分布式计算框架。

  mapreduce实现了分而治之的思想,map的拆分和封装,reduce的计算和规约。

  MR框架对于程序员的最大意义在于,不需要掌握分布式计算编程,不需要考虑分布式编程里可能存在的种种难题,比如任务调度和分配、文件逻辑切块、位置追溯、工作。这样,程序员能够把大部分精力放在核心业务层面上,大大简化了分布式程序的开发和调试周期。

MapReduce的进程

  MapReduce框架有两个进程,启动成功后会有如下两个:

  1. ResourceManager:MapReduce的管理者进程,1.0时叫JobTrakcer。它是在namenode上。
  2. NodeManager:MapReduce的工作进程,2.0时叫TaskTracker,它在datanode上。我理解的是,map任务和reduce任务即属于这个进程层级上的工作内容。
    在这里插入图片描述

JobTracker / ResourceManager工作职能:

  A.知道管理哪些机器,即管理哪些NodeManager

  B.要有检测机制,能够检测到NodeManager的状态变换,通过RPC心跳来实现。

  C.任务的分配和调度,ResourceManager能够做到细粒度的任务分配,比如某一个任务需要占用多大内存,需要多少计算资源。

注:ResourceManager是hadoop2.0版本之后引入了yarn,有yarn来管理hadoop之后,jobtracker就被替换成了ResourceManager

TaskTracker / NodeManager工作职能:

  能够收到ResourceManager发过来的任务,并进行任务的处理。这里处理任务指的是Map任务Reduce任务

MapReduce的两类任务

  1. MapTask(map任务)
  2. ReduceTask(reduce任务)

MapReduce任务执行大致步骤

在这里插入图片描述

  在计算的时候,首先会对数据进行逻辑切片,主要包含了切片的描述信息而并不包含真正的数据,然后再交给mapper执行。
  ① Map 任务

  Map任务数 = 文件块数,Map任务用于
读取输入文件内容,对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。对输出的key、value进行分区。对相同分区的数据,按照key进行排序(默认按照字典顺序进行排序)、分组。相同key的value放到一个集合中。(可选)分组后的数据进行归约。

  ② Reduce 任务

  对多个map任务的输出,按照不同的分区,通过网络(http协议)copy到不同的reduce节点。这个过程并不是map将数据发送给reduce,而是reduce主动去获取数据,然后再做处理。

  以上仅仅是简单的介绍,下一篇记录在JAVA代码层次上的mapreduce的具体写法。Hadoop学习——MapReduce的组件及简单API

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茁壮成长的凌大大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值