概念:yarn全称Yet Another Resource Negotiator(另一种资源调度者),实际叫统一资源管理和调度平台更合适一些
作用:yarn来自MRv1并解决了MRv1的可靠性差、扩展性差、资源利用率低、不支持异构计算框架等缺点。
MRv1缺点:
可靠性差:MRv1主从架构,一旦主节点JobTracker出现问题,整个集群就挂掉了
可扩展性:JobTracker负担了资源管理和作业调度的功能,
资源利用低:MRv1 的Map槽和Reduce槽空间分配比例固定,无法做到动态分配,资源无法充分利用
不支持异构计算框架:耗费时间太长,处理离线合适
调度器的分类:
集中式调度器:全局只运行一个中央调度器,所有的调度逻辑和资源请求都由中央调度器完成,这对并发的影响非常大,MRv1就是其中之一
双层调度器:将调度分为中央调度器和框架调度器,中央调度器管理资源,框架调度器分配作业,yarn就是其中的一种实现
状态共享调度器:弱化了中央调度器能力,由框架调度器分摊,每个调度器都可以掌握全部的集群信息,类似于负载均衡,可以增加系统的并发性能
yarn框架:
yarn是主从框架,yarn的服务有ResourceManager(RM) 和nodeManager(NM)两类进程组成,任何类型的计算都可以运行在Container中,Application是yarn的二级调度器,也运行在container中
ResourceManager :(RM)
负责集群中所有资源管理和调度,中央调度器角色,他定期收集NM的汇报信息,根据情况将资源分配给二级调度器APP,RM只做一次分配动作,后边的具体细节分配不在参与
NodeManager:(NM)
集群中的单个节点的代理,与RM保持同步,管理Container,启动或者销毁容器,几点健康监控,容器生命周期管理等
ApplicationMaster:(APP)
集群中应用程序的进程,负责向RM申请资源,可以反应出作业的执行情况
yarn工作流程:
客户端向RM提交自己的应用
RM向NM发出指令,为应用启动container,并在container中启动applicationMaster,
applicationMaster向RM注册
applicationMaster向RM申请资源
applicationMaster向NM请求启动计算任务
NM根据资源大小,在container中启动任务
各个任务向applicationMaster汇报进度
程序运行完成后,applicationMaster向RM注销并关闭自己