Yarn工作原理

基本架构

Yarn的架构是master/slaves的主从架构

  • master:ResourceManager->全局资源管理
    负责集群全局统一的资源管理、调度、分配

  • slave:NodeManager->节点资源管理器
    启动了NodeManager进程的节点
    负责管理节点的资源及使用情况

Yarn核心组件:包括ResouceManager和NodeManager
ApplicatonMaster:每一个job产生一个ApplicationMaster,方便管理
Container:每个NodeManager负责一个

Yarn架构各核心租金介绍

ResourceManager
组成:
ResourceScheduler:资源调度器,根据节点的容量、队列情况为应用程序分配资源;
Application Manager:应用程序管理器,负责接受Client端传输的job请求。
功能:

  • 处理Client端的请求;
  • 监控NodeManager;
  • 启动和监控ApplicationMaster,进行必要的重启;
  • 整个系统的资源分配和调度。
    NodeManager
    功能:
  • 负责本节点上的资源管理和任务管理;
  • 定时向ResourceManager汇报本节点上的资源使用情况和各个Container的运行情况;
  • 接收和处理来自ResourceManager的Container启动和停止的各种命令;
  • 处理来自ApplicationMaster的指令,比如启动Map Task和Reduce Task指令。
    ApplicationMaster
    功能:
  • 每个应用程序对应一个ApplicationMaster,负责单个应用程序的管理;
  • 负责数据切分;
  • 为应用程序向ResourceManger申请资源(Container),并分配内部任务(MapTask和ReduceTask);
  • 与NodeManager通信来启动/停止任务,Task都是运行在Container中的;
  • 重启失败任务,一般重启三次;
  • 负责任务的监控和容错,当某些Task运行出错,进行容错处理。
    Container
  • Container是Yarn中的资源抽象,封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等;
  • 当ApplicationMaster向ResourceManager申请资源时,ResourceManager为ApplicationMaster 返回的资源便是用Container 表示的。
  • Container类似于一个虚拟机,可以在上面执行任务

Yarn的工作机制

前面主要讲了下理论部分,可能比较抽象,下面我们借助流程图的形式在来了解一下yarn的工作机制:
在这里插入图片描述
1、首先我们通过客户端向ResourceManager申请一个作业ID。前面我们提到了Resourcemanager复制全局资源的管理与调配,所以在执行任务前,需要先向其做申请;
2、ResourceManager审核完成后,向Client端返回一个作业ID和资源路径;
3、Client端接收到这些信心后,把作业运行所需要的资源,包括jar包、配置信息、分片信息等上传到返回的HDFS路径,之所以返回到HDFS是为了后续ApplicationMaster的调用;
4、上传完成后,Client端想ResourceManager发送请求,执行作业。此时会生成一个ApplicationManager进行作业管理。不知道大家有没有考虑过这个问题:既然ResourceManager是资源管理用的为什么还要再产生这一个程序?其实从名字就可以看出,ResourceManager是进行全局管理,如果所有的任务都要它一个来执行,势必会影响效率,所以就针对每个作业产生相应的ApplicationManager进行协助处理;
5、ApplicationManager将接受的请求发送给调度器。调度器根据容量、队列等限制条件,将系统中的资源分配给各个正在运行的应用程序。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位是Container。调度器不负责监控或者跟踪应用程序的状态。总之,调度器根据应用程序的资源需求以及集群机器的应用情况为已用程序分配封装在Container中的资源;
6、调度器将任务放到调度队列,当执行到相应的请求时,通知ApplicationManager分配容器,调用NodeManager开辟的Container,创建作业对应ApplicationMaster;
7、开辟资源Container。启动ApplicationMaster。
8、ApplicationMaster获取原先Client提交到HDFS上的文件,根据切片信息创建MapTask和ReduceTask;
9、ApplicationMaste既然获得了任务文件,接下来就需要相应的资源去处理该文件。于是就向ResourceScheduler申请运行MapTask和ReduceTask的资源;
10、调度器把相应的资源给ApplicationMaste;
11、ApplicationMaste得到资源后通知NodeManager启动任务。ApplicationMaste根据资源分配方案找到各个NodeManager从节点,增加执行效率。NodeManager的工作前面我们也提到了是接收ApplicationMaste的指令,启动MapTask和ReduceTask;
12、NodeManager启动任务;
13、MapTask和ReduceTask共享文件数据;
14、程序运行完成后,Container通过NodeManager想ResourceManager发送请求,释放资源。
到这里,yarn的整个工作流程也就结束了

查看历史服务

在查看历史服务之前,我们首先要启动历史服务:

mr-jobhistory-daemon.sh start historyserver

jps查看是否启动成功:
在这里插入图片描述
下面我们写个单词统计的命令,让我们有操作的历史:

hadoop jar share/hadoop/mapreduce2/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar wordcount /test/a.txt /test/Result

我调用了hadoop/share/hadoop/mapreduce2下的一个jar包,方法是wordcount单词统计,
读取的文件是a.txt,即FileInputFormat,然后写入到Result(FileOutputFormat)目录下,注意,这里Result不能提前创好.创建完成后,到50070端口可以查看是否创建成功。这里就不做演示。首先我们登录8088端口(ip地址:8088)查看所有的申请:
在这里插入图片描述
可以看到在下面那一行有哦我们的用户名User=root,方法,name=word count 时间等等信息。虽然最后一列有历史的选项,但是该历史无法访问。我们可以登录19888端口来查看历史:
在这里插入图片描述
内容基本和前面的一致。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值