我创建了googledataproc集群,其中有两个工人使用 n1-standard-4
主机和工人的虚拟机。
我想提交一个给定集群上的作业,所有作业都应该按顺序运行(如在aws emr上),即,如果第一个作业处于运行状态,那么即将到来的作业将进入挂起状态,在完成第一个作业后,第二个作业将开始运行。
我尝试在集群上提交作业,但它并行运行所有作业—没有作业进入挂起状态。
是否有任何配置,我可以设置在dataproc集群,使所有的工作将按顺序运行?
更新了以下文件:
/etc/hadoop/conf/yarn-site.xml文件
<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>false</value>
</property>
<property>
<name>yarn.scheduler.fair.allocation.file</name>
<value>/etc/hadoop/conf/fair-scheduler.xml</value>
</property>
/etc/hadoop/conf/fair-scheduler.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<allocations>
<queueMaxAppsDefault>1</queueMaxAppsDefault>
</allocations>
然后使用此命令重新启动服务 systemctl restart hadoop-yarn-resourcemanager
主节点上的上述更改。但这项工作仍在并行运行。
1条答案
按热度按时间46qrfjad1#
如果资源可用,dataproc将尝试并行执行提交的作业。
为了实现顺序执行,您可能需要使用一些编排解决方案,dataproc工作流或cloud composer。
或者,您可能需要在dataproc上配置公平调度程序并设置
queueMaxAppsDefault
属性设置为1。