【Hadoop Yarn01】 Yarn资源调度器&参数配置


yarn是一个资源调度平台,相当于一个分布式的操作系统平台,负责为运算程序提供服务器运算资源,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。

1.Yarn基础架构

核心组件:

  • ResourceManager
  • NodeManager
  • ApplicationMaster
  • Container
    在这里插入图片描述

ResourceManager(RM)

职责:
(1)接收Yarn客户端的请求,比如提交计算作业(MR、Spark、Flink)
(2)监控NodeManager 的资源(CPU\内存)
(3)启动和监控ApplicationMaster (AppMaster是一个进程,一个计算作业对应一个AppMaster)
(4)集群资源的分配和调度

NodeManager(NM)

职责:
(1)管理单个节点的资源
(2)处理来自RM的命令
(3)处理来自ApplicationMaster的命令

ApplicationMaster(AM)

职责:
(1)为计算程序(一个MR、Spark、flink任务)申请计算所需要的资源并且分配给内部的任务
(2)监控MapTask、ReduceTask
如果某个Task计算任务挂了,就会重新申请资源来执行task

Container

是yarn集群中资源的抽象,封装了NodeManager节点上的多种资源(内存、cpu、磁盘、网络等);
AppMaster、MapTask、ReduceTask等进程都是运行在Container中的;所以Container就是一个子任务的运行容器;

2.Yarn工作流程

在这里插入图片描述
在命令行中执行hadoop jar xxx 一个MR程序会走怎样的流程?
(0)MR的Driver类中,提交任务job.waitForCompletion()方法会创建一个客户端,本地模式下叫localRunner,集群模式下叫YarnRunner
(1)YarnRunner向ResourceManager申请运行一个应用程序(计算任务)
(2)RM将该应用程序(计算Job)的一些信息所要存放的路径返回给YarnRunner

(1)job的相关信息
- Job.split   切片信息;控制MapTask的个数
- job.xml     job所需要的资源配置信息
- wc.jar       jar包;MR程序代码
(2)job信息存放路径
如果是本地模式,那么就在本地机器上创建一个staging目录来存放
如果是集群模式,在hdfs的一个staging目录中存放

(3)YarnRunner该job运行所需的信息提交到HDFS上的指定目录中
(4)job资源提交完毕后,向RM申请运行mrAppMaster进程
(5)RM将请求初始化成一个Task,放进调度队列中,等待调度执行
(6)Task被调度的时候,其中一个NodeManager会领取到Task,紧接着该NodeManager创建容器Container,来运行MRAppmaster进程
(8)Appmaster进程会从HDFS上拷贝job的配置信息到本地节点
(9)Appmaster拿到job配置信息后,也就有了切片信息,此时AM会向RM 申请运行MapTask的资源

申请在NodeManager节点上开启task进程的请求都会被封装成Task进入ResourceManager的任务调度器中,调度执行

(10)RM会在有资源的NodeManager节点上创建容器来运行MapTask任务

如果NodeManager节点资源充足,同时分配多个container来运行MapTask也是ok的

(11)此时MapTask的容器有了,MRAppmaster会向两个接收到任务的NodeManager发送程序启动脚本,分别启动MapTask
(12) MapTask执行完毕,会在NodeManager上产生结果分区且区内有序的结果数据,一个MapTask对应一个
(13)MrAppMaster等待所有MapTask运行完毕后,再次向RM申请容器,运行ReduceTask进程

(1)这里说等待所有MapTask运行完毕后,申请运行ReduceTask是不严谨的;
Hadoop有优化机制会提前ReduceTask的执行
(2) MapTask执行完了就会销毁容器

(14)ReduceTask向MapTask获取相应分区的数据。
(15)程序运行完毕后&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值