MR在YRAN上运行机制

  1. 首先客户端会向ResourceManager发送运行程序的请求,发送的信息中也包含了(容器的参数规格等信息).
  2. ResourceManager在接收到客户端的请求后,会返回给客户端一个jobid和将程序资源存到hdfs中的位置信息(将信息存到hdfs中可以方便其他节点下载数据).
  3. 客户端在接收到请求后,会将程序的资源信息(job.xml,job.split,jar)上传到hdfs中.
  4. 客户端在上传成功后,会将上传成功的信息反馈给ResourceManager.
  5. ResourceManager在接受到程序资源上传成功的信息后,会将任务加到任务队列当中,等待NodeManger领取任务(因为NodeManger也可能正在执行别的任务,可能资源都在被占用当中,出现了这种情况,只能等待某台NodeMnager资源释放后,来领取任务).
  6. 资源充足的NodeManager,通过心跳机制发现,有任务待执行,然后从ResourceManager中领取任务,任务中包含了客户端请求的容器资源信息和客户端上传程序资源的位置信息,根据容器的资源信息创建容器.
  7. NodeManager在成功领取到任务后,根据任务中的信息,从hdfs中下载程序的资源信息存到容器当中,到这里容器才是创建完成.
  8. NodeManager在创建好容器之后,会向ResourceManager返回容器创建成功的信息.
  9. 客户端始终都在于ResourceManager保持着通信,同时也时刻在查看容器的创建状态,当查看到容器创建好的信息后(信息中也包含是NodeMnager的信息),会向该NodeManager发送启动jar包中启动MRAppMaster的shell命令.
  10. NodeManager在接收到客户端的命令后,开始解析程序资源 ,向ResourceManager请求容器(默认1核,1g),ResourceManager在接收到请求容器的信息后,会将这个任务添加到任务队列中,等待其他节点领取任务.
  11. 在其他节点资源释放出来后,会在ResourceManager中领取该任务,并根据任务信息创建容器,同时也会在hdfs中下载程序资源,在创建好容器后,同样会回馈给主节点容器创建成功的信息.
  12. NodeManager01(下图),在接受到其他节点创建容器成功的信息后,会向这些节点发送执行程序的shell的命令,这些节点在接收到命令后,开始执行YarnChild(maptask).
  13. 其他节点开始执行程序后,NodeManager01会向ResourceManager再次请求容器(因为不同节点执行maptask的速度不同,可能有的节点没有执行完,有的节点已经执行完毕了,这个时候需要reducetask拉取分区文件),同样其他资源充足的节点会从主节点中领取任务,创建容器,在这些节点创建好容器后,NodeManager01又会向这些节点发送shell命令执行程序.
    以上就是MR在YARN上的运行机制
    原理图如下:
    在这里插入图片描述
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值