Yarn学习笔记

Apache Hadoop YARN (Yet AnotherResource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

1 Hadoop2.0相对Hadoop1.0做的改进

(1) 针对Hadoop1.0单NameNode制约HDFS的扩展性问题,提出HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展,同时解决了NameNode单点故障问题;

(2) 针对Hadoop1.0中的MapReduce在扩展性和多框架支持等方面的不足,它将JobTracker中的资源管理和作业控制分开,分别由ResourceManager(负责所有应用程序的资源分配)和ApplicationMaster(负责管理一个应用程序)实现,即引入了资源管理框架Yarn;

(3) hadoop2.0相对hadoop1.0没有JobTracker和TaskTracker进程,多了ResourceManager和NodeManager进程;

(4) Hadoop1.0里面,map和reduce任务必须提前申请到slot;Hadoop2.0里面,没有slot概念,统一变成container容器;

(5) MapReduce经历了完全重构,不再是Hadoop的核心组件,而成为Yarn上的一种应用框架(可替代:storm、spark。。。多种计算框架运行);

(6) 在Yarn中,Job的概念换成了application;

(7) 重构的根本思想:将JobTracker两个主要的功能分离成单独的组件,这两个功能是资源管理和任务调度/监控。

2 Yarn 特点

(1) 良好的扩展性、高可用;

(2) 对多种类型的应用进行统一管理和调度;

(3) 自带多种用户调度器,适合共享集群环境;

(4) 相比传统模式,提供了资源利用率、降低运维成本和数据共享成本。

3 系统架构

(1) ResourceManager(RM)

a) 接受客户端请求,资源分配分配;

b) 管理每一个Job所属的Application的各种状态;

c) 监控NN各种状态(NN心跳上报);

d) 有一个可插拔的调速器组件Scheduler,调度的资源就是Container;

e) scheduler不负责应用程序的监控和状态跟踪,不保证任务失败情况下对task的重启。


(2) ApplicationMaster(AM)
a) 是一个普通的Container的身份运行,不是实时都存在的;
b) 负责一个job生命周期内所有工作,job完成,AM消失;
c) 与RM协商实例所需的Container资源;
d) 与NN协商合适的Container,和进行Container监控;
e) AM可以是MapReduce任务、storm任务、spark任务等。

(3) NodeManager(NM)
a) 是slave进程,类似TaskTracker的角色,有多个;

b) 处理来自RM的任务请求;

c) 接收并处理来自ApplicationMaster的Container启动、停止等各种请求;

d) 负责启动应用程序的Container(执行应用程序的容器),并监控他们的资源使用情况(CPU、内存、磁盘和网络),并报告给RM;

e) 总的来说,在单节点上进行资源管理和任务管理。

(4) Container
a) 是任务运行环境的抽象封装;
b) Container只是使用NM上指定资源的权利;
c) AM必须向NM提供更多的信息来启动Container;
d) 描述任务的运行资源(节点、内存、cpu)、启动命令和运行环境。

4 执行流程

(1) Client请求ResourceManager运行一Application Master实例(step1)

(2) Resource Manager选择一个NodeManager,启动一个Container并运行Application Master实例(step 2a、step 2b)

(3) Application Master根据实际需要向ResourceManager请求更多的Container资源(step 3);

(4) Application Master通过获取到的Container资源执行分布式计算(step4a、step 4b);

(5) Application Master向NodeManager提供更多Container的信息;

(6) NodeManager启动Container。

5 容错

(1) RM挂掉

单点故障,新版本可以基于Zookeeper实现HA高可用集群,可通过配置进行设置准备RM,主提供服务,备同步主的信息,一旦主挂掉,备立即做切换接替进行服务

(2) NM挂掉

当NM挂了,会通过心跳方式通知RM,RM将情况通知对应AM,AM作进一步处理;

(3) AM挂掉

若挂掉,RM负责重启,其实RM上有一个RMApplicationMaster,是AM的AM,上面保存已经完成的task,若重启,无需重新运行已经完成的task。

6 Yarn调度器

(1) FIFO Scheduler:按提交顺序,最简单,大应用占用所有集群资源,不适合共享集群;

(2) Capacity Scheduler:专有队列运转小任务,预先占一定集群资源,导致大任务执行时间落后于FIFO;

(3) Fair Scheduler:不需要预占,动态调整,公平共享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值