hadoop - YARN最小用户限制百分比不起作用?

标签 hadoop apache-spark yarn

我在YARN中使用了容量调度程序,并且看到用户可以通过使用属性'yarn minimum-user-limit-percent'获得最小队列百分比。我将此属性设置为20,据此,我希望资源将平均分配给5个用户:

https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.1/bk_yarn-resource-management/content/setting_user_limits.html

但是,当用户启动Runnig应用程序时,情况并非如此。例如,如果我在队列空闲时运行应用程序,则YARN会为该应用程序分配所有请求的资源。之后,当另一个用户运行相同的应用程序时,YARN分配的资源与队列中剩余的资源一样多,并且队列被填满。在这一点上,我认为有了该属性,第二个用户将获得队列的50%,而第一个用户将拥有更少的资源。

如果有第三位用户进入,我希望他/她获得33%的队列,但是YARN甚至没有安排应用程序,因为没有可用的资源了。

我想念什么吗?我认为该参数使请求独立于可用资源,直到达到每个用户的最小百分比。

这是我的yarn-site.xml和Capacity-scheduler.xml:

  • yarn-site.xml
    <configuration>
      <property>
        <name>yarn.acl.enable</name>
        <value>true</value>
      </property>
      <property>
        <name>yarn.admin.acl</name>
        <value>*</value>
      </property>
      <property>
        <name>yarn.resourcemanager.address</name>
        <value>hadoopLogin:8032</value>
      </property>
      <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoopLogin:8033</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoopLogin:8030</value>
      </property>
      <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hadoopLogin:8031</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoopLogin:8088</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.https.address</name>
        <value>hadoopLogin:8090</value>
      </property>
      <property>
        <name>yarn.resourcemanager.client.thread-count</name>
        <value>50</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.client.thread-count</name>
        <value>50</value>
      </property>
      <property>
        <name>yarn.resourcemanager.admin.client.thread-count</name>
        <value>1</value>
      </property>
      <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>1024</value>
      </property>
      <property>
        <name>yarn.scheduler.increment-allocation-mb</name>
        <value>512</value>
      </property>
      <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>14336</value>
      </property>
      <property>
        <name>yarn.scheduler.minimum-allocation-vcores</name>
        <value>1</value>
      </property>
     <property>
        <name>yarn.scheduler.increment-allocation-vcores</name>
        <value>1</value>
      </property>
      <property>
        <name>yarn.scheduler.maximum-allocation-vcores</name>
        <value>32</value>
      </property>
      <property>
        <name>yarn.resourcemanager.amliveliness-monitor.interval-ms</name>
        <value>1000</value>
      </property>
      <property>
        <name>yarn.am.liveness-monitor.expiry-interval-ms</name>
        <value>600000</value>
      </property>
      <property>
        <name>yarn.resourcemanager.am.max-attempts</name>
        <value>2</value>
      </property>
      <property>
        <name>yarn.resourcemanager.container.liveness-monitor.interval-ms</name>
        <value>600000</value>
      </property>
      <property>
        <name>yarn.resourcemanager.nm.liveness-monitor.interval-ms</name>
        <value>1000</value>
      </property>
      <property>
        <name>yarn.nm.liveness-monitor.expiry-interval-ms</name>
        <value>600000</value>
      </property>
      <property>
        <name>yarn.resourcemanager.resource-tracker.client.thread-count</name>
        <value>50</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    


    yarn.scheduler.fair.user-as-default-queue
    真正


    yarn 调度程序公平抢占



    基于 yarn 计划的公平大小的重量



    yarn.scheduler.fair.assignmultiple



    yarn.resourcemanager.max-completed-applications
    10000


    yarn.nodemanager.aux-services
    spark_shuffle


    yarn.nodemanager.aux-services.spark_shuffle.class
    org.apache.spark.network.yarn.YarnShuffleService

  • Capacity-scheduler.xml


    yarn.scheduler.capacity.root.queues
    批处理,笔记本
    控制台和批处理作业(批处理)和笔记本作业(笔记本)队列的定义


    yarn.scheduler.capacity.root.batch.capacity
    50
    root.batch队列的容量百分比


    yarn.scheduler.capacity.root.notebook.capacity
    50
    root.notebook队列的容量百分比


    yarn 计划容量最大根批次最大容量
    55
    root.batch队列的最大容量百分比


    yarn.scheduler.capacity.root.notebook。最大容量
    55
    root.notebook队列的最大容量百分比


    yarn.scheduler.capacity.root.batch.state
    正在运行
    root.batch提示的当前状态


    yarn.scheduler.capacity.root.notebook.state
    正在运行
    root.notebook提示的当前状态


    yarn.scheduler.capacity.root.acl_submit_applications
    hadoop,纱,mapred,hdfs, Spark
    谁可以将作业提交到根队列的ACL。


    yarn.scheduler.capacity.root.batch.acl_submit_applications
    scienceUser1 root,gaia,ub,ucm,uac,udc,esac,upo,une,inaf
    谁可以将作业提交到root.batch队列的ACL。


    yarn.scheduler.capacity.root.notebook.acl_submit_applications
    * root,gaia,ub,ucm,uac,udc,esac,upo,une,inaf
    谁可以将作业提交到root.notebook队列的ACL。


    yarn.scheduler.capacity.root.batch.acl_administer_queue
    盖亚
    谁可以将作业管理到root.batch队列的ACL。


    yarn.scheduler.capacity.root.notebook.acl_administer_queue
    盖亚
    谁可以将作业管理到root.notebook队列的ACL。


    yarn.scheduler.capacity.root.acl_administer_queue
    盖亚
    谁可以管理根队列上的作业的ACL。


    yarn.scheduler.capacity.root.acl_administer_queue
    盖亚
    谁可以管理根队列上的作业的ACL。


    yarn.scheduler.capacity.root.acl_administer_queue
    盖亚
    谁可以管理根队列上的作业的ACL。


    yarn.scheduler.capacity.root.batch.acl_administer_queue
    盖亚
    谁可以管理批处理队列上的作业的ACL。


    yarn.scheduler.capacity.root.notebook.acl_administer_queue
    盖亚
    谁可以管理笔记本队列上的作业的ACL。


    yarn.scheduler.capacity.resource-calculator
    org.apache.hadoop.yarn.util.resource.DominantResourceCalculator

    yarn.scheduler.capacity.root.notebook.minimum-user-limit-percent
    33
    用户从队列中获取的资源的最小百分比。

  • 最佳答案

    如果您尚未启用抢占,则您看到的行为是正确的。
    在yarn-site.xml中查找等于yarn.resourcemanager.scheduler.monitor.enabletrue,以查看是否已启用它。

    如果尚未启用,请参考以下内容以获取指导:

  • http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html#Capacity_Scheduler_container_preemption
  • https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.1/bk_yarn-resource-management/content/preemption.html
  • https://community.hortonworks.com/questions/89894/capacity-scheduler-preemption-doesnt-work.html
  • 关于hadoop - YARN最小用户限制百分比不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45659571/

    相关文章:

    hadoop - cp 命令在 Hadoop 中如何工作?

    apache-spark - AWS EMR 上的 Spark UI

    hadoop - Nutch 2.3.1在 yarn 2.7.1上的错误

    hadoop - 在增量更新中选择时间戳作为列时,Sqoop 合并失败

    hadoop - 如何在 oozie 工作流任务之间传递数据

    apache-spark - SPARK ML,朴素贝叶斯分类器 : high probability prediction for one class

    apache-spark - Amazon EMR 上的 Livy Server 在连接到 ResourceManager 时挂起

    hadoop - 运行映射减少作业以从Yarn上的hbase表删除数据时,作业失败

    mysql - 按 unix 时间戳的 Hive 动态分区

    java.lang.ClassCastException 在远程服务器上的 spark 作业中使用 lambda 表达式