1:MapReduce概述
Mapreduce分成两部分
Map()---映射 (元素个数是不变的)
映射成键值对的结构
映射的条件是一一对应的。
x--->(x,1)
y--->(y,1)
Reduce()---归约(元素个数是减少的)
对于key相同的元素,找出来,值进行相加。
x--->(x,1)
x--->(x,1) -->>(x,1+1+1)
x--->(x,1)
2:Mapreduce架构
MR job提交到Yarn的工作流程
||
Yarn的架构设计
||
Yarn的工作流程
1:客户端向(Yarn中的)ResourceManager提交应用程序
ResourceManager
---Applications manager是一个线程
---Resource scheduler
2.1:RM为该应用程序分配第一个container容器,
2.2:RM与对应的NM通信,要求Nodemanager在这个
container容器中启动应用程序的application master
3:Application master 首先向Application manager注册
以支持通过web 8088端口查看应用程序的运行状态,且监控它的运行状态。
4:ApplicationMaster向Scheduler申请领取资源
5:一旦ApplicationMaster申请到资源,就会与对应的NodeManager(可能很多)进行通信,要求Nodemanager启动容器。
6:Nodemanager节点启动容器,运行Task
7:ApplicationMaster实时监控Task的运行状态
8:app运行完成后,ApplicationMaster向apps manager 注销并关闭
注:
在一个容器中只会运行一种Task(MapTask/ReduceTask)
总结:
1:启动application master 1,2
2:application master 申请资源,运行任务,结束任务 3-8
3:shuffle流程
shuffle阶段分成两部分:map端的shuffle,reduce端的shuffle
shuffle一般指reduce端
把map端的结果,key相同的通过IO放到一起,对key相同的,进行合并。