hadoop - Apache Yarn 公平调度程序一次只允许一个应用程序

标签 hadoop hadoop-yarn cloudera-cdh

我们有一个 hadoop 集群,配置了 Cloudera CDH 5.4.2 发行版和 Yarn 公平调度程序,用于调度和管理资源。我们有 18 个工作节点,总计 963GB 主内存和 288 个 vcores。

现在的问题是我一次只能运行一个应用程序,无论该应用程序的资源需求有多小。例如这里是动态资源池状态:

状态 YARN 使用 288 个 vcores 和 942 GiB 内存。 资源池使用

此表和右侧的图表仅包含来自 YARN 的指标。 资源池名称 已分配内存 已分配 VCores 已分配容器 待处理容器
根 0 B 0 0 0
用户 1 0 B 0 0 1
默认 0 B 0 0 0
用户 2 22 GiB 11 11 1

对于用户 2,即使在 288 个 vcores 和 942 GiB 内存中只分配了 22GB 和 11 vcores,仍然有一个挂起的容器!知道发生了什么事吗?几天前情况并非如此,不确定是什么设置导致了这种情况?

这是我的 yarn-site.xml 内容

 <?xml version="1.0" encoding="UTF-8"?>

    <!--Autogenerated by Cloudera Manager-->
    <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>hadoopmaster:8032</value>
      </property>
      <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoopmaster:8033</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoopmaster:8030</value>
      </property>
      <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hadoopmaster:8031</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoopmaster:8088</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.https.address</name>
        <value>hadoopmaster: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>2048</value>
      </property>
      <property>
        <name>yarn.scheduler.increment-allocation-mb</name>
        <value>512</value>
      </property>
      <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>65536</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>24</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.application.classpath</name>
        <value>$HADOOP_CLIENT_CONF_DIR,$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
      </property>
      <property>
        <name>yarn.scheduler.fair.user-as-default-queue</name>
        <value>true</value>
      </property>
      <property>
        <name>yarn.scheduler.fair.preemption</name>
        <value>true</value>
      </property>
      <property>
        <name>yarn.scheduler.fair.sizebasedweight</name>
        <value>false</value>
      </property>
      <property>
        <name>yarn.scheduler.fair.assignmultiple</name>
        <value>true</value>
      </property>
      <property>
        <name>yarn.resourcemanager.max-completed-applications</name>
        <value>10000</value>
      </property>
    </configuration>

最佳答案

请检查 fair-scheduler.xml 文件中的值“maxRunningApps”,它定义了可以在任何队列中运行的并发应用程序的数量。

请引用https://hadoop.apache.org/docs/r2.4.1/hadoop-yarn/hadoop-yarn-site/FairScheduler.html

关于hadoop - Apache Yarn 公平调度程序一次只允许一个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082547/

相关文章:

postgresql - 无法使用 Cloudera Manager 安装 hadoop

hadoop - Hortan沙箱是否可以用作单节点Hadoop集群

java - hadoop-enum.valueOf-java.lang.IllegalArgumentException:没有枚举常量

hadoop - yarn Spark 作业调度较慢

apache-spark - 错误 : path does not exist in spark submit with hadoop

hadoop - Cloudera安装代理问题

hadoop - Oozie验证命令抛出错误:必须指定一个文件

hadoop - hbase put 替换现有列值

hadoop - "Container is running beyond physical memory limits"

hadoop - wordCount mapReduce 作业如何与 apache tez 在 hadoop yarn 集群上运行?