当前位置: 首页 > 知识库问答 >
问题:

如何在纱线中配置垄断的FIFO应用队列?

陈翰林
2023-03-14

我需要禁用hadoop集群中YARN应用程序的并行执行。现在,YARN有了默认设置,因此几个作业可以并行运行。我看不出这样做有什么好处,因为这两个工作都运行得比较慢。

我发现这个设置yarn.scheduler.capacity.maximum-applications限制了应用程序的最大数量,但它同时影响提交和运行的应用程序(如文档中所述)。我想保持在队列中提交的应用程序,直到当前运行的应用程序没有完成。这怎么能做到呢?

共有1个答案

仲孙华奥
2023-03-14

1)将计划程序更改为FairScheduler

Hadoop发行版默认使用CapacityScheduler(Cloudera使用FairScheduler作为默认调度程序)。将此属性添加到yarn-site.xml

<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>

2)设置默认队列

<property>
  <name>yarn.scheduler.fair.user-as-default-queue</name>
  <value>false</value>
</property>

现在作业队列已被限制为一个default队列。将该队列中可以运行的应用程序的最大数量限制为1

$HADOOP_CONF_DIR下创建一个名为fail-scheduler.xml的文件,并添加以下条目

<allocations>
   <queueMaxAppsDefault>1</queueMaxAppsDefault>
</allocations>

此外,在yarn-site.xml中添加此属性

<property>
  <name>yarn.scheduler.fair.allocation.file</name>
  <value>$HADOOP_CONF_DIR/fair-scheduler.xml</value>
</property>
 类似资料:
  • 在配置spark应用程序时,我试图从集群中挤出每一点,但似乎我并没有完全正确地理解每一件事。因此,我正在AWS EMR集群上运行该应用程序,该集群具有1个主节点和2个m3类型的核心节点。xlarge(每个节点15G ram和4个vCPU)。这意味着,默认情况下,每个节点上为纱线调度的应用程序保留11.25 GB。因此,主节点仅由资源管理器(纱线)使用,这意味着剩余的2个核心节点将用于调度应用程序(

  • 当我没有配置java home时,我提交了如下作业错误

  • 我有一个从配置文件读取数据的Spark作业。此文件是一个类型安全配置文件。 我要使用的外部application.conf的内容如下所示: 此application.conf文件存在于我的本地计算机文件系统中(而不是HDFS上) 我用的是Spark1.6.1和纱线 提前致谢

  • 我正在使用的功能应用程序在使用本地应用程序设置我的配置时效果非常好。设置。json文件。我已在Azure中设置了一个新的应用程序配置,以远程管理属性,但我在启动时遇到以下错误: 我正在选择正确的连接字符串值,没有任何问题,但@ServiceBusQueueTrigger的queueName属性似乎没有检测到我在azure配置中设置的队列名称变量。 有没有一种不用硬编码就可以插入这个变量的方法?

  • 我正在Azure中创建一个函数应用程序,并希望使用队列触发器。我知道如何在设计时配置队列名称,例如: 但是,我希望能够在配置文件中定义和引用它。我知道函数的存在。json(可能是这个),主机。json和本地。设置。json,但我不知道如何在其中设置队列名称并在函数中引用它。 如果我部署在VisualStudio中新创建的函数(使用新的15.3更新),我可以在函数中看到以下内容。部署后的json文件

  • 我们正在使用AMAZON SQS FIFO队列来处理我们应用程序的预约服务。一旦消息进入队列,它就会触发Amazon Lambda函数来管理预订过程。因为它是一个FIFO队列,所以我们确保如果有2个人请求相同的插槽,那么这个插槽将给第一个请求者。我的问题是:是否有一种方法(也许是SQS FIFO队列中的设置?)这确保了在前一条消息执行完毕之前,一条消息不会触发Amazon Lambda函数。我只是