最近Sparkを学習して使用しているので、いくつかの基本的な概念と用語を整理しました。画像を深め、その後のレビューを容易にするために使用されます
Sparkは、既存のHadoopエコシステムにシームレスに統合できるメモリベースの分散コンピューティングフレームワークです。主に、Spark Streaming、Spark SQL、Spark MLlib、SparkGraphXの4つの主要コンポーネントが含まれています。
Sparkの操作に関連するいくつかの基本的な概念は次のとおりです。
-
母校:主にスパーククラスター全体を制御、管理、監視するため
-
クライアント:アプリケーションによって送信されるクライアントは、ビジネスオペレーションロジックとマスター通信を記録します。
-
アプリケーション:ユーザー定義のSparkプログラム。ユーザーが送信すると、Sparkはアプリにリソースを割り当ててプログラムを変換および実行します。
-
sparkContext:さまざまなコンピューティングリソースのスケジュール設定、および各作業ノードでのExecutorの調整を担当するsparkアプリケーションへの入り口。主にいくつかの記録情報、それを実行する人、それがどのように実行されるかなどを記録します。これが、プログラミング時にsparkContextを作成する必要がある理由です。
-
ドライバープログラム:各アプリケーションのメインマネージャー、各アプリケーションのボス、何人かの人々はなぜマスターがいるのか、なぜあなたはマスターを持っているのかと尋ねるかもしれません。マスターはクラスターのボスであり、すべてのアプリケーションはボスの制御下にあるため、ボスは夢中です。したがって、ドライバーは、特定のトランザクションの実行と追跡、アプリケーションのmain()関数の実行、およびsparkContextの作成を担当します。
-
RDD:一連の演算子で操作できるSparkのコアデータ構造。Rddがアクション演算子に遭遇すると、以前のすべての演算子が有向非周期グラフ(DAG)を形成します。次に、Sparkでジョブに変換され、実行のためにクラスターに送信されます。アプリには複数のジョブを含めることができます
-
ワーカーノード:クラスターのワーカーノード。アプリケーションコードを実行できるノードであり、母校からコマンドを受信して実行中のタスクを受信し、実行の進行状況と結果をマスターに報告します。1つ以上のExecutorプロセスがノードで実行されます。
-
exector:アプリケーションのworkerNodeで実行されているプロセス。プロセスは、タスクを実行し、メモリまたはディスクにデータを保存する役割を果たします。各アプリケーションは、タスクを処理するために独自のエグゼキュータを申請します。'
図1-スパーク実行アーキテクチャ図
Sparkアプリケーション(アプリケーション)の実行に関連する概念:
-
タスク(タスク):RDDのパーティションはタスクに対応し、タスクは単一のパーティションでの処理フローの最小単位です。
-
TaskSet(タスクセット):関連するタスクのセットですが、それらの間のシャッフル依存関係はありません。
-
ステージ(スケジューリングステージ):taskSetに対応するスケジューリングステージ。各ジョブは、RDDの幅広い依存関係に応じて多くのステージに分割され、各ステージにはTaskSetが含まれます。
-
ジョブ(ジョブ):アクションオペレーターによってトリガーされる1つ以上のステージで構成されるコンピューティングジョブ。
-
application:1つ以上のジョブで構成されるユーザーが作成したsparkアプリケーション。sparkに送信した後、sparkはアプリケーションにリソースを割り当て、プログラムを変換して実行します。
-
DAGScheduler:ジョブに応じてステージベースのDAGを作成し、ステージをTaskSchedulerに送信します。
-
TaskScheduler:タスクセットをワーカーノードクラスターに送信して実行し、結果を返します。
上の図からわかるように、アプリケーションは1つ以上のジョブで構成でき、ジョブは1つ以上のステージで構成できます。ステージは幅と狭い依存関係に従って分割され、ステージはタスクセットで構成され、タスクセットは次のようになります。 1つから複数のタスクで構成されます。