Apache Spark の理解を深める

完了

Apache Spark は、クラスター内の複数の処理ノード間で作業を調整することで大規模なデータ分析を可能にする分散データ処理フレームワークです。

Spark のしくみ

Apache Spark アプリケーションは、メイン プログラム (ドライバー プログラムと呼ばれる) の SparkContext オブジェクトによって調整された、独立したプロセスのセットとしてクラスターで実行されます。 SparkContext は、Apache Hadoop YARN の実装を使用してアプリケーション間でリソースを割り当てるクラスター マネージャーに接続します。 接続されると、Spark はクラスター内のノードで Executor を取得してアプリケーション コードを実行します。

SparkContext は、クラスター ノードで main 関数と並列操作を実行し、操作の結果を収集します。 ノードは、ファイル システムとの間でデータの読み取りと書き込みを行い、変換されたデータを 耐障害性分散データセット (RDD) としてメモリ内にキャッシュします。

A diagram of Azure Synapse Apache Spark architecture.

SparkContext は、アプリケーションを 有向非巡回グラフ (DAG) に変換する処理を担います。 グラフは、ノードの Executor プロセス内で実行される個々のタスクから成ります。 アプリケーションはそれぞれ独自の Executor プロセスを取得し、そのプロセスが、アプリケーション全体が終了するまで稼働し続けながら、複数のスレッドでタスクを実行します。

Azure Synapse Analytics の Spark プール

Azure Synapse Analytics では、クラスターが "Spark プール" として実装され、Spark 操作のランタイムが提供されます。 Azure portal を使用するか、Azure Synapse Studio で、Azure Synapse Analytics ワークスペースに 1 つ以上の Spark プールを作成できます。 Spark プールを定義するときに、プールの構成オプションを次のように指定できます。

  • Spark プールの名前。
  • ハードウェア アクセラレータ GPU 対応ノードを使用するオプションなど、プール内のノードに使用される仮想マシン (VM) のサイズ。
  • プール内のノードの数、およびプール サイズが固定されているか、または個々のノードを動的にオンラインにしてクラスターを "自動スケーリング" でき、その場合に、アクティブ ノードの最小数と最大数を指定できるかどうか。
  • プールで使用される "Spark ランタイム" のバージョン。これにより、Python、Java、インストールされるその他のコンポーネントなどの個々のコンポーネントのバージョンが決定されます。

ヒント

Spark プールの構成オプションの詳細については、Azure Synapse Analytics のドキュメントの「Azure Synapse Analytics での Apache Spark プールの構成」を参照してください。

Azure Synapse Analytics ワークスペース内の Spark プールは "サーバーレス" であり、オンデマンドで開始され、アイドル状態になると停止します。