在您的情况下,您可能只想忽略该警告;这实际上只是一个无害的警告,您的驱动程序确实在同一个集群上正确排队;当多个驱动程序在同一主机(dataproc 主机)上运行时,端口仅绑定到从 4040 开始的连续端口号。请注意,这并不表示后面的提交主动等待第一个完成;作业提交尝试在有资源的情况下同时运行。在 Dataproc 中,例如,如果您提交 100 个作业,您应该会看到其中有 10 个(取决于机器大小、集群大小等)立即在 YARN 中排队,其中几个(或全部)将成功获得足够的 YARN 容器开始运行,而其他容器仍在 YARN 中等待。完成后,Dataproc 将在资源可用时逐步将剩余的 90 个作业提交给 YARN。
目前没有对 YARN 队列的特殊支持,但如果您想在集群创建时自定义 YARN 队列,则支持:
gcloud dataproc clusters create --properties \
^;^yarn:yarn.scheduler.capacity.root.queues=foo,bar,default;spark:other.config=baz
(将gcloud 分隔符替换为;
以通过逗号分隔的列表)和/或yarn-site.xml
教程中概述的其他配置,然后您指定队列:
gcloud dataproc jobs submit spark --properties spark.yarn.queue=foo
虽然这不会改变你看到的关于端口 4040 警告的内容。这是因为默认设置yarn-client
为 Spark 使用模式,即驱动程序运行在主节点上,驱动提交不受 YARN 排队。
您可以yarn-cluster
按如下方式使用模式:
gcloud dataproc jobs submit spark --properties \
spark.master=yarn-cluster,spark.yarn.queue=foo
foo
如果你定义了它,它会使用yarn-queue,并使用yarn-cluster
mode 以便驱动程序在 YARN 容器中运行。在这种情况下,您不会再遇到任何端口 4040 警告,但在yarn-cluster
模式下,您也不会再stdout/stderr
在 Dataproc UI 中看到您的驱动程序。