スパークストリーミングの基本的なことを理解したい。私は50個のカフカトピックパーティションと5人のエグゼキュータを持っています。私はDirectAPIを使用しています。のRDDパーティションは50になります。このパーティションは5人のエグゼキュータでどのように処理されるのですか?各エグゼキュータで一度にプロセス1のパーティションを起動するか、エグゼキュータに十分なメモリとコアがあれば、各エグゼキュータで並列に複数のパーティションを処理します。スパークRDDパーティションが処理される方法。エグゼクティブの<いいえ> RDDパーティション
3
A
答えて
6
各エグゼキュータに時の処理1パーティションを刺激するか、または executorが十分なメモリとコアを有する場合には、各エグゼキュータに平行に1つの以上 パーティションを処理します。
Sparkは、実行中のジョブで使用可能なコアの総量に応じて各パーティションを処理します。
ストリーミングジョブには、コアが2つのエグゼキュータが10人あるとします。これは、spark.task.cpus
が1に設定されていると仮定すると、10 x 2 = 20のパーティションを同時に処理できることを意味します。
実際に詳細を知りたい場合は、CoarseGrainedSchedulerBackend
のSpark Standaloneリクエストリソースを見てください。 makeOffers
:
private def makeOffers() {
// Filter out executors under killing
val activeExecutors = executorDataMap.filterKeys(executorIsAlive)
val workOffers = activeExecutors.map { case (id, executorData) =>
new WorkerOffer(id, executorData.executorHost, executorData.freeCores)
}.toIndexedSeq
launchTasks(scheduler.resourceOffers(workOffers))
}
ここでキーシステムにおけるこのような各エグゼキュータが利用されているどのくらいのコアに指示ExecutorData
にエグゼキュータIDからのマッピングを保持し、そのパーティションの好ましい局所に従ってexecutorDataMap
、ありますこのタスクを実行する実行者を推測します。ここで
はカフカから消費するアプリをストリーミングライブスパークからの例です:
私たちは、各エグゼキュータはプロセスへのストリーミングを可能にする2つの以上のコアを持って実行している3つのエグゼキュータと5つのパーティションを、持っています各パーティションは同時に実行されます。
関連する問題
- 1. スパークRDD持続性とパーティション
- 2. スパークRDDパーティションとHadoopスプリット
- 3. RDDとApache Sparkのパーティション
- 4. スパークパーティション:Hiveパーティションは作成せずにRDDパーティションを作成する
- 5. 複数のRDDとパーティションの分割?
- 6. スパーク:リストからオブジェクトRDDを作成<Object> RDD
- 7. スパークRDD - シャッフルを避ける - パーティション分割は膨大なファイルを処理するのに役立ちますか?
- 8. spark RDDでパーティションを作成する方法
- 9. SparkSQL rddパーティションがキャッシュメモリに収まらない
- 10. RDD内のすべてのパーティションを処理した後で、Spark Streamingで入力を受け取る方法は?
- 11. エグゼキュータでRDDを処理する方法
- 12. スパークRDDのサポート
- 13. スパークのRDDサンプル
- 14. スパーク:別のRDD
- 15. スパークRDD機能が
- 16. 作業員間のバランスのとれたRDDパーティション
- 17. 処理されたバッチ対スパークストリーミングのRDD
- 18. スパーク:RDD(キー、値)
- 19. スパークRDDフォールトトレランス
- 20. スパーク:RDDは
- 21. クラスタ内に20個のパーティションがあり、使用されている作業者がいないRDD
- 22. は、次のように私はスパークRDDを持っているスパークRDD
- 23. スパーク[JSONObject]をデータセットにRDDする方法
- 24. スパークRDD foreachPartition to S3
- 25. スパークRDDマッピング質問
- 26. 例外HDFSスパークRDD
- 27. スパークを使用RDD
- 28. スパークRDDデータ選択
- 29. スパーク:パーティション分割の理解 - コア
- 30. 各pyspark RDDパーティションの要素の数をカウント
「spark.task.cpus」が1に設定されている場合、各パーティションは1つのコア(1つのスレッド)で処理されることを意味します。したがって、私の場合は5つのエグゼキュータ'--executor-cores 10 'を設定すると、すべてのパーティションが同時に処理されます。 – nilesh1212
@ nilesh1212タスクの量は、あなたの 'DirectKafkaInputDStream'のパーティション数に依存しますが、基本的に各タスクは、基礎となるDStreamのRDDの各パーティションに対して要求されます(http:// stackoverflow.com/q/37528047/1870803))。 Kafkaからデータを読み込み、各パーティションがどこで処理されているかを調べる最初の変換に進むことで、これを自分で確認することができます。 –
もし私が間違っていないならば、タスクはパーティションレベルでrdd権限で実行される変換/アクション以外何もありませんか? – nilesh1212