2017-01-02 3 views
0

私はサンプルジョブを自分の側で実行しています。スパークジョブのUIには、合計稼働時間は26秒ですが、ジョブの継続時間列を追加すると約17-18秒です。私は自分の仕事の実行ロジックを実行するための合計時間を決定するために頼りにしています。私はクラスタの起動と停止にかかる時間は心配していません。その時間も含めて26秒です。クラスタを起動してクラスタを停止し、自分のロジックの最終実行時間を取得する時間。スパークWeb UIの表記

Spark job UI

また、私の火花の設定は次のようになります。

val conf = new SparkConf().setAppName("Metrics").setMaster("spark://master:7077").set("spark.executor.memory", "5g").set("spark.cores.max", "4").set("spark.sql.warehouse.dir", "file:///c:/tmp/spark-warehouse")set("spark.executor.memory", "5g") 
    val sc = new SparkContext(conf) 
    val sqlContext = new org.apache.spark.sql.SQLContext(sc) 

私は.Iがそれを設定することにより、すべてのコアを使用しようとしています4つの論理コアすなわち2つの物理コアと2仮想コアマシンを持っていますいくつかの理由で1人のエグゼキュータがジョブを実行するために使用されます。誰かがなぜ1人のエグゼキュータが生成されたのか、そしてスパークの世界ではコアとエグゼキュータの関係は何かを説明できますか?私はスパークするために新しいですので、どんな助けも素晴らしいでしょう。

Executor for the job here

答えて

0

シングルエグゼキュータは、あなたのケースのように複数のスレッドを使用することができます。 4つのコアを持つエグゼキュータが1人あります。

各エグゼキュータスレッドは、その時点で1つのパーティションを処理して、クラスタが4つのパーティションを同時に処理できるようにします。

このような小さな設定では、複数のエグゼキュータJVMを起動する必要はありませんが、spark.executor.coresを使用して、単一のエグゼキュータが使用できるコアの数を構成できます。

+0

説明のためにありがとう、spark web uiが稼働時間で26秒、継続時間列で15秒を示す理由についての最初のクエリについて考えていますか? – baiduXiu

関連する問題