あなたの場合は、おそらく警告を無視するだけです。それは実際には無害な警告であり、ドライバーは実際には同じクラスター上で正しくキューに入れられています。複数のドライバが同じホスト(dataproc master)上で実行されている場合、ポートは単にbound to successive port numbers starting at 4040になります。これはではないことに注意してください。は、後の提出が最初から最後まで積極的に待機することを意味します。ジョブ提出は、リソースがあるのと同数だけ同時に実行しようとします。 Dataprocでは、100個のジョブを提出すると、それらのうちの10個(マシンサイズ、クラスタサイズなどによって異なる)がYARNにすぐにキューイングされ、いくつか(またはすべて)が正常に取得されます。十分なYARNコンテナが実行を開始し、他のコンテナはYARNに保留されたままです。彼らが完了すると、Dataprocは残りの90のジョブをリソースが利用可能になるとYARNに徐々に提出します。
gcloud dataproc clusters create --properties \
^;^yarn:yarn.scheduler.capacity.root.queues=foo,bar,default;spark:other.config=baz
は(通過する;
でgcloud delimiterを置き換える:あなたが使用してクラスタ作成時に、あなたのYARNキューをカスタマイズしたい場合は、それがサポートされていますけれども
は、現時点ではYARNキューのための専門のサポートは、ありませんカンマ区切りのリスト)および/またはthis oneのようなチュートリアルで概説したように、追加yarn-site.xml
のconfigs、その後、あなたがしてキューを指定:それはないでしょうが
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
あなたはそれを定義した場合はドライバプログラムがAで実行されるように、それはyarn-cluster
モードを使用するだけでなく、foo
糸キューを使用しますYARNコンテナ。この場合、ポート4040の警告は表示されなくなりますが、yarn-cluster
モードでは、Dataproc UIのドライバプログラムのstdout/stderr
も表示されなくなります。
ありがとうございます。将来的にdataprocのドキュメントを更新してもよろしいですか? ;-) – Frank
http://spark.apache.org/docs/latest/job-scheduling.html#configuring-pool-properties - あなたの提案をYARNのプール設定一般と一緒にお試しいただきたいと思います。しかし、動作する必要がありますか? – Frank
これは自分で説明したとおりに機能します。どうもありがとうございました。 SparkContext/runningジョブ内のdataprocからjobIdを取得する方法はありますか? ApplicationIdとJobIdを参照して結果を保存して、YARNとdataprocの両方のコンテキストをカバーしたいと思います。 – Frank