在Hadoop1.x中MapReduce是Master/Slave结构.1个JobTracker带多个TaskTracker,我们称之为MRv1。
JobTracker主要功能
资源管理
任务调度
T askTracker主要功能
执行任务,响应JobTracker命令
汇报心跳
主要问题
JobTracker单点故障,如果它挂掉,整个系统无法运转
JobTracker负载过重
仅支持MR计算框架,适合批处理、基于磁盘的计算
资源与计算没有很好的解耦设计,一个集群只能使用一个计算框架
Yarn特点
资源管理与计算框架解耦设计,一个集群资源共享给上层各个计算框架
集群内数据共享一致,数据不再需要集群间拷贝转移,达到共享互用
避免单点故障、集群资源扩展得到合理解决
Yarn的运行流程
ResourceManger(资源管理):
ResourceScheduler(资源调度)
AplicationsManger(进程管理)
NodeManger节点资源管理
ApplicationMaster 任务管理
Task 任务运行的地方
Client端向ResourceManger提交作业,其中包括applicationMaster程序,启动applicationMaste的命令
ResourceManger为作业分配第一个Container,也就是分配一个容器,并与相对应的NodeManger通信,使NodeManger在这个容器中启动该作业的ApplicationMaster
NodeManger启动一个Container运行ApplicationMaster
ApplicationMaster首先向REsourceManger注册,这样用户就可以通过ResourceManger来查询作业的运行状态,ApplicationMaster将向ResourceManger申请各个任务申请资源,并监控任务的运行状态
ApplicationMaster拿到资源后与对应的NodeManger通信,启动任务
NodeManger 接收ApplicationMaster命令,启动Contain任务
各个Container通过RPC向ApplicationMaster汇报任务状态和任务进度,所以ApplicationMaster可以在任务失败时重新启动任务
作业完成后,ApplicationMaster向ResourceMangerous申请注销关闭自己
ResourceManger 监控NodeMangerous 和ApplicationMaster
NodeManger 周期性向ResourceManger汇报资源使用情况,以及运行状态
ApplicationMaster监控任务,可以使NodeManger重启任务
一个应用程序所需的Container分为两大类,如下:
(1) 运行ApplicationMaster的Container:这是由ResourceManager(向内部的资源调度器)申请和启动的,用户提交应用程序时,可指定唯一的ApplicationMaster所需的资源;
(2) 运行各类任务的Container:这是由ApplicationMaster向ResourceManager申请的,并由ApplicationMaster与NodeManager通信以启动之。
以上两类Container可能在任意节点上,它们的位置通常而言是随机的,即ApplicationMaster可能与它管理的任务运行在一个节点上。
调度策略
FIFO 先进先出
Capacity Scheduler(容器调度器) 跑道一般,不许占用
Fair Scheduler(公平调度器) 允许别人占用,但当自己使用是,会使别人丢失部分数据
Yarn shell指令
查看版本信息:yarn version
使用yarn命令提交jar包:
yarn jar jarName mainClassPath -Dk1=v1 -Dk2=v2 inputPath outputPath
查看所有application列表信息:yarn application -list
杀掉指定的application,使用命令:yarn application kill app-id
查看yarn的当前资源使用情况:yarn top