Yarn的原理以及配置不同的资源分配策略

1.YARN是什么,为什么会产生YARN,它解决了什么问题?
Yarn是一个分布式的资源管理系统,它是hadoop集群的资源管理系统,它使得各种类型的应用可以运行在hadoop上面,并通过Yarn从系统层面进行统一管理,使得各种应用共享集群资源

它诞生的原因是原来的MapReduce框架中的一些不足:
(1) JobTracker单点故障隐患,一旦master出现故障,将导致整个集群不可用
(2) JobTracker承担的任务太多,同时兼备了资源管理和作业控制两个功能
(3) 在taskTracker端,使用map/reduce task表示资源过于简单, 基于槽位的资源分配模型,这是一种粗粒度的资源化分单位,槽位的种类又分为两种,并且两种之间资源不共享,易造成资源的浪费
(4) 克服原来mapreduce无法支持多种计算框架的局限

解决的问题:
(1) 资源利用率提高,
抛弃之前的一种计算框架一个集群模式的模式,改为共享模式通过多种框架共享资源,使得集群中的资源充分利用
(2) 运维成本低
共享模式只需要少数管理员统一管理一个集群
(3) 数据共享
跨集群数据移动耗时且硬件成本也高,共享模式使得多种计算框架共享数据和硬件,大大减少成本
2.应用程序提交到YARN之后的执行流程是什么,请简要描述?
(1)客户端程序向ResourceManager提交应用并请求一个ApplicationMaster实例
(2)ResourceManager找到可以运行一个container的NodeManager,并在这个container中启动ApplicationMaster实例
(3)AM启动之后,向RM注册,这样用户就可以直接通过RM来查看应用程序的运行状态
(4)AM通过轮询的方式通过RPC协议向RM来申请和领取资源
(5)NM为任务设置好运行环境后,将任务启动命令写入一个脚本中,通过该脚本启动任务
(6)各个任务通过RPC协议向AM汇报自己的状态和进度, 以让AM随时掌握任务的运行状态,从而可以在任务失 败时重启任务。
(7)任务运行完成后,AM向RM注销并关闭自己。

3.学习FairSchedule并在集群中配置FairSchedule,并对FairSchedule和CapacitySchedule做 一个对比。

Fair Scheduler 与Fair Scheduler 两个调度器,他们都是提供一种多用户共享hadoop集群的方法,以提高资源利用率和减低集群管理成本,而在设计思想方面Capacity Scheduler 是将资源按比例分配给各个队列,并添加各种严格的限制防止个别用户或者队列独占资源,而Fair Scheduler是基于最大最小公平算法将资源分配给各个资源池或者用户
Fair Scheduler的特点
Fair Scheduler将整个Yarn的可用资源划分成多个资源池,每个资源池中可以配置最小和最大的可用资源(内存和CPU)、最大可同时运行Application数量、权重、以及可以提交和管理Application的用户等。
(1)根据用户名来分配资源池
(2)根据权重获得额外的空闲资源
在每个资源池的配置项中,有个weight属性(默认为1),标记了资源池的权重,当资源池中有任务等待,并且集群中有空闲资源时候,每个资源池可以根据权重获得不同比例的集群空闲资源
(3)最小资源保证
在每个资源池中,允许配置该资源池的最小资源,这是为了防止把空闲资源共享出去还未回收的时候,该资源池有任务需要运行时候的资源保证
(4)动态更新资源配额
Fair Scheduler除了需要在yarn-site.xml文件中启用和配置之外,还需要一个XML文件来配置资源池以及配额,而该XML中每个资源池的配额可以动态更新,之后使用命令:yarn rmadmin –refreshQueues 来使得其生效即可,不用重启Yarn集群
Capacity Scheduler的特点:
(1)容量保证: 每个队列可以设定最低资源保证和最高资源使用上限,而提交到该队列的任务则共享该队列的资源。
(2)灵活性:如果一个队列资源有剩余,而其他队列资源紧张,可以先借用资源给其他队列。而一旦该队列有应用程序 提交,则其他队列释放资源后会归还给该队列。
(3)多种租赁:支持多用户共享集群和多应用程序同时运行。管理员可以为之增加多种约束(某队列最大运行的任务数 等)。
(4)安全保证:每个队列都有严格的ACL列表规定它的访问用户,每个用户可以指定哪些用户可以查看自己应用程序的状 态或者控制应用程序(例如杀死应用程序)。管理员可以指定队列管理员和系统管理员。
(5)动态配置更新:管理员可以根据需要动态修改配置参数。

你可能感兴趣的:(面试)