• yarn资源配置及使用


    目录

    1.简介

    2.调度器

    1.FIFO Scheduler

    2.Capacity Scheduler

    1.介绍

    2.capacity调度器的特性

    4.配置demo

    3.Fair Scheduler

    4.yarn调度器对比


    1.简介

    理想情况下,应用提交到yarn上立马就可以获得资源执行任务,但是现实情况资源往往是有限的,任务执行的先后及获得资源的多少,yarn给我们提供了多种调度器和配置策略供我们选择。默认的ui地址:http://ip:8088

    2.调度器

    yarn有三种调度器可以选择

    • FIFO Scheduler
    • Capacity Scheduler
    • Fair Scheduler

    1.FIFO Scheduler

    先进先出队列,先满足前面的任务,有多余的资源再满足下面的任务。

    不适合共享集群,因为大任务可能占用全部的集群资源,导致其他任务阻塞

    2.Capacity Scheduler

    1.介绍

    适合多个组织共享整个集群,每个组织分配专门的队列,然后每个队列分配一定的资源。

    资源按百分比进行分配成多个队列,且队列资源可以设置弹性,在队列资源不够的时候可以使用其他队列资源,其他队列有任务的时候会在本队列任务执行完成释放资源还给其他队列。在队列内部,资源调度采用先进先出(FIFO)策略。

    例如:下面A占总资源60%,B占总资源的40%,a1占A资源的40%,a2占A资源的60%,虽然有了这样的资源分配,但是并不是说A只能占60%的资源,因为资源可以设置弹性,如果A设置了最大资源是80%,那么A最多可以使用集群资源的80%。

    1. root
    2. ------A[60%]
    3. |---A.a1[40%]
    4. |---A.a2[60%]
    5. ------B[40%]

    2.capacity调度器的特性

    层次化队列设计,子队列可以使用父队列的全部资源,更容易合理分配和限制资源的使用。

    容量保证,每个队列可以设置一定的资源,但是又不会占有全部资源

    弹性分配,空闲的资源可以分配给其他任何队列

    操作性,yarn支持动态调整容量,在运行时可以增加队列,但不能删除队列,可以在运行时暂停队列,这样保证当前队列在执行过程中,集群不会接受其他任务

    3.配置

    1. yarn.scheduler.capacity.default.minimum-user-limit-percent=100
    2. yarn.scheduler.capacity.maximum-am-resource-percent=0.2 AM最多可使用的资源比例,目的是限制过多的app数量,默认值0.2
    3. yarn.scheduler.capacity.maximum-applications=10000 同时等待和运行的最大任务数
    4. yarn.scheduler.capacity.node-locality-delay=40 调度器在放松节点限制、改为匹配同一机架上的其他节点前尝试错过的调度机会数
    5. yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator 资源计算模式,默认使用DefaultResourceCalculator,还有一种是DominantResourceCalculator
    6. yarn.scheduler.capacity.root.accessible-node-labels=*
    7. yarn.scheduler.capacity.root.acl_administer_queue=* 哪些用户或用户组可以管理队列
    8. yarn.scheduler.capacity.root.acl_submit_applications=* 哪些用户或用户组可以提交任务
    9. yarn.scheduler.capacity.root.capacity=100 占用集群百分之多少比例的资源
    10. yarn.scheduler.capacity.root.default.acl_administer_jobs=*
    11. yarn.scheduler.capacity.root.default.acl_submit_applications=*
    12. yarn.scheduler.capacity.root.default.capacity=100 占用root百分之多少比例的资源
    13. yarn.scheduler.capacity.root.default.maximum-capacity=100 弹性设置,最大时占用多少比例资源
    14. yarn.scheduler.capacity.root.default.state=RUNNING 队列状态,可以是RUNNING或STOPPED
    15. yarn.scheduler.capacity.root.default.user-limit-factor=1 可以配置为允许单个用户获取更对资源的队列容量的倍数,值为浮点数,默认为1表示无论集群有多空闲,单个用户都不能占用超过队列配置的容量
    16. yarn.scheduler.capacity.root.queues=default root包含哪些队列,这里只包含default队列,逗号分隔
    17. yarn.scheduler.capacity.schedule-asynchronously.enable=true 是否开启异步调度
    18. yarn.scheduler.capacity.schedule-asynchronously.maximum-threads=1 开启异步调度最大线程数
    19. yarn.scheduler.capacity.schedule-asynchronously.scheduling-interval-ms=10 异步调度间隔
    20. yarn.scheduler.capacity.root.default.default-application-priority=0 设置default队列默认优先级为0
    21. yarn.cluster.max-application-priority 全局最大优先级 设置的优先级超过这个值则使用该值作为任务的优先级

    4.配置demo

    分为3个队列default,A,B,资源各占50,40,10

    1. yarn.scheduler.capacity.default.minimum-user-limit-percent=100
    2. yarn.scheduler.capacity.maximum-am-resource-percent=0.2
    3. yarn.scheduler.capacity.maximum-applications=10000
    4. yarn.scheduler.capacity.node-locality-delay=40
    5. yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator
    6. yarn.scheduler.capacity.root.accessible-node-labels=*
    7. yarn.scheduler.capacity.root.acl_administer_queue=*
    8. yarn.scheduler.capacity.root.acl_submit_applications=*
    9. yarn.scheduler.capacity.root.capacity=100
    10. yarn.scheduler.capacity.root.default.acl_administer_jobs=*
    11. yarn.scheduler.capacity.root.default.acl_submit_applications=*
    12. yarn.scheduler.capacity.root.default.capacity=50
    13. yarn.scheduler.capacity.root.default.maximum-capacity=60
    14. yarn.scheduler.capacity.root.default.state=RUNNING
    15. yarn.scheduler.capacity.root.default.user-limit-factor=1
    16. yarn.scheduler.capacity.root.queues=default,A,B
    17. yarn.scheduler.capacity.root.A.acl_administer_jobs=*
    18. yarn.scheduler.capacity.root.A.acl_submit_applications=*
    19. yarn.scheduler.capacity.root.A.capacity=40
    20. yarn.scheduler.capacity.root.A.maximum-capacity=50
    21. yarn.scheduler.capacity.root.A.state=RUNNING
    22. yarn.scheduler.capacity.root.A.user-limit-factor=1
    23. yarn.scheduler.capacity.root.B.acl_administer_jobs=*
    24. yarn.scheduler.capacity.root.B.acl_submit_applications=*
    25. yarn.scheduler.capacity.root.B.capacity=10
    26. yarn.scheduler.capacity.root.B.maximum-capacity=20
    27. yarn.scheduler.capacity.root.B.state=RUNNING
    28. yarn.scheduler.capacity.root.B.user-limit-factor=1
    29. yarn.scheduler.capacity.schedule-asynchronously.enable=true
    30. yarn.scheduler.capacity.schedule-asynchronously.maximum-threads=1
    31. yarn.scheduler.capacity.schedule-asynchronously.scheduling-interval-ms=10

    3.Fair Scheduler

    公平调度,任务平均共享集群资源。

    4.yarn调度器对比

     

  • 相关阅读:
    C++之list的用法介绍
    java-php-python-ssm预防接种服务平台计算机毕业设计
    一行代码第五章
    kotlin实现ArrayDeque
    金融行业网络安全保护与三级等保合规实施方案
    完美世界服务端设置小技巧
    枚举 小蓝的漆房
    Redis6学习笔记
    如何使用 Jmeter获取登录token并设置为全局变量?
    nginx修改成非root用户启动
  • 原文地址:https://blog.csdn.net/q495673918/article/details/126282869