私はSparkのFAIRスケジューリングモードの内部を理解したいと思います。事はそれ一つはofficial Spark documentationに応じて期待通りそう公平ではないようだということです。SparkでFairスケジューラを有効にするには?
スパーク0.8以降で、ジョブ間の公平な共有を設定することも可能です。公平な共有の下で、Sparkはジョブ間で「ラウンドロビン」方式でタスクを割り当てます。その結果、すべてのジョブがほぼ同等のクラスターリソースを占めるようになります。これは、長いジョブが実行されている間に提出された短いジョブはすぐにリソースを受け取ることができ、長いジョブが完了するのを待つことなく、良好な応答時間を得ることができることを意味します。このモードは、マルチユーザー設定に最適です。
ジョブが均等に処理されず、実際にはFIFO順で管理されているようです。
トピックに関する詳細情報を提供する:
私はYARNにスパークを使用しています。私はSparkのJava APIを使用します。公正なモードを有効にするには、コードは次のとおりです。
SparkConf conf = new SparkConf();
conf.set("spark.scheduler.mode", "FAIR");
conf.setMaster("yarn-client").setAppName("MySparkApp");
JavaSparkContext sc = new JavaSparkContext(conf);
は、私が何かを見逃していましたか?
デフォルトのプールジョブはパラレルで実行されますが、別のスレッドからサブミットされた場合、並列実行中です。単にジョブを並列化するためのプールを作成する必要はないと考えてください。 「各プールは、クラスターの等しいシェア(デフォルトプール内の各ジョブと同じになる)」http://spark.apache.org/docs/latest/job-scheduling.html#default-behavior-of -pools – spats
無関係なステージの#CPUs>#タスクの場合は正しいです。 –