028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

YARNCapacityScheduler怎么实现

这篇文章主要讲解了“YARN Capacity Scheduler怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“YARN Capacity Scheduler怎么实现”吧!

创新互联是一家成都做网站、成都网站建设、成都外贸网站建设,提供网页设计,网站设计,网站制作,建网站,按需网站建设,网站开发公司,自2013年起是互联行业建设者,服务者。以提升客户品牌价值为核心业务,全程参与项目的网站策划设计制作,前端开发,后台程序制作以及后期项目运营并提出专业建议和思路。

特点

以队列为单位划分资源,每个队列可设定一定比例的资源最低保证和使用上限,同时,每个用户也可设定一定的资源使用上限以防止资源滥用。而当一个队列的资源有剩余时,可暂时将剩余资源共享给其他队列。总之,Capacity Scheduler主要有以下几个特点:


Capacity Scheduler的功能

  1. Capacity Scheduler有自己的配置文件,即存放在conf目录下的capacity-scheduler.xml

  2. 在Capacity Scheduler的配置文件中,队列queueX的参数Y的配置名称为yarn.scheduler.capacity.queueX.Y

  3. 资源分配相关参数:

    • capacity:队列的最小资源容量(百分比)。注意,所有队列的容量之和应小于100

    • maximum-capacity:队列的资源使用上限

    • minimum-user-limit-percent:每个用户最低资源保障(百分比)

    • user-limit-factor:每个用户最多可使用的资源量(百分比)

  4. 限制应用程序数目的相关参数:

    • maximum-applications:集群或者队列中处于等待和运行状态的应用程序数目上限,这是一个强限制项,一旦集群中应用程序数目超过该上限,后续提交的应用程序将被拒绝。默认值为10000。Hadoop允许从集群和队列两个方面该值,其中,集群的总体数目上限可通过参数yarn.scheduler.capacity.maximum-applications设置,默认为10000,而单个队列可通过参数yarn.scheduler.capacity..maximum-applications设置适合自己的值

    • maximum-am-resource-percent:集群中用于运行应用程序ApplicationMaster的资源比例上限,该参数通常用于限制处于活动状态的应用程序数目。所有队列的ApplicationMaster资源比例上限可通过参数yarn.scheduler.capacity.maximum-am-resource-percent设置,而单个队列可通过参数yarn.scheduler.capacity..maximum-am-resource-percent设置适合自己的值

  5. 队列访问权限控制

    • state:队列状态,可以为STOPPED或者RUNNING。如果一个队列处于STOPPED状态,用户不可以将应用程序提交到该队列或者它的子队列中。类似的,如果root队列处于STOPPED状态,则用户不可以向集群提交应用程序,但正在运行的应用程序可以正常运行结束,以便队列可以优雅地退出

    • acl_submit_application:限定哪些用户/用户组可向给定队列中提交应用程序。该属性具有继承性,即如果一个用户可以向某个队列提交应用程序,则它可以向它所有子队列中提交应用程序

    • acl_administer_queue:为队列指定一个管理员,该管理员可控制该队列的所有应用程序,比如杀死任意一个应用程序等。同样,该属性具有继承性,如果一个用户可以向某个队列中提交应用程序,则它可以向它的所有子队列中提交应用程序

  6. 当管理员需动态修改队列资源配置时,可修改配置文件conf/capacity-scheduler.xml,然后运行“yarn rmadmin -refreshQueues

  7. 当前Capacity Scheduler不允许管理员动态减少队列数目,且更新的配置参数值应是合法值,否则会导致配置文件加载失败


Capacity Scheduler实现

应用程序初始化
  1. 应用程序被提交到ResourceManager之后,ResourceManager会向Capacity Scheduler发送一个SchedulerEventType.APP_ADDED事件,Capacity Scheduler收到该事件后,将为应用程序创建一个FiCaSchedulerApp对象跟踪和维护该应用程序的运行时信息,同时将应用程序提交到对应的叶子队列中,叶子队列会对应用程序进行一系列合法性检查。只有通过这些合法性检查,应用程序才算提交成功,这些合法性包括以下几个方面:

    • 应用程序所属用户拥有该叶子队列的应用程序提交权限

    • 队列及其父队列当前处于RUNNING状态(递归检查)

    • 队列当前已提交的应用程序数目未达到管理员设定的上限

    • 应用程序所属用户提交的应用程序数目未超过管理员设定的上限

资源调度

当ResourceManager收到来自NodeManager发送的心跳信息后,将向Capacity Scheduler发送一个SchedulerEventType.NODE_UPDATE事件,Capacity Scheduler收到该事件后,会依次进行以下操作:

  1. 处理心跳信息:NodeManager发送的心跳信息中有两类信息需资源调度器处理,一类是最新启动的Container,另一类是运行完成的Container,具体如下:

    • 对于最新启动的Container,资源调度器需向ResourceManager发送一个RMContainerEventType.LAUNCHED,进而将该Container从超时监控队列中删除。当资源调度器为ApplicationMaster分配一个Container后,为了防止ApplicationMaster长时间不使用该Container造成资源浪费,它会将该Container加入一个超时监控队列中。如果一段时间内,该队列中的Container仍未被使用,则资源调度器会回收该Container

    • 对于运行完成的Container,资源管理器将回收它使用的资源,以便接下来对这些资源进行再分配
      处理完以上两类信息后,Capacity Scheduler将节点上的空闲资源分配给应用程序

  2. 资源分配

            1. Container主要包含5类信息:

感谢各位的阅读,以上就是“YARN Capacity Scheduler怎么实现”的内容了,经过本文的学习后,相信大家对YARN Capacity Scheduler怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


分享文章:YARNCapacityScheduler怎么实现
链接URL:http://www.tsicrk.com/article/ijsgcp.html

其他资讯

让你的专属顾问为你服务

4.3772s