Sparkタスクを実行するためのApache Spark Executor

最新の技術動向で更新滞在
電報にDataFlairに参加!!

Objective

Apache Sparkでは、いくつかの分散エージェントがタスクを実行する責任があり、このエージェントはSpark Executorと呼ばれています。 このドキュメントでは、Apache Spark Executorの概念全体を目指しています。 また、Sparkでexecutorインスタンスを作成する方法も表示されます。 詳細に学ぶために、Spark Executorのlaunch taskメソッドも表示されます。

Sparkタスクを実行するためのApache Spark Executor

Sparkタスクを実行するためのApache Spark Executor

Spark学習をテストする必要があります

Spark Executorとは何ですか

基本的に、SparkのExecutorはワーカーノード これらは、特定のSparkジョブで個々のタスクを実行する処理を担当するのに役立ちます。 さらに、Sparkアプリケーションの開始時にそれらを起動します。 その後、通常、アプリケーションの有効期間全体にわたって実行されます。 タスクを実行するとすぐに、結果をドライバーに送信します。 Executorsは、Block Managerを介してユーザープログラムによってキャッシュされるSpark Rddのメモリ内ストレージも提供します。
また、sparkアプリケーションの完全な存続期間中は、実行されます。 これは、Spark executorの静的割り当てを推測します。 しかし、我々はまた、動的な割り当てのために好むことができます。
さらに、Heartbeat Senderスレッドの助けを借りて、メトリックとハートビートを送信します。 Sparkではデータノードと同じ数のエグゼキュータを持つことができる利点の1つです。 また、クラスターから得ることができるだけ多くのコアを持つことも可能です。 Apache Spark Executorを記述するもう1つの方法は、id、ホスト名、環境(SparkEnvとして)、またはクラスパスのいずれかです。
注意すべき最も重要な点は、ExecutorバックエンドがSparkでExecutorを排他的に管理することです。

トップSpark認定を見てみましょう

heartbeat receiverのheartbeat message handler-Spark Executor

Heartbeat ReceiverのHeartbeat Message Handler–Spark Executor

Spark Executorを作成する条件

SparkでExecutorを作成する条件は次のとおりです。:

  1. C OarsegrainedexecutorbackendがRegisteredExecutorメッセージを受信したとき。 SparkスタンドアロンとYARNの場合のみ。
  2. MesosのMesosExecutorBackendがSparkに登録されている間。
  3. ローカルモード用にLocalEndpointが作成された場合。

Spark Executorインスタンスの作成

以下を使用して、Spark Executorを作成できます:

  1. Executor IDから。
  2. SparkEnvを使用すると、ローカルのMetricsSystemとBlockManagerにアクセスできます。 さらに、私達はまたそれによってローカルserializerにアクセスしてもいいです。
  3. 実行者のホスト名から。
  4. タスクのクラスパスに、ユーザー定義のJarのコレクションを追加します。 デフォルトでは空です。
  5. は、ローカルモードとクラスターモードのどちらで実行されるかをフラグで指定します(デフォルトでは無効、つまりクラスターが優先されます)

Spark SQL Features

を読む必要がありますさらに、作成が成功すると、1つの情報メッセージがログにポップアップ表示されます。 それは次のとおりです。
INFO Executor:starting executor ID on host

Heartbeater—Heartbeat Sender Thread

基本的に、単一のスレッドでは、heartbeaterはデーモンScheduledThreadPoolExecutorです。
このスレッドプールをdriver-heartbeaterと呼びます。

タスクの起動—launchTaskメソッド

このメソッドを使用して、入力serializedTaskタスクを同時に実行します。

Spark Executor-Taskrunnersを使用したExecutorでのタスクの起動

Spark Executor-Taskrunnersを使用したExecutorでのタスクの起動

Spark Machine Learningアルゴリズム

launchTask(context: ExecutorBackend,taskId: Long,attemptNumber: Int,taskName: String,serializedTask: ByteBuffer): Unit

さらに、launchTaskを使用してtaskrunnerを内部的に作成します。 次に、taskIdの助けを借りて、runningTasks内部レジストリに登録します。 その後、”Executor task launch worker”スレッドプールで実行します。

“Executor Task Launch Worker”スレッドプール—ThreadPoolプロパティ

基本的に、タスク起動ワーカー idによって起動します。 これは、threadPoolデーモンキャッシュされたスレッドプールを使用します。 さらに、Spark Executorの作成と同時に、threadPoolが作成されます。 また、それが停止したときにそれをシャットダウンします。

SparkRの構造化ストリーミングについて読む必要があります

結論

その結果、Apache Sparkのエグゼキューターの概念全体が見られました。 さらに、Spark Executorsがタスクの実行にどのように役立つかについても学びました。 私たちが学んだ主な利点は、私たちが望むだけ多くのエグゼキューターを持つことができることです。 したがって、ExecutorsはシステムのSparkパフォーマンスを向上させるのに役立ちます。 上記のApache Spark Executorの各側面について説明しました。 ただし、クエリが発生した場合は、コメントセクションでお気軽にお問い合わせください。

コメントを残す

メールアドレスが公開されることはありません。