Yarn工作机制

  1. 提交Job:客户端里有map jar xml等任务等待提交-->提交job 到resmanager有一个程序appsmaster,
  2. jobID和临时目录:紧接着生成一个jobID和一个初始化目录(临时工作目录)返回客户端 根据提交的程序类型(flink,spark..)生成对应的程序类型,创建内容MRappMaster
  3. 初始化job:客户端生成一个初始化来初始化job 到刚才返回的目录,可以创建临时目录/xxx.conf/默认参数mr-job-conf-xml/上传wc.jar包/输入路径/计算任务切片.split[]
  4. Job(run):客户端申请开始运行job,在resmanager 生成一个任务,去找存在调度器.生成一个任务队列去分配资源默认1.5G 1C,所以去找了一个2G内存.
  5. Nodemanager 去领取任务:->创建默认容器的任务(2G 1C) 在容器里创建MRAppMaster
  6. 获取程序必须项: MRAppMaster à从初始化目录里把jar包/split[]拿过来,就知道有几个maptask和reduce的个数à开始计算需要几个任务eg3个mapotask 2个reducetask
  7. 申请资源:MRAppMaster向ResourceMasnager申请资源,(5个容器)最好一个task一个容器,紧接着ResourceMasnager去找调度器,调度器检查资源是否有位置去使用à紧接着生成任务放在调度器里(5个),à去找nodeManager合理分配任务
  8. NodeManager领取任务创建容器:各个从节点领取任务并且创建容器
  9. 容器向主节点注册:容器(container)向MRAppMaster注册,从而拿到jar包等,à
  10. 创建Task:容器里面创建一个对象YarnChild去拿到jar包,à就能创建MapTask了,其他nodeManager也都有这个容器里的对象,
  11. MrAppmaster统一执行:此时MRAppMaster发布一键启动指令给各个容器里的YarnChild里的MapTaskà运行时MapTask三个任务都会向MRAPPMaster进行任务进度的汇报(何时成功)才能进行ReduceTask任务,à也会向ResourManager进行汇报
  12. 领取ReduceTask创建容器: 各个nodeManager领取ReducerTask任务创建容器à在容器里面创建YarnChildà创建ReduceTask ,紧接着MRAPPMaster CMD统一执行任务Task, YarnChild里的ReduceTask同样向MRAPPMaster进行汇报

输出结果: 执行完两个Reduce输出结果,同时释放对象,MapTask和ReduceTask进行对象回收,然后YarnChild回收,紧接着回收容器,最后MRAppMaster进行回收

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值