一 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+内存的逻辑存储空间