您的位置:首页 > 其它

MapReduce 原理及其工作流程

2015-09-01 13:20 375 查看
一 MapReduce优点

(1)为什么用MapReduce(计算框架?)?

数据分片和移动计算

MapReduce采用计算移动到数据端方式,

此方式极大提高数据的运算效率

(2)为什么要用将计算移动到数据端?

一般计算数据方式从数据源获取数据,将计算结果返还给数据源,

当计算大量数据时,这种方式存在很大弊端,在获取数据时,由于

受到带宽限制,导致传送效率大大降低而MapReduce就很好的解

决之一瓶颈,原理:当得到计算请求时,只将计数据计算算法返还

给数据端,数据端根据算法执行运算过程,这样就大大提高数据

计算效率

二 MapReduce工作流程及原理

共六个步骤:

如统计词频如图:



第一步 Input 输入数据源

第二步 Splitting 分割数据源, 按照行数分割

第三步Mapping 映射 分发分割后的数据

第四步:shuffing 其进行分组排序 此部分是透明的且不可变动

第五步 Reducing 去重 Reducing得到shuffle结果即是<K2,V2{1,1,1}>只输出其中一条,图中Reducing和自定义合并而非系统本身操作结果

第六步 Final result 得到最终结果

注释:

步骤与步骤之间为串行关系(每一步按顺序一次执行)

而步骤内部为并行关系(内部中运行同时进行)

MR工作原理:

原始文件

<k1,v1> k1每行文本的偏移量(k1可为Object 或者LongWritable) v1每行文本的值

Mapper<Object,>

map()

<k2, v2>

shuffle 在不同分区中,按key进行分组排序把相同的v放在统一集合中

<k2,{v2,v2',v2''......}>

Reduce

<k3,v3>去重

三MapReduce On Yarn 执行流程



1.用户向Yarn中提交应用程序,其中包括Application程序 启动Application的命令 用户程序等

2 ResourceManager为该应用程序分配第一个Container, 并与对应的NodeManager通信,要求它在这个Contai中启动应用程序的ApplicationMaster

3.ApplicationMaster首先向ResourceMaster注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后,他将为各个人物

申请资源,并监控他的运行状态,一直到运行结束及重复4-7

4. ApplicationMaster采用轮询的方式通过RPC协议向ResouManager申请和领取资源

5.一旦ApplicationMaster申请到资源后,则与对应的NodeManager通信,要求其启动人物

6.NodeManager为人物设置好运行环境(包括环境变量 jar包 二进制程序等)后,将任务启动命令写到一脚本中,并通过运行该脚本启动任务

7.各个任务通过某个PRC协议向Applicationmaster 汇报自己的状态和进度,提让Applicationmaster 随时掌握各个任务的运行状态,从而咋

在任务失败时从新启动任务,在应用程序运行过程中,用户可以通过RPC向ApplicationMaster查询应用程序的当前运行状态

8 应用程序运行完成后, ApplicationMaster向ResourceManager注销,并关闭自己

注释:

caontainer:硬件中的CPU+内存的逻辑存储空间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: