白话hadoop yarn的调度过程以mapreduce程序为例

今天上完班,终于可以回去了,现在在公司没什么事干,就用白话来总结下mapreduce的执行流程吧,如果有错误的地方大家尽管指出。

首先在hadoop 1.x中和hadoop 2.x中,mapreduce的执行流程也不一样(完全不一样),在hadoop1.x中 mapreduce的 资源管理与分配和任务监控都是集中在 jobtracker 上,这样会造成jobtracker的负担非常大,而且在hadoop 1.x中没有jobtracker的HA机制,从而会让集群的健壮性很差。

这里写图片描述

  • 这里只大概介绍下hadoop1.x mapreduce的执行流程:

client端提交job给jobtracker,jobtracker会给这个job分配资源,在tasktracker上启动task任务,而且还要监控task任务的状况,如果task挂了,jobtracker还得重新分配新的资源给挂了的task任务,当task执行完成后,jobtracker会为reduce任务分配资源,然后监控reduce的执行流程,最后执行完成输出。

hadoop 2.x 用yarn框架,使资源的调度和监控分开,并且实现了resourcemanager的HA(通过zkfc进程和zookeeper管理实现)。

这里写图片描述

看似上面的hadoop 2.x和1.x的架构差不了多少,但是他们的执行流程却完全不一样:

这里写图片描述

  • yarn调度流程:
  • client端会调用resourcemanager,申请执行一个job
  • resourcemanager会给客户端返回一个hdfs的目录以及一个application_id号。
  • client端会将切片信息、job的配置信息以及jar包上传到上一步收到的hdfs目录下(三个文件分别是:job.split、job.xml、jar包)
  • client请求resourcemanager启动mrappmaster
  • resourcemanager将client请求初始化成一个task任务,放到执行队列里面(默认FIFO),当执行到这个task的时候会给该job分配资源。
  • resourcemanager会找空闲的nodemanager创建一个container容器,并启动mrappmaster
  • 当mrappmaster启动之后会先将client提交hdfs的资源(job.split、job.xml、jar包)下载到本地
  • mrappmaster根据资源信息的情况请求resourcemanager启动maptask
  • resourcemanager会为上面的请求找空闲的nodemanager并创建maptask的container
  • mrappmaster将资源发送给各个nodemanager并且启动上面相应的maptask程序,监控maptask的运行情况(如果maptask挂掉之后,由mrappmaster去处理)。
  • 当maptask执行完成后,mrappmaster又会向resourcemanager申请reducetask的资源
  • resourcemanager又会为上面的请求找空闲的nodemanager并创建reducetask的container
  • mrappmaster然后又启动reducetask任务,并且监控reducetask任务的执行状况。
  • 直到mapreduce的程序执行完成

当mrappmaster挂掉之后,resourcemanager会重新找其他的nodemanager并重新启动一个新的mrappmaster,所以mrappmaster不存在点单故障问题。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值